Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Цикл с предусловием - цикл WHILE




 

Пример. Составить таблицу квадратов и квадратных корней для чисел от 1 до 100.

N:=1 ;

While n<=100 do

Begin

Writeln (‘n=’,n,’sqr(n)’,sqr(n),’sqrt(n)’,sqrt(n));

N: =N+1

End;

В общем случае данный оператор цикла записывается так:

While условие DO оператор;

Правило его выполнения следующее: оператор выполняется до тех пор, пока остается истинным условие цикла. Как только значение условия становится ложным, цикл прекращает выполняться. Если значение условия ложно перед первым выполнением цикла, то он не выполняется ни разу. Обратите внимание на то, что после слова DО может стоять только один оператор, поэтому чаще всего после слова DO стоит составной оператор.

Приведенный в примере оператор WHILE работает так. Первоначальное значение переменной NUMBER равно 1. Оно задается оператором присваивания. Затем проверяется условие, которое в данном случае имеет вид: N<=100. Знак <= означает “ меньше или равно”. Естественно, что условие 1<= 100 истинно, поэтому выполняется оператор стоящий после слова DO. Этот оператор называется телом цикла. Он вычисляет и выдает на печать значения квадрата и квадратного корня числа 1, а также увеличивает значение переменной на единицу. Теперь ее значение равно двум, условие цикла остается истинным, и цикл выполняется еще раз. Последний раз цикл будет выполняться для значения n=100. Условие 100<=100 истинно, и цикл выполняется. Внутри цикла происходит очередное увеличение переменной N на 1, и ее значение становится равным 101. Очередная проверка условия цикла дает значение условия ложное, и выполнение цикла прекратится. Таким образом, данный цикл выдает значения квадратов и квадратных корней для чисел от 1 до 100 включительно.

Выход из цикла осуществляется, когда условие перестает выполняться, значит можно задать цикл, который вообще ни разу не будет выполняться (поставить заведомо ложное условие).

Цикл с постусловием - цикл repeat

 

Он имеет вид:

REPEAT оператор1;

оператор2;

оператор3;

……………

оператор n

UNTIL условие;

В отличие от цикла предусловием, выход из цикла постусловием осуществляется при истинности условия. Этот цикл должен выполниться хотя бы один раз. Данный оператор цикла выполняется до тех пор, пока не станет истинным условие.

Заметим, что если в операторе WHILE условие проверяется до очередного выполнения цикла, то в операторе REPEAT - после очередного выполнения.

Таким образом, оператор REPEAT - оператор с постусловием) всегда выполняется, по крайней мере, 1 раз, в то время как оператор WHILE(оператор с постусловием) может не выполняться ни разу.

Еще одна особенность цикла REPEAT - в нем разрешается использовать произвольное число операторов.

Пример (тот же).

Repeat

Writeln (‘n=’,n,’sqr(n)’,sqr(n),’sqrt(n)’,sqrt(n));

N: =N+1

Until n>100;

Когда переменная NUMBER принимает последовательно значения 1,2,…,100, значение условия N>100 остается ложным и для них цикл выполняется (UNTIL- до тех пор, пока не). Как только переменная NUMBER принимает значение 101, то условие N>100 становится истинным (101>100) и выполнение цикла прекращается.

Заметьте, что при использовании как цикла WHILE, так и цикла REPEAT.

Необходимо принудительно увеличить значение переменной N. Если этого не делать, то цикл никогда не завершится, т.к. переменная N так и остается равным единице. Условие N<=100 никогда не станет ложным, а условие N>100 никогда не станет истинным. В результате оба цикла будут выполняться бесконечно долго. В этом случае говорят, что программа зацикливается. Оба этих цикла применяются, когда число повторений неизвестно(хотя это число можно сосчитать).

 

Оператор выбора варианта

 

Условный оператор позволяет при выполнении программы выбирать одно из двух возможных действий. Если же необходимо сделать много взаимоисключающих проверок, то удобнее воспользоваться оператором выбора варианта.

Пусть перед нами стоит следующая задача.

Пример. Числами от 1 до 7 пронумерованы дни недели от понедельника до воскресенья. Необходимо преобразовать числовое значение соответствующего дня недели в его название и вывести на печать.

Задача легко решается с использованием последовательности условных операторов:

If day =1 then writeln(‘понедельник’) else

If day =2 then writeln(‘вторник’) else

………….

………….

If day =7 then writeln(‘воскресенье’);

Вместе с тем в языке программирования Паскаль имеется оператор, позволяющий проще, короче, и нагляднее записать решение этой задачи. Он называется оператором выбора и дает возможность выбрать для выполнения один из произвольного числа операторов, входящих в его состав. Теперь решение будет таким:

Case day of

1: writeln(‘понедельник’);

2: writeln (‘вторник’) ;

3: ………………….

……………………..

7: writeln(‘воскр.’);

else writeln(‘ошибка….’);

end;

Если переменная day принимает значение 1, то выполняется оператор, перед которым стоит 1:. Если day равно 2, то выполняется оператор, перед которым стоит 2: и т.д. Если же переменная принимает значение вне диапазона1…7, скажем 0 или 8, то выполняется следующий оператор.


Общий вид оператора выбора варианта:

Case селектор of

метка1:оператор1;

…………………….

метка n: оператор N;

End; {of case}


Другой вид оператора выбора:

Case селектор of

Метка1:оператор1;

………………………….

Метка n: оператор N;

Else оператор M;

End; {of case}





Концепция типов данных

 

Язык должен способствовать повышению надежности программ. Поэтому надежности программ отдается предпочтение даже по сравнению с легкостью их написания. Требование описывать все переменные- это явная избыточность в программе, которая, однако, повышает надежность программы.

Язык Паскаль построен таким образом, что снабжает компилятор избыточной информацией, которая используется при проверке согласованности программы без ее выполнения.

Каждая переменная в Паскаль-программе должна быть объявлена до своего первого применения. Тип переменной определяет множество допустимых для нее значений, а также набор и правила выполнения операций над ней.

Программа, написанная на языке Паскаль, оперирует некоторыми объектами, называемыми данными. Каждый элемент данных в программе является либо константой, либо переменной. Для каждой переменной задается некоторый тип, определяющий как возможные значения переменной, так и операции, которые могут над ней выполняться. Тип переменной задается в разделе переменных. Константа отличается от переменной тем, что ее значение не может изменяться во время выполнения программы и она описывается в разделе констант. Тип константы однозначно определяется ее значением и в явном виде не указывается

Исключение - типизированные константы, у которых указывается начальное значение и тип. Они могут изменяться в процессе решения задачи.

 

 

 



СТАНДАРТНЫЕ ПРОСТЫЕ ТИПЫ

 

Целый тип

 

Целый тип Диапазон значений Размер памяти
Shortint (короткое целое) -128..127 1 байт
Integer (целое) -32 768..32 767 2 байта
Longint (длинное целое) -2147483648..2147483 647 4 байта
Byte (байт) 0..255 (беззнаковый тип) 1 байт
Word (слово) 0..65536 (беззнаковый тип) 2 байта

 

Данные целого типа используются в тех случаях, когда какую-то величину нужно представить абсолютно точно, например, число живых существ или количество предметов. К данным целого типа относятся константы и переменные.

Константа целого типа – это десятичное число , записанное без точки. Если константа отрицательная, то перед ней должен стоять знак «-» а если положительная ,то знак «+» можно не указывать.

Const k=15;

null=0;

p1=-46;

Описание переменной имеет тип integer.

A: integer;

Summa: integer;

B1, B2, B3: integer;

В разделе операторов указанные переменные должны принимать значения целых десятичных типов:

A: = 25;

Summa: = 0;

Операции над данными целого типа:

 

+ сложение (результат – целое число)

 — вычитание(——«——«——-«—-—)

 * умножение (——«——«——«——)

Div – деление с отбрасыванием дробной части (получение целого частного при делении целого данного на целое).

Mod – получение целого остатка при делении целого данного на целое.

Пример. Program delen;

Var A,B,Y,Z: Integer;

Begin

Writeln(‘вв A,B’);

Readln(A,B);

Y: = A Div B;

Z: = A Mod B;

Writeln( Y:3, Z:3);

End.

Переполнение при выполнении арифметических операций не обнаруживается!!!

Формат: Write(A:4)


Пример. A = 25;

B = 5;

C = -3;

A+5 = 30;

B Mod A = 5;

13-A = -20;

A Mod C = 1;

C*15 = -45;

A Mod C = -8;

A Div 7 = 3;

25 Div -3 = 8;

A Mod 7 = 4;

-25 Mod –3 = -1


С аргументами целого типа могут использоваться следующие стандартные функции:

Имя функции Математическое обозначение Тип результата
Sin (x) Sin x Real
Cos(x) Cos x Real
Ln(x) Ln x Real
Sqrt(x) Real
Arctan(x) Arctg x Real
Exp(x) ex Real
Sqr(x) x2 Integer
Abs(x) |x| Integer
Odd(x) False, x=2n True, x=2n+1 Boolean
Succ(x) x + 1 Integer
Pread(x) x - 1 Integer
Inc(x) x + 1 Integer
Inc(x,n) x + n Integer
Dec(x) x - 1 Integer
Dec(x,n) x - n Integer

Действительный тип

 

Данные действительного (вещественного) типа используются значительно чаще, чем целого типа.

2 вида представления вещественных констант с фиксированной и с плавающей точкой:  127.3               25.0       -16.003

4Е-5 0.62Е+4 -10.8Е12 -20Е-3

0.52Е+3 = 5.2Е+2 = 52Е+1 = 520Е = 5200Е-1

В разделе описания констант:

Const L = -1/602E-19;

NA=6.022E23;

PI=3.14;

Summa=-5.6;

Описание переменной имеет тип Real:

Var U, I, R: Real;

Z1:Real;

В разделе операторов: Z1:=-0.03E14;

   Scorost:=12.6;

   I:=5;

Здесь целое число 5 автоматически преобразуется к действительному типу 5.0 для присвоения переменной I.

 

Операции над данными действительного типа:

 

+ —   *  /

Результат - тоже действительное число.

Если в операции ,кроме данных вещественного типа, участвуют и данные целого типа, результат все равно будет вещественный. Степень представляется так: Aх àexp(x*LN(A)) приA>0

Формат: Write(x:m:n), где: m - общее поле, n - поле дробной части.

В арифметических выражениях принят следующий приоритет операций:

1)Вычисление функции.

2)  * , / , Div , Mod.

3)  + , — .



Вещественные типы

 

REAL- действительный (вещественный) тип. Абсолютная величина для этого типа изменяется в диапазоне 2.9Е - 39..1.7Е+38, имеет мантиссу с 11 десятичными цифрами. Занимает в памяти 6 байтов.

SINGL - простой точности, 4 байта.

DOUBLE - двойной точности, 8 байт.

EXTENDED - расширенной точности, 10 байт.

При переполнении вещественного типа происходит программное прерывание.

С аргументами вещественного типа могут не пользоваться следующие стандартные функции:

Sin(x), Cos(x) ,Ln(x), Sqrt(x), Arctan(x), Exp(x), Sqr(x), Abs(x). Все они вырабатывают результат вещественного типа.

Определены также стандарты функции преобразования значения вещественного типа в значение целого типа:

TRUNC (X) - вырабатывает результат путем отбрасывания дробной части аргумента;

ROUND (X) - вырабатывает целый результат путем округления до ближайшего целого.



Пример.

x=21.53 trunc (x)=21              round (x)=22

x=-27— trunc (x)=-2 round (x)=-3

Логический тип

 

Boolean - логический тип имеет 2 значения: false и true, занимают 1 байт памяти.

Над булевскими переменными определены 3 логические операции:

AND - конъюнкция (логическое умножение),

OR - дизъюнкция (логическое сложение),

NOT - отрицание.

FALSE<TRUE , поэтому применимы операции отношения.

Значения FALSE и TRUE можно рассматривать как упорядоченное множество, состоящее из двух элементов.

Ord (false)=0 {номер)

Succ (false)=true {следующий)

Ord (true)=1 {номер)

Pred (true)=false {предыдущий)

Логический тип (тип boolean) определяет диапазон логических значений, который содержит 2 элемента: TRUE (истина) и FALSE (ложь).

Type Boolean = (False, True);

Логические переменные описываются в разделе описания переменных так:

Var P, Q, R : Boolean;

Логические переменные могут принимать только 2 значения:True и False.

Все операции сравнения дают результат типа Boolean.

= , < >, < , < = , > , > =.

 

В языке Паскаль принят следующий приоритет операций:

1)  Not

2)  And

3)  Or, Xor + -

4)  Операции сравнения

 

Для задания явного порядка - круглые скобки:

(A - B) AND (C< = D)

 

Символьный тип

 

Символьная константа - это символ , заключенный в апострофы (чтобы представить апостроф , его повторяют дважды).

‘A’, ‘R’,’+, ‘7’

В описании констант:

Const Sim = ‘A’;

A = ‘A’;

S = ‘+’;

D1 = ‘;’;

Символьная переменная принимает значение одного символа. Она описывается в разделе переменных как CHAR.

Var Bukwa: Char;

B1, B2, R: Char;

В операторе присваивания:

Bukwa : = ‘+’;

R: = Bukwa;

К символьным данным применимы операции сравнения, т.к. все символы упорядочены, каждый символ имеет свой порядковый номер.

Ввод символьных данных имеет особенности: символьные данные вводят сплошной строкой, без пробелов, т.к. пробел - это тоже символ!!!

Var S1, S2, S : Char;

Read (S1 , S2 , S3 )

- - - - - - - - - - - - - - -

ABC —> S1 = ‘A’ , S2 = ‘B’ , S3 = ‘C’

A_B_C_ —> S1 = ‘A’ , S2 = _ , S3 = ‘B’

Формат: X : M

‘_’ : 7 - вывод семи пробелов.

Результатом операции сравнения является логическая константа True или False. ‘A’<’B’

Встроенные функции:

Ord(x) -определяет порядковый номер символа Х, например, ORD(‘R’) = 82.

Chr(x) -определяет символ, стоящий по порядковому номеру Х, например, CHR(68)= ‘D’.

Эти две функции носят название функций преобразования.

Очевидно , что Chr(Ord(S)) = S; Ord(chr(68)) = 68.

Если С1 и С2 - переменные символьного типа, то С1<С2 , если Ord(C1) < Ord(C2)

Pred(x) - дает предыдущий символ но относительно к Х, например,. Pred(‘N’) = ‘M’.

Succ(x) - определяет следующий за Х символ, например,. Succ(‘R’) = ‘S’, Succ(‘9’) = ‘:’

Справедливы равенства:

Ord (false) = 0                            Ord (True) = 1

Succ (False) =True                      Pred (True) = False










Последнее изменение этой страницы: 2018-05-27; просмотров: 194.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...