Език за програмиране Pascal.

Публикувана на: 20.03.2008, от kr_bozhinov
Кoментари:8

Както всеки език и Pascal има азбука и препинателни знаци, от тях се изграждат думи и от думите според граматика - по сложни фрази (в случая програми). Азбуката е следната:

  • латински букви: a, b, ... , z, _ - в Pascal не се прави разлика между големи и малки букви;
  • цифри: 0, 1, ... , 9;
  • знаци за операции: + - * / > >= < <= <> =
  • специални знаци: := -> ^
  • разделители и скоби: () [] {} : ; , .  '

Вижда се, че някои от буквите в Pascal се пишат с две букви на компютъра (например: >= <= := или->). Такива букви не бива да се разделят една от друга с интервал, нов ред или табулация

От азбуката на езика се изграждат думи. В Pascal има три вида думи:

  • ключови (резервирани) думи. Тези думи са двадесетина, трябва точно да се изписват и да се ползват само там, където налага граматиката на езика. Пълен списък от ключовите думи на езика има в Help на Borland Pascal. Такива думи са: program, uses, label, const, type, var, integer, real, procedure, function, begin, end, if, for, do, goto и др. В Borland Pascal те се показват обикновено като тъмно черни.
  • идентификатори. Те служат да именуват различни неща в програмата, като например променливи, подпрограми, типове, записи и др. Те се измислят от програмиста. Правилото за създаване на идентификатор е следното: идентификаторът трябва да е различен от ключовите думи, трябва да започва с латинска буква и трябва да се състои само от латински букви и цифри. Например a, ab, a12, first_name. В една и съща програмна част не бива да има дублиране на идентификатори (не забравяйте, че не се прави разлика между малки и големи букви).  Borland Pascal те се показват обикновено в нормален черен цвят.
  • константи-литерали. Това са константите в програмата, които присъстват със своята стойност. Те в Borland Pascal обикновено се оцветяват в синъо. Например: 5, -12.5, 'Здравей свят !' и т. н. Те биват:
  • числови

цели: 5, -24, +15

реални: 5.5, -4.98, +3.45, . 45, 0.123e-5

  • символни - включват всичките 256 символа на компютъра: 'a', 'A', 'Ж', '+'.
  • низ от символи - поредица от всичките 256 символи на компютъра заградени с апострофи: 'Въведете число:', 'Error'
  • логически: true - истина, false - лъжа.

Символите и низовете от символи се заграждат със знака апостроф '. Внимавайте, кой точно апостроф се ползва, защото на клавиатурата има два подобни знака. Ползва се този при кавичките. 

Отделните думи се разделят помежду си със знаците разделители, знаци за операции, специални знаци, интервали, табулация или нов ред. Няма значение как разпределяте програмата по редове.

Основната структура на една програма е следната:

    заглавие
    декларации
    тяло .

Програмата винаги завършва с точка.

Заглавието има следния вид:

    program име;

Името задава име на цялата програма и е идентификатор.

Декларациите декларират използваните в програмата библиотеки, етикети, константи, типове, променливи и подпрограми. Основен принцип в Pascal е, че всичко се декларира.

Тялото на програмата съдържа съвкупността от нейните команди и има следния вид:

    begin
        команда 1;
        команда 2;
         .
         .
        команда N
    end

Знакът ";" служи да раздели две поредни команди една от друга и не е към командите. Затова след последната команда може да няма ";", защото end не е команда.

Командите в езика Pascal са или оператори или обръщения към подпрограми процедури.

Освен константи-литерали (т. е. такива, чието стойност е някъде вътре в тялото на програмата), програмистът може да декларира константи в началото на програмата като зададе име и стойност на константата. Всички такива константи в програмата се обявяват в декларативната част след ключовата дума const. Декларацията на константа има следния вид:

    име = стойност;

Името е идентификатор, а стойността е константа-литерал или израз от преди това декларирани константи и константи-литерали. Пример:

    const
        count = 5;
        lihva = count * 0.05;
        message = 'Грешен брой!';

Променливите в програмата са клетки от оперативната памет, в които можете да съхранявате и променяте данни по време на изпълнение на програмата. Променливата има име (идентификатор) и тип (ключова дума или идентификатор). Типът служи да укаже какви данни могат да се присвояват на променливата. От него се разбира дължината в байтове на променливата и нейната дефиниционна област (т. е. диапазона от стойности, които тя може да приема). Всички променливи в програмата се обявяват в декларативната част след декларацията на константите, ако има такава. Декларацията на променливите започва с ключовата дума var. Променлива се декларира по следния начин:

    име: тип;

Ако имате няколко променливи от един и същи тип можете за икономия на писане да ги наредите в списък:

    име1, име2, ..., имеN: тип;

Например:

    var
        a: integer;
        p: real;
        k, n, m: integer;
        x1, x3: real;
        ch: char;

Типът на променлива може да е дефиниран от програмиста или да е един от вградените в езика типове.

Основните вградени в Pascal типове са: integer, real, char, boolean, string, text. Освен тях специално в Borland Pascal има още няколко. В Help на Borland Pascal има подробна информация за вградените типове, дължината на полето от паметта, където те се поместват и дефиниционните им области. Нека за сега разгледаме най-използваните скаларни типове.

integer - целочислен тип данни. Реализира се в 2 байта и променливите от този тип могат да съдържат цели числа приблизително от -32000 до 32000.

real - реални 7-8 цифрени числа. Реализира се в 6 байта.

char - единични символи. Реализира се в 1 байт. Променливите от тип char могат да получават като стойност всеки един от 256-те символи на компютъра.

boolean - логически тип. Променливите от този тип могат да получават стойности true (истина) или false (лъжа).

Вътре на произволни места в текста на програмата може да се вложи свободен текст наречен коментари, които да дават пояснение за програмиста, който чете програмата. Коментарът се прескача от транслатора и не влиза в кода на изпълнимата програма. Коментарът се загражда с {}. Например:

    { това е коментар }

Както бе казано по-горе, тялото на програмата се състои от поредица от команди, които са или обръщения към процедури, или оператори. Най- простия оператор е празния оператор. Той нищо не върши и се маркира само с ";". Понякога се използва да маркира не готови още части от програмата, празни цикли, празен избор в оператор за избор.

Операторът за присвояване служи да зададе стойност на променлива. Той има следния вид:

    променлива := израз

Действието му е следното: изчислява се израза и получената стойност се присвоява на променливата. Трябва при това да се внимава стойността на израза да е от същия тип като този на променливата и тази стойност да е в дефиниционната област на променливата, защото иначе ще настъпи препълване, което ще доведе до грешни резултати при изпълнение на програмата. Какво представляват изразите се описва в следващата точка.

Чрез готови библиотечни подпрограми се осъществява входа и изхода от и към програма на Pascal.

Процедура readln служи за въвеждане на данни от клавиатурата. В този случай тя има вида:

    readln(променлива1, променлива2, ..., променливаN)

Нейното действие е следното: програмата спира изпълнението си и чака да се въведат от клавиатурата N-те стойности разделени с интервал. Натиска се клавиша Enter и стойностите се присвояват на съответните променливи и програмата продължава да се изпълнява нататък. Необходимо е тези стойности да са съобразени с типа на променливите, иначе процедурата дава грешка и програмата се прекъсва. Ако стойностите са извън дефиниционната област на съответните променливи, възниква препълване и програмата не работи вярно. Пример:

    a: integer; x: real;
    readln(a, x);

    Вход: 3 5.34
    Резултат: a=3, x=5.34

Процедурата readln може да се ползва и без параметри. Тогава тя само спира изпълнението на програмата и се чака да се натисне клавиша Enter за да се продължи.

В Pascal съществува и процедура read за вход от клавиатурата, но в Borland Pascal тя е реализирана твърде странно и не се препоръчва да се използва.

Чрез процедурите write и writeln си осъществява извеждане на данни към екрана. В този случай те имат вида:

    write(израз1, израз2, ..., изразN)

    writeln(израз1, израз2, ..., изразN)

Тези процедури извеждат стойностите на изразите една след друга на екрана. Разликата между двете е, че при write курсора остава на същия ред на екрана след последната изведена стойност, а при writeln след извеждане на стойностите курсорът преминава в началото на нов ред. writeln може да се използва и без параметри. Тогава тя просто премества курсора в началото на нов ред. И при двете процедури програмистът трябва да се погрижи да отдели стойностите на изразите една от друга, иначе те ще се слеят. Това може да се постигне или като между тях се изведе по един символ интервал ' ', или ако към изразите се добави форматираща информация. Освен това без форматираща информация реалните стойности се извеждат в трудния за четене научен формат (например 1.5 ще се изведе като 0.150000000E01). Форматиращата информация има вида

    израз:n

    реален_израз:n:m

където n задава броя на позициите, в които ще се изведе стойността на израза, m задава броя на цифрите след десетичната точка (точността на числото). Ако стойността е по-дълга от n, тя се извежда цялата, ако е по-къса тя се допълва до n с интервали отляво.

Задача 2.1: Да се състави програма, която събира две числа.

Анализ
    Входни данни: a и b - реални
    Изходни данни: c - реална
    Знание: c=a+b

Алгоритъм

    Начало
        1.Въведи a,b
        2.c <- a + b
        3.Изведи c
    Край

Програма

program suma;       { заглавие на програмата }
    uses WinCrt;
    var                     { декларации на променливи }
        a, b, c: integer;
    begin                 { тяло на програмата }
        readln(a, b);    { команда1 - въвеждане от клавиатурата }
        c := a + b;       { команда2 - оператор за присвояване }
        writeln(c);      { команда3 - извеждане на екрана }
    end.

След като изпълните тази програма се вижда, че така написана тази програма е неудобна за ползване. Затова след begin добавете write('Въведете две събираеми:'); и вместо writeln(c); напишете writeln('Сума:',s:10:4);

Задача 2.2: Да се състави програма, която по зададен радиус изчислява дължината и лицето на кръга.

Анализ
    Входни данни: r - реални, константа p=3.1416
    Изходни данни: l и s - реални
    Знание: l=2 p r, s=p r2

Алгоритъм

    Начало
        1.Въведи r
         2.l <- 2 p r
         3.s <- p r2
        4. Изведи l
        5.Изведи s
    Край

Програма

program circle;
    const
        p = 3.1416;
    var
        r, l ,s :real;
    begin
        write('Въведете радиус на кръга:');
        readln(r);
        l:=2 * p * r;
        s:=n * r * r;
        writeln('Дължина:', l:5:2);
        writeln('Лице:', s:5:2);
end.

П.С. Повече може да прочетете от страницата на Веселин Христов

Коментари 8

23.01.2011 filiz4e

Profile

user: ilarionov

 МНОГО ЯКО, регистрирах се.

 

Не разбирам защо ударението е като че ли

поставено върху технологиите за решаване на проблемимите,

а не върху самите проблеми?

 

Ето още една серия задачи ориентиране към усвояването на

целочисленната аритметика а не синтаксис от конкретен език за програмиране.

 

 

1.2_1.1 Дадено е разстояние от L см (L>0). Да се пресметне и изведе колко пълни метра включва това разстояние (1 м = 100 см).

 

            1.2_1.2 Дадена е маса - M кг (M>0). Да се пресметне и изведе колко пълни тона включва тази маса (1 тон = 1000 кг).

 

            1.2_1.3 Даден е размера на файла в байтове. Да се пресметне и изведе колко пълни килобайта заема този файл (1 килобайт = 1024 байта).

 

            1.2_1.4. Дадени са две цели положителни числа A и B (A>B). Върху отсечка с дължина A са разположени максимално възможния брои отсечки с дължина B (без да се препокриват). Да се пресметне и изведе броя на отсечките с дължина B, разположени върху отсечката с дължина A.

 

            1.2_1.5 Дадени са две цели положителни числа A и B (A>B). Върху отсечка с дължина A са разположени максимално възможния брои отсечки с дължина B (без да се препокриват). Да се пресметне и изведе дължината на незаетата част от отсечката с дължина A.

 

            1.2_1.6 Дадено е двуцифрено естествено число. Да се пресметне и изведе сумата и произведението от цифрите му.

 

            1.2_1.7 Дадено е двуцифрено естествено число. Да се разместят цифрите му и да се изведе новополученото число.

 

            1.2_1.8 Дадено е трицифрено естествено число. Първо да се изведе последната му цифра (на единиците), а след това да се изведе първата му цифра (на стотиците).

 

            1.2_1.9 Дадено е трицифрено естествено число. Да се пресметне и изведе сумата и произведението от цифрите му.

 

            1.2_1.10 Дадено е трицифрено естествено число. Първата му от дясно на ляво цифра е зачеркната и е написана вляво. Да се  изведе новото число.

 

            1.2_1.11 Дадено е трицифрено естествено число. Първата му от ляво на дясно цифра е зачеркната и е написана вдясно. Да се изведе новото число.

 

            1.2_1.12 Дадено е трицифрено естествено число. Да се изведе числото прочетено от дясно на ляво.

 

            1.2_1.13 Дадено е трицифрено естествено число. Да се се изведе числотополучено при размяна на цифрите на стотиците и десетиците. Например от числото 683, след размяната получаваме 863.

 

            1.2_1.14 Дадено е трицифрено естествено число. Да се се изведе числотополучено при размяна на цифрите на единиците и десетиците му. Например от числото 683, след размяната получаваме 638.

 

            1.2_2.15 От началото на денонощието са изминали N секунди (N е цяло число). Да се пресметне и изведе колко пълни минути са изминали от началото на денонощието.

 

            1.2_2.16 От началото на денонощието са изминали N секунди (N е цяло число). Да се пресметне и изведе колко пълни часове са изминали от началото на денонощието.

 

1.2_2.17 От началото на денонощието са изминали N секунди (N е цяло число). Да се пресметне и изведе колко секунди  са изминали от началото на последната минута.

 

            1.2_2.18 От началото на денонощието са изминали N секунди (N е цяло число). Да се пресметне и изведе колко секунди  са изминали от началото на последния час.

 

            1.2_2.19 От началото на денонощието са изминали N секунди (N е цяло число). Да се пресметне и изведе колко пълни минути  са изминали от началото на последния час.

 

            1.2_2.20 Дадено е цяло число K, 0<K<366. Дните от седмицата са номерирани по следния начин: 0-неделя, 1-понеделник, 2-вторник, … Да се пресметне и изведе за K-тия ден от годината, съответния номер като ден от седмицата, ако знаем че 1 януари е бил понеделник.

 

            1.2_2.21 Дадено е цяло число K, 0<K<366. Дните от седмицата са номерирани по следния начин: 0-неделя, 1-понеделник, 2-вторник, … Да се пресметне и изведе за K-тия ден от годината съответния номер като ден от седмицата, ако знаем че 1 януари е бил петък

 

            1.2_2.22 Дадено е цяло число K, 0<K<366. Дните от седмицата са номерирани по следния начин: 1-неделя, 2-понеделник, 3-вторник, … Да се пресметне и изведе за K-тия ден от годината съответния номер като ден от седмицата, ако знаем че 1 януари е бил сряда.

 

            1.2_2.23 Дадено е цяло число K, 0<K<366. Дните от седмицата са номерирани по следния начин: 1-неделя, 2-понеделник, 3-вторник, … Да се пресметне и изведе за K-тия ден от годината съответния номер като ден от седмицата, ако знаем че 1 януари е бил петък.

 

            1.2_2.24 Дадено е цяло число K, 0<K<366 и второ цяло число N, 0<N<8. Дните от седмицата са номерирани по следния начин: 1-неделя, 2-понеделник, 3-вторник, … Да се пресметне и изведе за K-тия ден от годината съответния номер като ден от седмицата, ако знаем че 1 януари е бил ден от седмицата с номер N.

 

            1.2_2.25 Дадена е годината. Да се пресметне и изведе от кои век е тази година, ако знаем че първата година от 20 век е 1901 г.

 

Wink 

 

07.03.2009 hristov_b

Profile

На свое заседание от 07.02.2009г. Националната комисия по информатика реши алгоритмичният език Pascal да отпадне от списъка с допустимите езици за програмиране по време на националните състезания. Решението е в сила от Областния кръг на Националата олимпиада по информатика

23.02.2009 emil_mariev

Profile

 

01.06.2008 kali_portokali

Profile

погледнах за малко - интересно ми се стори , ще се регистрирам и с удоволствие ще използвам ресурсите.

Поздрави за положения огромен труд

 

01.06.2008 ilarionov

Profile

 МНОГО ЯКО, регистрирах се.

 

Не разбирам защо ударението е като че ли

поставено върху технологиите за решаване на проблемимите,

а не върху самите проблеми?

 

Ето още една серия задачи ориентиране към усвояването на

целочисленната аритметика а не синтаксис от конкретен език за програмиране.

 

 

1.2_1.1 Дадено е разстояние от L см (L>0). Да се пресметне и изведе колко пълни метра включва това разстояние (1 м = 100 см).

 

            1.2_1.2 Дадена е маса - M кг (M>0). Да се пресметне и изведе колко пълни тона включва тази маса (1 тон = 1000 кг).

 

            1.2_1.3 Даден е размера на файла в байтове. Да се пресметне и изведе колко пълни килобайта заема този файл (1 килобайт = 1024 байта).

 

            1.2_1.4. Дадени са две цели положителни числа A и B (A>B). Върху отсечка с дължина A са разположени максимално възможния брои отсечки с дължина B (без да се препокриват). Да се пресметне и изведе броя на отсечките с дължина B, разположени върху отсечката с дължина A.

 

            1.2_1.5 Дадени са две цели положителни числа A и B (A>B). Върху отсечка с дължина A са разположени максимално възможния брои отсечки с дължина B (без да се препокриват). Да се пресметне и изведе дължината на незаетата част от отсечката с дължина A.

 

            1.2_1.6 Дадено е двуцифрено естествено число. Да се пресметне и изведе сумата и произведението от цифрите му.

 

            1.2_1.7 Дадено е двуцифрено естествено число. Да се разместят цифрите му и да се изведе новополученото число.

 

            1.2_1.8 Дадено е трицифрено естествено число. Първо да се изведе последната му цифра (на единиците), а след това да се изведе първата му цифра (на стотиците).

 

            1.2_1.9 Дадено е трицифрено естествено число. Да се пресметне и изведе сумата и произведението от цифрите му.

 

            1.2_1.10 Дадено е трицифрено естествено число. Първата му от дясно на ляво цифра е зачеркната и е написана вляво. Да се  изведе новото число.

 

            1.2_1.11 Дадено е трицифрено естествено число. Първата му от ляво на дясно цифра е зачеркната и е написана вдясно. Да се изведе новото число.

 

            1.2_1.12 Дадено е трицифрено естествено число. Да се изведе числото прочетено от дясно на ляво.

 

            1.2_1.13 Дадено е трицифрено естествено число. Да се се изведе числотополучено при размяна на цифрите на стотиците и десетиците. Например от числото 683, след размяната получаваме 863.

 

            1.2_1.14 Дадено е трицифрено естествено число. Да се се изведе числотополучено при размяна на цифрите на единиците и десетиците му. Например от числото 683, след размяната получаваме 638.

 

            1.2_2.15 От началото на денонощието са изминали N секунди (N е цяло число). Да се пресметне и изведе колко пълни минути са изминали от началото на денонощието.

 

            1.2_2.16 От началото на денонощието са изминали N секунди (N е цяло число). Да се пресметне и изведе колко пълни часове са изминали от началото на денонощието.

 

1.2_2.17 От началото на денонощието са изминали N секунди (N е цяло число). Да се пресметне и изведе колко секунди  са изминали от началото на последната минута.

 

            1.2_2.18 От началото на денонощието са изминали N секунди (N е цяло число). Да се пресметне и изведе колко секунди  са изминали от началото на последния час.

 

            1.2_2.19 От началото на денонощието са изминали N секунди (N е цяло число). Да се пресметне и изведе колко пълни минути  са изминали от началото на последния час.

 

            1.2_2.20 Дадено е цяло число K, 0<K<366. Дните от седмицата са номерирани по следния начин: 0-неделя, 1-понеделник, 2-вторник, … Да се пресметне и изведе за K-тия ден от годината, съответния номер като ден от седмицата, ако знаем че 1 януари е бил понеделник.

 

            1.2_2.21 Дадено е цяло число K, 0<K<366. Дните от седмицата са номерирани по следния начин: 0-неделя, 1-понеделник, 2-вторник, … Да се пресметне и изведе за K-тия ден от годината съответния номер като ден от седмицата, ако знаем че 1 януари е бил петък

 

            1.2_2.22 Дадено е цяло число K, 0<K<366. Дните от седмицата са номерирани по следния начин: 1-неделя, 2-понеделник, 3-вторник, … Да се пресметне и изведе за K-тия ден от годината съответния номер като ден от седмицата, ако знаем че 1 януари е бил сряда.

 

            1.2_2.23 Дадено е цяло число K, 0<K<366. Дните от седмицата са номерирани по следния начин: 1-неделя, 2-понеделник, 3-вторник, … Да се пресметне и изведе за K-тия ден от годината съответния номер като ден от седмицата, ако знаем че 1 януари е бил петък.

 

            1.2_2.24 Дадено е цяло число K, 0<K<366 и второ цяло число N, 0<N<8. Дните от седмицата са номерирани по следния начин: 1-неделя, 2-понеделник, 3-вторник, … Да се пресметне и изведе за K-тия ден от годината съответния номер като ден от седмицата, ако знаем че 1 януари е бил ден от седмицата с номер N.

 

            1.2_2.25 Дадена е годината. Да се пресметне и изведе от кои век е тази година, ако знаем че първата година от 20 век е 1901 г.

 

Wink 

 

25.05.2008 asenov

Profile

Здравейте, колеги,

Понеже видях, че сте запонали да публикувате и задачи на Pascal, ето ви още малко:

www.coding-bg.net

10.05.2008 ilarionov

Profile

Дерзаенето започва с упражнения.

 

Ето и няколко задачи като за начало:

 

 

1.1_1.1. Дадени са две променливи a и b. Да се състави програма разменяща значенията на променливите (новото значение на а е равно на старото значение на b и обратно).

 

1.1_1.2*. Дадени са две целочислени променливи A и B. Да се състави програма разменяща значенията на променливите (новото значение на A е равно на старото значение на B и обратно), като се използват само двете променливи A и .B.

 

            1.1_1.3. Дадена е страната a на квадрат. Да се намери периметъра му P=4.a.

 

            1.1_1.4. Дадена е страната a на квадрат. Да се намери лицето му S=a2.

 

            1.1_1.5. Дадени са страните a и b на правоъгълник. Да се намери лицето му S=a.b и периметъра му P=2.(a+b).

 

            1_1.6 Даден е диаметъра d на окръжност. Да се намери радиуса й:

                          d

                        R=-

                          2

 

            1.1_1.7. Даден е диаметъра d на окръжност. Да се намери дължината й L=p.d. За стойност на p използвайте 3.14.

 

            1.1_1.8 Даден е радиуса R на окръжност. Да се намери дължината й L=2.p.R.и лицето й S=p.R2. За стойност на p използвайте 3.14.

 

            1.1_1.9 Дадени са две числа a и b. Да се намери средното им аритметично:

                        a+b

                         2

 

            1.1_1.10 Дадени са две неотрицателни числа a и b. Да се намери средното им геометрично, което се пресмята като квадратен корен от произведението им.

 

            1.1_1.11 Дадени са две ненулеви числа. Да се намери сумата, разликата, произведението и частното им.

 

1.1_1.12 Дадени са две ненулеви числа. Да се намери сумата, разликата, произведението и частното от кквадратите им.

 

1.1_1.13 Дадена е дължината L на окръжността. Намерете радиуса й R и лицето S на кръга, ограничен от тази окръжност. За стойност на p използвайте 3.14.

L=2.p.R          S=p.R2

 

            1.1_1.14 Дадени са два кръга с общ център и с радиуси R1 и R2 (R1>R2). Да се намерят лицата на тези кръгове, S1 и S2,.и лицето S3 на пръстена между двете окръжности.


S1=p.R12                 S2=p.R22               S3=S1-S2


За стойност на p използвайте 3.14.


1.1_1.15 Дадено е лицето S на кръга. Намерете дължината L на окръжността ограничаваща този кръг и диаметъра D на кръга. За стойност на p използвайте 3.14.

D=2.R            L=2.p.R          S=p.R2

 

            1.1_1.16 Дадени са променливите A, B и C. Променете стойностите им, като преместите стойността на A в B, стойността на B в C и стойността на C в A. Изведете новите значения на променливите A, B и C.

 

            1.1_1.17 Дадени са променливите A, B и C. Променете стойностите им, като преместите стойността на A в C, стойността на C в B и стойността на B в A. Изведете новите значения на променливите A, B и C.

 

            1.1_1.18 Дадена е стойността на x  Изведете стойността на y, като знаете, че y=3x6-6x2-7.

 

            1.1_1.19 Дадена е стойността на x  Изведете стойността на y, като знаете, че y=4(x-3)6-7(x-3)3+2.

 

1.1_1.20 Дадена е числовата променлива A. Да се пресметне и изведе A8, като се използува само една допълнителна работна променлива и три операции за умножение.

 

            1.1_1.21 Дадена е числовата променлива A. Да се пресметне и изведе A15, като се използуват две допълнителни работни променливи и пет операции за умножение.

 

            1.1_1.22 Дадено е значението на ъгъл a в градуси (0<a<360). Да се пресметне и изведе значението на този ъгл в радиани, ако знаете, че 1800=p радиана. За стойност на p използвайте 3.14.

 

1.1_1.23 Дадено е значението на ъгъл a в радиани (0<a<2p). Да се пресметне и изведе значението на този ъгл в градуси, ако знаете, че 1800=p радиана. За стойност на p използвайте 3.14.

 

            1.1_1.24 Даденa е температурата TF в градуси по Фаренхайт. Да се пресметне и изведе значението на температурата в градуси по Целзий. Температурата по Целзий TC и температурата по Фаренхайт TF са свързани с равеството            9.TC=5.(TF-32)

 

            1.1_1.25 Даденa е температурата TC в градуси по Целзий. Да се пресметне и изведе значението на температурата в градуси по Фаренхайт. Температурата по Целзий TC и температурата по Фаренхайт TF са свързани с равеството            9.TC=5.(TF-32)

 

            1.1_1.26 Дадено е че A кг. ябълки струват M лева. Да се пресметне и изведе цената на X кг. ябълки.

 

            1.1_1.27 Дадени са коефициентите A и B (като A¹0) на линейното уравнение A.x+B=0. Да се пресметне и изведе корена на уравнението.

 

            1.1_1.28 Дадени са скростите V1 км/ч и V2 км/ч на два автомобила и рзстоянието S0 между тях. Автомобилите се отдалечават един от друг. Да се пресметне и изведе разстоянието ST  между тях след T часа.

 

 

Wink 

16.04.2008 dianasf

Profile
Тези уроци имат за цел да подпомогнат профилираното обучение по програмиране на езика Паскал. Те може да са полезни както за начинаещи, така и за средно напреднали.
Езикът носи името на Блез Паскал – френски философ, математик, физик, писател. Автор на езика е швейцарският професор Никлаус Вирт.


                І. Основни означения

Пример за програма на езика Паскал:
Задача 1. Да се напише програма, която въвежда стойности на реалните променливи a и b и извежда тяхната сума s.

CODE
1
2
3
4
5
6
7
8
9
Program Suma;
  
var a, b, s: real;
Begin
  
write(vavedete a: ‘); readln(a);
  
write(vavedete b: ‘); readln(b);
     
s:=a + b;
        
writeln(a, ’+’ ,b, ’=’ , s:4:2);
  
readln;
 
end.

Първият ред на програмата се нарича заглавие. С него започва всяка програма. Името на програмата (в случая Suma) може да съчетава букви, цифри и знака за подчертаване _ , но започва винаги с буква.
Променливите, използвани при описанието на алгоритмите в езика Паскал задължително се описват в раздела var (от variable - променлив). В горния случай това са a, b и s. И трите променливи са от тип real,  т.е. могат да приемат стойности от множеството на реалните числа. Декларирането на променливите  води до отделяне на памет за тях.
След раздела на променливите в програмата е разделът на операторите. Този раздел започва с думата begin и завършва с end. В примера са използвани няколко оператора. Те описват алгоритъма на програмата. Отделят се със символа ; .
- оператора write(‘текст’) извежда върху екрана в позицията на курсора текста, ограден в апострофи.
-  оператора  write(a) извежда на екрана стойността на параметъра а. Горните два оператора могат да се съчетават (например write(‘a=’, a)).
Ако след думата write се постави ln  (writeln) операторите отново извеждат информацията на екрана, но на нов ред.
- опрераторът read записва въведената стойност в оперативната памет. Той действа по следния начин: след write компютърът чака да се въведе стойност (например променливата а). Въвежда се стойност, която задължително трябва да е от декларирания тип. След натискането на клавиша Enter въведената стойност се записва в оперативната памет.
- операторът readln без параметри означава преминаване за четене на нов ред, чрез натискането на Enter. Readln в края на програмата, непосредствено преди заключителния end задържа екрана до натискане на enter, за да може да се види резултата от изпълнението на програмата.
-  операторът s:= a + b е оператор за присвояване на стойност. Двойката символи := се нарича знак за присвояване. Променливата s присвоява стойността на израза a + b.
   Идентификатори. Идентификаторите в езика паскал се използват за означаване на имена на програми, променливи, процедури, функции и др. Както обикновени идентификатори, въведени от програмиста, съществуват и идентификатори, които са запазени. Те се използват в програмирането по стандартен, предварително определен начин и не могат да се използват по друг начин. В стандарта на езика паскал има 35 запазени думи, като в програмата Suma са използвани 4 – program, var, begin и end.
В езика паскал програмистите могат да въвеждат коментари. Коментарите са редица от символи, които са заградени в скобите { и }. Предназначени са за програмистите и се игнорират при изпълнение на програмата. Чрез тях програмата става по-ясна и разбираема, като програмистът може да въвежда всякакви коментари и при това на произволни места. Препоръчително е обаче, коментарите да не се използват вътре в операторите, а между тях. Ето пример за  програма, в която са включени коментари:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
Program Suma;
    
var a,b,s: real;
Begin
          
{въвеждане на стойност на променливата a}
     
write(vavedete a: ‘)readln(a);
          
{въвеждане на стойност на променливата b}
     
write(vavedete b: ‘)readln(b);
          
{намиране на сумата на a и b}
     
s:= a + b;
          
{извеждане на резултата}
    
writeln(a, ’+’ ,b, ’=’ ,s:4:2);
  
readln;
Е
nd.
            ІІ. Структура на паскалската програма

Всяка програма на езика Паскал има точно определена структура. Тя се състои от заглавие (виж урок №1) и блок и завършва със символа точка. Блокът се състои от шест раздела, всеки от които може да бъде празен, като изключение прави последния. Това са резделите на етикетите, константите, типовете данни, променливите, функциите и процедурите, операторите. Разделите задължително трябва да са в горния порядък. Първите пет раздела са декларации. Чрез тях програмистът обявява различните обекти на програмата.
Раздел на етикетите – етикетът е цялочислено число без знак. Служи за отбелязване на място в програмата, където да бъде предадено управлението. Етикетът се поставя пред оператора, към който ще се предава управлението, като за разделител се използва двуеточие.     <етикет> : <оператор>
Всички етикети, които се използват в програмата се декларират в раздела на етикетите:         label  <етикет>
Раздел на константите – често в програмите се използва една и съща стойност няколко пъти. В такъв случай се препоръчва константата да бъде декларирана предварително в раздела на константите. В долния пример можете да видите как се декларира и използва дадена константа.
Задача 2: Да се напише програма, която по даден радиус намира Р и S на окръжност, кодето P=2.p.r и S=p.r.r, а р=3,142857.

CODE
1
2
3
4
5
6
7
8
9
10
11
12
Program Zad_2;
  
const Pi=3.142857;
  
var r, p, s: real;
Begin
  
write(vavedete radius:  ‘);
     
readln(r);
  
p:=2*pi*r;
  
s:=pi*r*r;
  
write(obikolkata e:  ‘,p:2:4);
  
write(litseto e:  ‘,s:2:4);
     
readln;
end.

Раздел на типовете данни. В езика Паскал има точно определен стандартен набор он типове данни – integer, real, boolean, char и др. В един език за програмиране не могат да се приведат всички типове данни, които могат да са необходими на програмиста. По тази причина езикът дава възможност на програмиста сам да дефинира нови типове данни. Това се извършва в раздела на типовете
type <идентификатор> = <име на тип>
В следващите параграфи ще бъдат дадени различни описания наконструкцията <име на тип>.
Раздел на променливите. Всяка променлива, която се използва в програма на езика Паскал, трябва да се опише. Това се извършва в раздела на променливите:
   var <променлива> : <тип>
За всяка декларирана променлива се отделя точно количество памет, което зависи от типа на променливата.
Раздел на процедурите и функциите – в езика Паскал има определен набор от оператори и вградени функции. Чрез дефинирането на процедури се разширява наборът от оператори, а чрез дефинирането на функции – наборът от функции в езика Паскал. Конструирането на процедури и функции ще разгледаме в отделен урок.
Раздел на операторите – докато първите пет раздела имаха декларативен характер и някои от тях могат да бъдат празни, разделът на операторите описва алгоритъмът за решаване на задачата и задължително трябва да участва в програмата.

CODE
1
2
3
4
5
6
Begin
      <оператор>
      <оператор>
            ....
      <оператор>
End.

                ІІІ. Типове данни в езика Паскал

В езика Паскал съществуват следните типове данни:
- скаларни – цял, реален, символен, булев, изборен, подобласт;
-    съсатвни – масив, запис, множество, файл;
-    тип указател.
Всеки от тези типове данни се характеризира с множество от стойностти и операции и вградени функции, които могат да се приложат над елементите му. Съставните типове данни се наричат онези данни, компонентите на които са редици от елементи. Типът указател дава средства за динамично разпределение на паметта и се използва за реализиране на различни динамични структури от данни. В този урок ще разгледаме скаларните типове булев, цял, реален и символен.
3.1 Булев тип данни
За означаването и дефинирането на този тип се използва стандартната дума boolean. Множеството от стойностите на този език се състои от два елемента – стойтостите true (истина) и false (лъжа). Тези стойности се наричат булеви константи. Декларирането на булеви променливи стьвь по познатия начин:
                               var b,x: boolean;
Над данни от булев тип е възможно да се прилагат някои операции и вградени функции. Опeраторите not, and и or (съответно логическо отрицание, логическо умножение и логическо събиране) се прилагат над операнди от булев тип. Резултатът е булева константа или променлива. На долната таблица са дадени стойности на променливите a и b, както и операции с тях:
a           b           not a              a and b                a or b
false       false       true               false                  false
false       true        true               false                  true  
true        false       false              false                  true
true        true        false              true                   true

Операторите за сравнение също могат да се прилагат над данни от булев тип
      =   равно                                 <=   по-малко или равно
      <> различно                           >     по-голямо
      <   по-малко                            >=   по-голямо или равно
Сравняването се извършва, като се сравнят кодовете на булевите константи. Например true<=false получава стойност false, false=true също получава стойност false, true>=false получава true и така нататък.
Стандартни функции, даващи булев резултат:
Odd(x) – установява дали цяло цисло е четно или не
Odd(x) = true ако x е нечетно и обратно.
Eoln(x) – булева функция, установяваща дали е достигнат края на реда на даден текстов файл. Има стойност true за достигнат край на реда и false за недостигнат.
Eof(x) – булева функция, установяваща дали е достигнат края на даден текстов файл. Отново приема стойност true за достигнат и false за недостигнат край.
Функциите eof и eoln ще разгледаме по-подробно в един от следващите уроци (работа с файлове).
Променливите от типа булев не се въвеждат. На тях може да се дава стойност с оператора := (например b:=1 или b:=true), като 0 се счита за false а 1 -  за true. Извеждането на този тип данни става по стандартния начин – с write и writeln.

3.2 Булеви изрази
Булевите изрази са правила за получаване на булева константа. Булевите константи true и false, както и булевите променливи са булеви изрази. Прилагането на булевите оператори not, and и or над булеви изрази също е булев израз. Например  [not(b and a)] or (b or a)= e булев израз. Прилагането на оператори за сравнение също е булев израз.

3.3 Тип цял
За означаването и дефинирането на този тип се използва стандартната дума integer. Множеството от стойностите на променливите от този тип са всички цели числа от [-32768;32767]. Декларирането става по стандартния начин:
                             var x, y: integer;
Операции и вградени функции:
- унарни операции –  + и -  - потвърждават или променят знака, към който са приложени;
- бинарни операции – прилагането на следните операции дава цяла стойност:
+ - събиране       * - умножение         div – частното от деление
- - изваждане                                      mod – остатък от деление
Пример 12 / 5 = 2.4      12 div 5 = 2        12 mod 5 = 4
- следните функции, приложени над ця аргумент връщат цял резултат:
abs(x) – връща абсолютната стойност на x - |x|
sqr(x) – дава квадрата на x – x*x
succ(x) – дава наследника на x – x+1
pred(x) – дава предшественика на x – x -1
- функции, приложени над реален аргумент и даващи цял резултат:
trunc(x) – отрязва дробната част и запазва цялата – trunc 7,9=7
round(x) – закръгля x.
Въвеждането на данни от типа integer става с read и readln, а извеждането – с write и writeln.
Освен integer в езика Паскал са дефинирани и следните цилочислени типове, резличаващи се само от своето множество от стойности.
Shortint[-128,127]        integer[-32768,32767]            word[0,65636]
Longint[-2147483648,2147483647]                            byte[0,255]
    3.4 Тип реален

За декларирането на този тип се използва стандартната дума real. Множеството от стойностите на този език се състои от всички реални числа от -1,7Е38 до 1,7Е38. Елементите на множеството от тип real се наричат реални константи. Декларирането на променливите става по познатия начин:
CODE
1
2
var 
   x
,y: real;
За стойностите от този тип са възможни следните операции и вградени функции:
   - унарни операции
+ и - – потвърждаватили отменят знака на операнда, към който са приложени;
   - бинарни операции – при условие, че поне един от операндите е цял, следните операции връщат реален резултат:
+ - събиране                             * - умножение
 - - изваждане                           / - деление
При два цели операнда операцията / връща реален резулат.
   - при реален аргумент следните функции връщат реален резултат
abs(x) – намира абсолютната стойност на x - |x|
sqr(x) – намира квадрата на х
   - при реален или цял аргумент следните функции връщат реален резултат
sin(x) – намира синуса на даден ъгъл
cos(x) – намира косинуса на даден ъгъл
! ъглите трябва да са зададени в радиани
in(x) – намира неперов логаритъм (x>0)
sqrt(x) – намира корен квадратен от x (x>0)
Въвеждането на реални променливи се осъществява с read и readln, а извеждането с write и writeln.

3.5 Аритметични изрази

Аритметичните изрази в Паскал са правила за получаване на числови константи. Те са цели и реални.
Цели аритметични изрази – към тях спадат целите константи или  променливи. При прилагането на унарните и бинарните операции, като и функциите, като succ, abs и др. изразите също са цели или аритметични.
Реални аритметични изрази: както при целите аритметични изрази, реалните променливи и прилаганите им унарни или бинарни функции също са реални аритметични изрази.
Приоритет на операциите и вградените функции:
-    вградени функции (най-висок приоритет)
-    + , - – унарни
-    * , / , div , mod
-    + , -  – бинарни
За нарушаване на този приоритет (ако е необходимо) се използват скобите. Приоритета на скобите е по-малък от приоритета на вградените функции и по-голам от всички останали операции.
Намирането на стойността на аритметичен израз изисква всички променливи, които участват в израза, предварително да бъдат обвързани със стойностти.
Целите и реалните аритметични изрази могат да се сравняват. В резултат на това се полечава булев езраз-
Приоритет на операциите и вградените функции в булевите изрази: булевият израз е правило за получаване на булева стойност. За намирането на тази стойност се използва следния приоритет: 
-    вградени функции
-    скоби
-    not, +, - (унарни)
-    * , / , div , mod , and
-    + , - , or
-    = , < , > , <> , <= , >=
Операциите, които са с еднакъв приоритет се изпълняват от ляво на дясно.

3.6 Тип символен

За означаването на типа се използва запазената дума char. Множеството от стойности на типа се състои от елементите на крайно и наредено множество от символи. Символите биват графични и управляващи. Графичните символи имат графично (видимо) представяне – ‘@’ ‘A’ ‘a’ ‘?’ ‘1’ и др. Означават се, като символа се загражда в апострофи.
Управляващите символи се въвеждат и съхраняват в паметта на компютъра, но нямат графично представяне във вид на символ. Означават се с идентификатори, например Nul, EOT, CR, LF и т.н. Наредбата на символите е следната:
-    от 0 до 31 – управляващи символи
-    от 32 до 255 – графични символи (40-57 – графични символи, 65-90 – букви)
Тази наредба представя знаците, цифрите, главните и малките букви с последователни кодове.
Променливите от вида се декларират по познатия начин:
  
CODE
1
2
var
          ch
: char;

Операции и вградени функции
ord(ch) – намира кода на променливата ch
chr(i) – намира символа, чиито код е i.
pred(ch) – намира символа, чиито код е с 1 по-малък от кода на променли ch
   pred(ch)=chr(ord(ch) – 1)
succ(ch) – намира символа, чиито код е с 1 по-голям от кода на променливата ch
   succ(ch)=chr(ord(ch) +1)
Оператори за сравнение  - операторите за сравнение са същите, които се използват и в булевите изрази - <, >, =, <>, <=, >=. Резултатът от сравнението е от булев тип.
Данните от този тип се въвеждат с read и readln, както и с :=, и се извеждат с write и writeln.

3.7 – Символни изрази

Символният израз е правило за получаване на символни константи.
-    константите от символен тип са символни изрази - ‘@’ ‘A’ ‘a’ ‘?’ ‘1’ и др.
-    прилаганито на pred и succ към символни изрази е символен израз.
-    Прилагането на функцията chr към цял израз е символен израз.




ІV. Основни структури за управление на изчислителния процес


4.1 – Оператор за присвояване на стойност

Това е един от най-важните оператори в езика Паскал. Синтаксисът му е променлива := израз. Величината, която е вляво на знака := задължително е променлива. Тя може да е с поизволен тип с изключение на типа файл. От дясно на оператора задължително стои израз, който е от същия тип, от който е променливата в лявата страна. Например а:=5, където а е от тип integer. Изключение: на променлива от тип реален може да се присвои стойтост от тип цял (тоест реалният тип припокрива типа целочислен).

4.2 – Съставен оператор

Съставният оператор обединява в логическо цяло няколко оператора. Често синтаксисът на някоя структура за изчислителния процес изисква да се използва точно един опрератор. Логиката на решаваната задача обаче изисква използването на няколко оператора. Тези няколко оператора могат да се вложат един в друг, така че да се запишат сато съставен оператор, като съставящите го оператори се изпълняват последователно.

4.3 – Празен оператор


Това е оператор, който не съдържа никакви действия и не съдържа никакви символи. Отделя се от останалита оператори с ; . Празният оператор може да бъде поставен след който е да е оператор.
   Пример:
   CODE
1
2
3
4
        begin
             x
:=1; ; ; ; ;
            
y:=14;
        
end;
Горният пример съдържа 7 оператора – оператор за присвояване x := 1,  следван от четири празни оператора и отново оператор за присвояване.
Приложението на този оператор е за забавяне на изчислителния процес (for i := 1 to 10000 do ;).
 
   
           4.4 – Условен оператор

Условен оператор – това е оператор, който дава възможност да се изпълни или да не се изпълни друг оператор в зависимост то някакво уславие. В езика Паскал условните оператори са в две форми – кратка и пълна.
Кратка форма на условния оператор: синтаксисът на тази форма е if B then S, където
- if и then са запазени думи
- В – булев израз
- S – оператор
Условният оператор се изпълнява по следния начин – пресмята се стойността на булевия израз В. В резултат се получава булева константа True или False. Ако стойността е True се изпълнява оператора S. Ако обаче тази стойност е False – S не се изпълнява.
След запазената дума then трябва да стои точно един оператор. Ако логиката на задачата налага използването на два или повече оператора, необходимо е те да се обединят в един съставен оператор.
Пример за програма, използваща оператора if - then.
Зад 2. Да се напише програма, която намира лицето на кръг и дължината на окръжност с радиус r.  Пресмятането да се осъществи в случай, че r > 0.

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Program Zad_2;
  
const pi=3.142857;
  
var r, p, s: real;
Begin
  
write('vavedete radius r:  ');
     
readln(r);
   
if R > 0 then begin
       p
:=2 * pi * r;
      
s:=pi * r * r;
         
write('daljinata e  ', p:2:4);
         
write('litseto e ', s:2:4);
      
end;
   
readln;
End.


Изпълнение на оператора: Пресмята се булевият израз R > 0. Щом стойността му е равна на true, т.е. въведеният радиус е по-голям от 0 се изпълнява съставният оператор след then.  Ако въведената стойност за R е по-малка или равна на 0, то операторът then не се изпълнява.
Пълна форма на условния оператор.
Синтаксисът на тазе форма е if B then S1 else S2, където
- if (ако), then (тогава), else(иначе) са запазени думи.
- B e булев израз.
- S1 и S2 са оператори.
Операторът се изпълнява по следния начин: Пресмята се стойността на булевия израз B. В резултат на това се получава true или false. Ако стойността на В е true се изпълнява S1 (S2 не се изпълнява). Ако стойността на на В е false  S1 се прескача и се изпълнява S2.
Във всички случаи след изпълнението на S1 или S2 се преминава към следващите оператори.
Забележка: след then и след else трябва да стои точно един оператор.
Пример за програма, използваща оператора if-then-else.
За пример ще преустроим малко горната програма. Отново по даден радиус програмата ще трябва да изчисли S и Р на окръжност, но ако радиусът R е по.малък от 0 ще се извежда "error !"

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
     Program Zad_3;
       
const pi= 3.142857;
       
var r, p, s: real;     
    
Begin
       
write('vavedete radius r:  ');
          
readln(r);
       
If R > 0 then begin
          p
:=2 * pi * r;
         
s:=pi * r * r;
            
write('daljinata e  ', p:2:4);
            
write('litseto e ', s:2:4);
        
end;
     
else writeln('error!');
   
readln;
End.

Вложени условни оператори. В условният оператор if B then S1 else S2 S1 и S2 са произволни оператори. В този случай говорим за вложени условни оператори.
При влагането на един условен оператор в друг е възможно да възникнат логически проблеми. Затова в езика Паскал има правило, което определя начина, по който се изпълняват вложените оператори: Всяко else се съчетава в един условен оператор с най-близкото, несъчетано преди него then. Така текста се преглежда от ляво надясно.
Препоръчително е условен оператор да се влага в друг условен оператор само след else, а не след then. Ако след then трябва да се вложи оператор, условният оператор да се направи съставен.

 
4.5 – Оператори за цикъл

Операторите за цикъл се използват за реализиране на циклични изчислителни процеси. Това са процеси, при които оператор или група от оператори се изпълнява многократно за различни стойности на техни параметри.
Цикличните процеси биват два вида – индуктивни или интеративни.
Индуктивен цикличен процес е такъв, при който броят на повторенията е предварително известен. Например: да се намери стойността на израза S = x + 2x + 3x + nx.
За да се намери сумата на израза е необходимо да се повтори действието n*x n пъти (n=1,2,3....), като всеки път стойността му се прибавя към текущата стойност на S (S:= S + n*x).
Цикличен процес, при който броят на повторенията не е известен, се нарича интеративен цикличен процес. При тези процеси някакво условие определя броя на повторенията.
В езика Паскал има три оператора за цикъл – оператор for (реализира индуктивни циклични процеси), оператор while и оператор repeat (реализират всякакви процеси).
 
4.5.1 – Оператор for

Този оператор се нарича оператор за цикъл с параметър. Предназначението му е да реализира индуктивни циклични процеси. В езика Паскал съществуват две форми – for-to-do и for-downto-do.
Пример за програма, използваща оператора for-to-do: Да се напише програма, която пресмята n! (това е функцията фактуриел. 5!=1*2*3*4*5). N е естествено число, по-голямо от 0.

CODE
1
2
3
4
5
6
7
8
9
10
Program facturiel;
     
var n, i, fac: integer;
Begin
     
write('vavedi n: ');
           
readln(n);
     
fac:=1;
     
for i:=1 to n do fac:=fac*i;
           
writeln(n ,'!=', fac);
     
readln;
End.

Оператора    for i:=1 to n do fac:=fac*I  e оператор за цикъл. Той се изпълнява по следния начин: запазените думи в състава му означават следното: за (for) i:=1 ot n повтаряй (do) fac:=fac*i.
Ако стойността на n по време на изпълненине на оператора  for i:=1 to n do...  е 4 променливата  първо присвоява стойност 2. Тогава изразът fac:=fac*i приема стойност 2 (на fac първоначално е дадена стойност 1). След това на i се дава стойност 3. Изразът fac също присвоява новата стойност fac*3. След това i присвоява 4 и т.н., в зависимост каква е стойността на n, която сме въвели.
Променливата i може да бъде от различни типове. Следните оператори за правилно заисани For-to-do:

CODE
1
2
3
4
For i:=1 to 100 do writeln(i);
For i:=-10 to 20 do writeln(i);
For b:=false to true do writeln(i);
For ch:='a' to 'z' do writeln(i);

При случай, че стойността на i е различна от тази, зададена в оператора (например в горния оператор – тя е по-малка или по-голяма от N) оператора не се изпълнява.
 
Дерзайте!