Имя типа (переменная или значение)
Пример
var
Ch:char;
By:byte;
Ch:=’1’;
By:=byte(ch); { by=49}
Операторы
Ввод данных
Операторы считывания обеспечивают ввод чисел, строк и символов:
Read (<список ввода>);
Readln (<список ввода>); –перевод на другую строку
список ввода - это последовательность из одной или более переменных типа char, string а также любого целого или вещественного числа.
При вводе с клавиатуры 2 числа считаются разделенными, если между ними есть хотя бы один пробел. После ввода данных следует нажать клавишу ENTER.
-----------------------------
Read(a,b); 123 1.23!
Или 123! 1.23! {a=123, b=1.23 }
При вводе символов нет разделителей!
Read(ch1,ch2); AB! {ch1=’A’, ch2=’B’}
A B { ch1=’A’, ch2=#13}
От смешанных списков вводе с клавиатуры лучше отказаться!
Вывод данных
Операторы для вывода и печати результатов
Write (<Список Вывода [:n[:m]];
Writeln(<Список Вывода [:n[:m]];
список вывода - это последовательность из одной или более переменных типа char, string, Boolean а также любого целого или вещественного числа. Можно выводить текстовые данные в апострофах.
N- кол-ва позиций при выводе на печать текста или целого числа.
У вещественных чисел можно задавать общее число выводимых знаков(включая знак, точку, букву Е) а число цифр, стоящих после запятой, цифройM.
При необходимости вывода вещественных чисел в ЕХР формате надо задавать только одно значения N, а если n меньше чем длина параметра то nигнорируется!
Для вывода на принтер должно быть доступно устройство LST. Для этого надо подключить модуль PRINTER с помощью зарезервированного слова uses.
Пример
Uses Printer;
Var
------
BEGIN
Write(234); { выводится значение 234}
Write(A+B-2); { выводится результат выражения }
Write(Lst,’Результат вычислений’, Result); {результат выводится на принтер}
I:=123, rr=:123.456; B:=true;
Writeln(i:8); { 123} { выравнивается по правому краю}
Writeln(r:8:2); { 123.46}
Общая ширина поля дробная часть
Writeln(i,I,i); {123123123} { выравнивается по правому краю}
Writeln(r); {в поле шириной 17 символов выводится десятичное представление r в формате с плавающей точкой #.##########E*## +1.2345600000E+02}
Writeln(B:6,not B:7); { True False}
Найдите ошибки в программе:
CONST
A,B: integer;
Result: byte;
BEGIN
Write (‘Введите 2 числа:’ );
Readln(A,B);
Result:= A DIV B;
Writeln (‘Отношение равно:’ Result);
END.
Составной оператор
Это последовательность операторов программы заключенная в операторные скобки BEGIN … END. Это дает возможность писать программу по современным технологиям без операторов go, to. Турбо паскаль не накладывает никаких ограничений на характер операторов, входящих в составной оператор. Среди них может быть и составной оператор. Глубина вложенности произвольна.
Begin
--------------------------
Begin
--------------------------
Begin
- --------------------------
End;
---------------------------
End;
-----------------------------
End;
Условный оператор
Позволяет проверить то или иное условие и в зависимости от результата проверки выполнить то или иное действие.
IF <условие> THEN <оператор 1>ELSE <оператор 2>
Условие это произвольное выражения логического типа.
Оператор 1 и Оператор 2 - любой оператор Турбо Паскаль.
Работает по принципу сначала вычисляем условие если результат True то выполняем оператор 1 а оператор 2 пропускаем если оператор False то оператор 2 выполняется а оператор 1 пропускается!
Пример 1:
-----------------------------
If X<2 then write(‘ X<2 ’)
ELSE
write(‘ X>=2 ’);
INC(X);
-------------------------------------------------------
Пример 2:
If X>5 then write(X);
DEC(X);
--------------------------------------------------------
Оператор 1 и оператор 2 могут быть любого типа, в том числе и условными. Но не каждый из условных операторов может иметь часть ELSE. Эта неоднозначность решается так: любая встретившаяся часть ELSE соответствует ближайшей к ней “сверху” части THENусловного оператора.
Пример 3:
VAR
A,b,c,d:integer;
---------------------------------
{a:=1; b:=2; c:3; d:=4;}
1) If a>b then
If c<d then
If c<0 then c:=0
ELSE
A:=b; {a=1}
2) If a>b then
If c<d then
If c<0 then c:=0
ELSE
ELSE
ELSE
A:=b; {a=2}
Лучше составной оператор ставить между Begin и End.
IF key=’Y’ THEN
begin
{выполняются операторы, если ответом был Y}
End
ELSE
begin
{эти операторы выполняются независимо от ответа}
End;
Пример 4:
Вычислить функцию:
X2+1, если X<0
Y= X-2,1, если Х>P/2
SIN X, если 0<=X<=P/2
Для произвольного Х.
Program TS;
Var
X,Y: real;
BEGIN
Write(‘ Введите X ‘); Readln(X);
If X<0 then Y:=sqr(X)+1
ELSE
If X>PI/2 then Y:=X-2.1
ELSE
Y:=Sin(X);
Writeln(‘При х=’, X:5:2,’ Y=’,Y:8:2);
END.
Пример 5:
Составить программу определения произведения двух наименьших целых чисел A,B,C.
(A=B=C)
Program MINMUL;
Var
A,B,C: integer;
Mul:real;
BEGIN
Write(‘ Введите A,B,C ‘); Readln(a,b,c);
Max:=a;
If B>MAX then MAX:=B;
If C>MAX then MAX:=C;
MUL:=A*B*C/MAX;
Writeln(‘Произведение двух наименьших’, MUL:8:2)
END.
Операторы циклов
В Т-П имеются три оператора, с помощью которых можно запрограммировать повторяющиеся фрагменты.
Оператор FOR
Используется, если можно указать в заголовке число повторений
FOR <ПЦ> : = <НЗ> TO <КЗ> DO <оператор>
DOWNTO
FOR, TO, DOWNTO, DO – зарезервированные слова
<ПЦ> – параметр цикла, переменная любого порядкового типа
<НЗ>– начальное выражение того же типа
<КЗ> – конечное выражение того же типа
(оператор) – произвольный оператор Т-П
Работа цикла представлена блок-схемой
нет
да
Пример 1
Program Privet;
var
Hum : byte;
Begin
For hum :=1 to 3 do
Writeln ('Мы желаем Вам веселого Рождества');
Writeln ('и счастливого Нового года!');
End.
Выполняется при hum := 1,2,3 первая запись и один раз вторая запись (после завершения цикла)
Пример 2
На экран выводиться таблица перевода из градусов по шкале Цельсия (С) в градусы по Фаренгейту (F) для значений от 150 до 300 с шагом 10. Перевод осуществляется по формуле F:= С* 1,8+ 32
Program Demofor;
Var
i: integer;
f: real;
Begin
Write (‘ Температура ‘);
For i:=15 to 30 do
Begin
F:=i*1.8=32;
Write (‘по Цельсию = ‘, i, ‘ по Фаренгейту = ‘, f:5:2)
End
End.
Описан параметр цикла I (тип Integer) и var – типа real. В начале выполнения программы выводится надпись «Температура», а затем таблица соотношения температуры (с) и (F)
Цикл:
1. Проверяется условие I<=30;
2. Если да – то рассчитывается выражение i*1.8=32 и присваивается var f и на экран выводится сообщение;
3. Если условие I<=30 не соблюдается, то оператор цикла не выполняется и управление передается за пределы цикла. Программа завершает работу.
4. Значение i=i+1 передается в заголовок цикла (for) для проверки условия.
Пример 3 c dowto
For i:=14 dowto10 do
Write (i:3)
На экране 14 13 12 11 10
Пример 4
Если выражение отвечает невозможной последовательности, то цикл вообще не выполняется
For i:= 2 to 1 do write(‘Робкий‘)
Начальное и конечное значение вычисляется перед выполнением оператора цикла и в дальнейшем не перевычисляется. Невозможно перескочить через «финишную черту», установленную в самом начале.
Пример 5
Fin := 3; (цикл работает равно три раза)
For i:=1 to fin do 4
Begin 5
Inс (fin) 6
End;
Всякое изменение параметра цикла является ошибкой.
for i:=1 to 3 do
begin
i:=i-1; {ошибка}
read (i); {ошибка}
for i:=5 to 10 do {ошибка}
end;
Оператор WHILE
While <условие> do <оператор>
While, do –зарезервированные слова
<условие> – выражение логического типа
<оператор> – произвольный оператор
Если (условие) имеет
значение true, то выпол-
False true няется оператор, после
чего повторяется проверка
условия.
Если (условие) имеет
значение false, то оператор
|
работу.
Пример 1
n:=3;
while n>0 do
begin 2
n:=pred(n); 1
write (n) 0
end;
Следует знать:
1. В условии выражение должно быть определено до первого выполнения оператора цикла.(n:=3);
2. Число повторений оператора цикла while определяется в ходе выполнения программы и как правило заранее неизвестно;
3. В теле цикла обязательно должно быть инструкции, влияющие на условие выполнения цикла (n:= pred (n).
Пример 2
Суммировать десять произвольно введенных целых чисел.
var
count, item, sum : integer;
begin
sum:= 0;
count:=0;
while count<10 do
begin
inc (count);
write (‘Введите‘, count, ‘- е целое число: ‘);
Readln (item);
Sum:= sum+ item
end;
write (‘сумма введенных чисел = ‘,sum)
end.
Следует знать
1. Цикл white – цикл с предусловием, т.е. тело цикла вообще может быть не выполнено, если условие ложно с самого начала.
2. Цикл white считается самым универсальным видом цикла (см. следующее утверждение).
3. Удобнее всего использовать в случаях, когда возможна ситуация невыполнения цикла.
Оператор REPEAT
Repeat <тело цикла> Until <условие>
повторяет до тех пор пока
Repeat, Until – зарезервированные слова ( повторяет до тех пор пока не будет выполнено условие)
<тело цикла> – произвольная последовательность операторов Т-П
<условие> – выражение логического типа
false
| |||
true
Операторы (тело цикла) выполняются хотя бы один раз, после чего проверяется условие. Если значение false (ложь), то операторы цикла повторяются. В противном случае (true) оператор repeat завершает свою работу.
Пример 1 Игра «Угадай число»
var
comp: integer; {число, задуманное компьютером}
igrok : integer; {вариант игрока}
begin
randomize; {инициализация датчика случайных чисел}
comp:= random (1000); {случайное число}
repeat
write (‘Введите число - ‘); Readln (igrok);
if igrok> comp then writeln (‘Слишком много‘)
else
if igrok< comp then writeln (‘Слишком мало‘)
else
writeln (‘Вы угадали‘);
until igrok= comp;
end.
Оператор repeat можно использовать для проверки правильности ввода исходных данных.
Пример 2
Исходное данное должно быть двузначным числом. Программа может повторять запрос, пока не получит требуемое.
var х : integer;
repeat
write (‘Введите двузначное число - ‘); Readln (х);
Until (x<9) and (x>100);
Следует знать:
1. Число повторений оператора цикла заранее неизвестна и определяется в ходе выполнения программы.
2. В теле цикла должны быть инструкции, влияющие на условие завершение цикла (var, участвующие в условии должны изменяться в теле цикла).
3. Цикл repeat – цикл с постусловием и поэтому теле цикла будет выполнено хотя бы раз.
Repeat until false {конструкция вечного цикла}.