Операторы языка описывают некоторые алгоритмические действия, которые необходимо выполнить для решения задачи. Тело программы можно представить как последовательность таких операторов. Идущие друг за другом операторы программы разделяются точкой с запятой.
Все операторы языка Паскаль можно разбить на две группы: простые и структурированные.
Простыми являются те операторы, которые не содержат в себе других операторов. К ним относятся:
Обращение к процедуре будет рассмотрено в п. 10.1, остальные - в данном разделе.
С помощью этого оператора переменной или функции присваивается значение выражения. Для этого используется знак присваивания:= , слева от которого записывается имя переменной или функции, которой присваивается значение, а справа - выражение, значение которого вычисляется перед присваиванием.
Допустимо присваивание значений переменным и функциям любого типа, за исключением типа файл. Тип выражения и тип переменной (или функции) должны быть совместимы для присваивания (см. п. 9.3). 1
X:= Y;
Z:=А + В;
Res:= (I>0) and (I
I:= Sqr(J) + I * К;
Оператор GOTO позволяет изменить стандартный последовательный порядок выполнения операторов и перейти к выполнению программы, начиная с заданного оператора. Оператор, на который происходит переход, должен быть помечен меткой. Эта же метка должна быть указана и в операторе GOTO. Метки, используемые в Turbo Pascal, могут быть двух типов:
Все используемые метки должны быть перечислены в разделе объявления меток, начинающемся зарезервированным словом label, например:
label 1, 2, Metka;
Одной меткой можно пометить только один оператор. Метка от помеченного оператора отделяется двоеточием.
Использовать оператор GOTO следует крайне осторожно. Широкое его применение без особых на то оснований ухудшает понимание логики работы программы. Безусловный переход можно осуществлять далеко не из каждого места программы и не в любое место программы. Так, нельзя с помощью этого оператора перейти из основной программы в подпрограмму или выйти из подпрограммы, не рекомендуется осуществлять переход внутрь структурированного оператора, т. к. он может дать неправильный результат, и т. д. Более подробно о таких ограничениях см. .
Пример. Найти частное от деления целых чисел.
program EXAMPLE4; | |
label | |
Out; | {описание метки} |
var | |
X, Y, Res: Integer; | |
begin | |
Write("Введите делимое: "); | {вывод сообщения на экран} |
ReadLn(X); | {чтение числа} |
Write("Введите делитель: "); | {вывод сообщения на экран} |
ReadLn(Y); | {чтение числа} |
if Y = 0 then | |
begin | {Составной оператор, см. п. 5.2.1} |
WriteLn("Деление на ноль!"); | |
goto Out; | {выход при нулевом делителе} |
end; | |
Res:=X div Y; | |
WriteLn("Частное равно: ",Res); | |
Out: | {метка "пустого" оператора} |
end. |
Пустой оператор не выполняет никакого действия и никак не отображается в программе (за исключением, быть может, метки или точек с запятыми, отделяющих пустой оператор от предыдущих или последующих операторов). Он может потребоваться для осуществления на него безусловного перехода (см. пример в п. 5.1.2).
Под операторами в языке Паскаль подразумевают только описание действий. Операторы отделяются друг от друга только точкой с запятой. Если оператор стоит перед end, until или else, то в этом случае точка с запятой не ставится.
Общий вид:
v : = a;
здесь v – переменная, a – выражение, := - операция присваивания. Выражение a может содержать константы, переменные, названия функций, знаки операций и скобки.
Пример . f:= 3 * C + 2 * sin(x);
Вид выражения однозначно определяет правила его вычисления: действия выполняются слева направо с соблюдением следующего старшинства (в порядке убывания):
Любое выражение в скобках вычисляется раньше, чем выполняется операция, предшествующая скобкам.
Присваивание допускается для переменных всех типов, за исключением типа файл.
В операции v:= a переменная v и выражение a должны иметь один и тот же тип, а для интервального типа – одно и то же подмножество значений.
Примечания. Разрешается присваивать переменной типа real выражение типа integer. Нельзя присваивать переменной типа integer выражение типа real.
Если при некотором условии надо выполнить определенную последовательность операторов, то их объединяют в один составной оператор.
Составной оператор начинается ключевым словом begin и заканчивается словом end. Между этими словами помещаются составляющие операторы, которые выполняются в порядке их следования. После end ставится точка с запятой, а после begin – только пробелы (либо комментарий).
Пример .
begin i : = 2 ; k : = i / 5 end ;
Слова begin и end играют роль операторных скобок. Тело самой программы также имеет вид составного оператора. После последнего end программы ставится точка. Нельзя извне составного оператора передавать управление внутрь него.
Пустой оператор не содержит никаких символов и не выполняет никаких действий. Используется для организации перехода к концу блока в случаях, если необходимо пропустить несколько операторов, но не выходить из блока. Для этого перед зарезервированным словом end ставятся метка и двоеточие, например:
Структурные операторы представляют собой конструкции, построенные из других операторов по строгим правилам. Их можно разделить на три группы: составные, условные и повтора. Применение структурных операторов в вашей программе очень часто просто незаменимо, потому что они позволяют программисту сделать его программу зависимой от каких-либо условий, например введенных пользователем. К тому же применяя операторы повтора вы получаете возможность обрабатывать большие объемы данных за сравнительно малый отрезок времени (это конечно же зависит и от процессора:)
Это оператор представляет собой совокупность произвольного числа операторов, отделенных друг от друга точкой с запятой, и ограниченную операторными скобками beginиend. Он воспринимается как единое целое и может находиться в любом месте программы, где возможно наличие оператора.
Условные операторы предназначены для выбора к исполнению одного из возможных действий, в зависимости от некоторого условия (при этом одно из действий может отсутствовать). Для программирования ветвящихся алгоритмов в Турбо Паскале есть специальные операторы. Одним из них является условный оператор If. Это одно из самых популярных средств, изменяющих порядок выполнения операторов программы.
Он может принимать одну из форм:
If<условие>then<оператор1>
else<оператор2>;
If<условие>then<оператор>;
Оператор выполняется следующим образом. Сначала вычисляется выражение, записанное в условии. В результате его вычисление получается значение логического (булевского) типа. Если это значение – «истина», то выполняется оператор1, указанный после слова then. Если же в результате имеем «ложь», то выполняется оператор2. В случае, если вместо оператора1 или оператора2 следует серия операторов, то эту серию операторов необходимо заключить в операторные скобкиbegin…end.
Обратить внимание, что перед словом elseточка с запятой не ставится.
Пример 1. Составить программу, которая запрашивает возраст ребенка и затем выдает решение о приеме ребенка в школу (возраст³7лет).
If v>=7 then writeln(‘Принимаем в школу’)
Задание. Модифицировать данную программу, чтобы ограничить верхнюю границу приема в школу 16 годами.
Write(‘Введите возраст ребенка’);
If (v>=7) and (v<=16) then writeln(‘Принимаем в школу’)
else writeln (‘Не принимаем в школу’);
Пример 2. Даны два числа. Меньшее из этих чисел заменить суммой данных чисел, большее - произведением.
Var x, y,s,p: integer;
Write(‘Введите 2 числа’);
then begin y:=s; x:=p; end
else begin x:=s; y:=p; end;
writeln(‘x=’, x);
writeln(‘y=’, y);
Если оператор If обеспечивает выбор из двух альтернатив, то существует оператор, который позволяет сделать выбор из произвольного числа вариантов. Это оператор выбора Case. Он организует переход на один из нескольких вариантов действий в зависимости от значения выражения, называемого селектором.
Общий вид: Case k of
else<операторN+1>
Здесь k– выражение-селектор, которое может
иметь только простой порядковый тип
(целый, символьный, логический).
Оператор Caseработает следующим образом. Сначала вычисляется значение выражения-селектора, затем обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора. Если ни одна из констант не равна значению селектора, то выполняется оператор, стоящий за словомelse. Если же это слово отсутствует, то активизируется оператор, находящийся за границейCase, т.е. после словаend.
При использовании оператора Caseдолжны выполняться следующие правила:
1. Выражение-селектор может иметь только простой порядковый тип (целый, символьный, логический).
2. Все константы, которые предшествуют операторам альтернатив, должны иметь тот же тип, что и селектор.
3. Все константы в альтернативах должны быть уникальны в пределах оператора выбора.
Формы записи оператора:
Селектор интервального типа:
1..10: writeln(‘число в диапазоне 1-10’);
11.. 20: writeln(‘число в диапазоне 11-20’);
elsewriteln(‘число вне пределов нужных диапазонов’)
Селектор целого типа:
Пример 1. Составить программу, которая по введенному номеру дня недели выводит на экран его название.
Write(‘Введите номер дня недели’);
1: writeln(‘Понедельник’);
2: writeln(‘Вторник’);
3: writeln(‘Среда’);
4: writeln(‘Четверг’);
5: writeln(‘Пятница’);
6: writeln(‘Суббота’);
7: writeln(‘Воскресенье’)
elsewriteln(‘Такого дня нет’);
Пример 2. Составить программу, которая по введенному номеру месяца выводит на экран название времени года.
Write(‘Введите номер месяца’);
1, 2, 12: writeln(‘Зима’);
3, 4, 5: writeln(‘Весна’);
6, 7, 8: writeln(‘Лето’);
9, 10, 11: writeln(‘Осень’)
elsewriteln(‘Такого месяца нет’);
Операторы выполняются последовательно в том порядке, в котором они записаны в программе. Операторы разделяются точкой с запятой. Все операторы Паскаля подразделяются на три группы: простые (присваивания, безусловного перехода, вызова процедуры, пустой), ввода-вывода, структурные (составные, условные, повтора).
Простые операторы не содержат в себе никаких других операторов. К ним относятся:
1) Оператор присваивания (:=) предписывает выполнить выражение в его правой части, и присвоить результат переменной, идентификатор которой расположен в левой части:
идентификатор :=выражение;
Переменная и выражение должны иметь один и тот же тип.
2) Оператор безусловного перехода (GOTO) означает «перейти к» и имеет формат:
GOTO_метка ;
Метка, на которую передается управление, должна быть описана в разделе меток, областью действия метки является тот блок, в котором она описана.
3) Оператор вызова процедуры (подпрограммы) служит для активации предварительно определенной пользователем или стандартной процедуры:
имя процедуры [(список параметров )];
Параметры в списке перечисляются через запятую. Подробнее процедуры рассмотрены далее.
4) Пустой оператор не содержит никаких символов и не выполняет никаких функций. Он может быть расположен в любом месте программы, где допускается наличие оператора.
Структурные операторы представляют собой структуры, построенные из других операторов по строго определенным правилам. К ним относятся:
1) Составной оператор представляет собой группу из произвольного числа операторов, отделенных друг от друга точкой с запятой, и ограниченную операторными скобками:
[Оператор1 ;
ОператорN ]
Составной оператор воспринимается как единое целое и может находиться в любом месте программы, где синтаксис языка допускает наличие оператора.
2) Условные операторы обеспечивают выполнение или невыполнение некоторого оператора, группы операторов или блока в зависимости от заданных условий.
Оператор условия может принимать одну из следующих форм:
1. IF_условие _THEN_оператор1 _ELSE_оператор2 ;
2. IF_условие _THEN_оператор ;
Условие – выражение булевского типа, при его записи могут использоваться все возможные операции отношения. Если значение выражения истинно, то выполняется оператор1 , если ложно – оператор2 . Во втором варианте, если выражение ложно, то выполняется оператор, следующий в программе сразу за оператором IF. Один оператор IF может входить в состав другого оператора IF, т.е. этот оператор может быть вложенным. При вложенности операторов каждое ELSE соответствует тому THEN, которое ему непосредственно предшествует.
Пример 7. 1) Программа определения принадлежности точки с координатами X,Y окружности радиусом R с центром в начале координат.
VAR X,Y,R,L: REAL;
WRITELN(‘введите значения X,Y и R’);
L:=SQRT(SQR(X)+SQR(Y));
IF L ELSE WRITELN (‘точка находится вне круга’); 2) поиск в массиве элементов, равных заданному значению, определение их количества, формирование из индексов этих элементов массива и его печать. READ(J); {задание значения} FOR I:=1 TO N DO IF A[I]=J THEN BEGIN {печать результатов поиска} IF S=0 THEN WRITELN("в массиве элем. равных заданному нет") ELSE BEGIN WRITELN("в массиве ",s:3," элем. равных’,J); WRITELN(‘ номера элементов, равных заданному: ‘,) {печать массива из номеров элементов} FOR K:=1 TO S DO WRITE(‘ ‘,C[K]); 3) Оператор выбора
позволяет сделать выбор из произвольного числа имеющихся вариантов и имеет формат: CASE_выражение-селектор
_OF список1
: оператор1
; список2
: оператор2
; списокN
: операторN
; ELSE [оператор
] Сначала вычисляется значение выражения-селектора
, затем обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора. Если ни одна из констант не равна текущему значению селектора, то выполняется оператор, стоящий после ELSE. Пример 8.
Определение диапазона, в котором находится вводимое с клавиатуры число. 1..10: WRITELN(‘число I=’,I:3,’лежит в диапазоне от 1 до 10’); 11..20: WRITELN(‘число I=’,I:3,’лежит в диапазоне от 11 до 20’); 21..30: WRITELN(‘число I=’,I:3,’лежит в диапазоне от 21 до 30’); ELSE WRITELN(‘число I=’,I:3,’находится вне диапазона 1 - 30’); 4) Операторы повтора
используются при организации циклов. Оператор повтора FOR
состоит из заголовка и тела цикла и может иметь два формата: 1. FOR_параметр-цикла
:=S1_TO_S2_DO_оператор
; 2. FOR_параметр-цикла
:=S1_DOWNTO_S2_DO_оператор
; S1 и S2 – выражения, определяющие начальное и конечное значение параметра цикла. FOR…DO – заголовок цикла, оператор
– тело цикла. Тело цикла может быть простым или составным оператором. Оператор FOR обеспечивает выполнение тела цикла с увеличением параметра цикла (TO) или с уменьшением параметра цикла (DOWNTO) на единицу. В операторе повтора FOR Паскаль не допускает изменения параметра цикла на величину, отличную от единицы. В составе оператора
запрещены операторы, меняющие значение параметра цикла. Пример 9.
1)Вычисление переменных А и В, значения которых зависят от переменной цикла, и их печать. BEGIN A:=2*I; B:=4+I WRITELN(A:3,B:4) 2) Перевод угла в градусах в радианы. WRITELN(‘угол в градусах угол в радианах’); FOR I:=0 TO 18 DO BEGIN RAD:=GRAD*PI/180; WRITELN(‘ ‘,GRAD:12:2,’ ‘,RAD:12:4); Оператор повтора repeat
имеет формат: тело цикла;
UNTIL_условие;
Условие
– выражение булевского типа, при его написании допустимы булевские операции и операции отношения. Тело цикла
– простой или составной оператор. Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Если условие не выполняется, то операторы тела цикла выполняются еще раз, если выполняется – происходит выход из цикла. Оператор REPEAT имеет следующие характерные особенности: выполняется по крайней мере один раз, тело цикла выполняется, пока условие равно FALSE, в теле цикла может находиться произвольное число операторов без операторных скобок
, по крайней мере один из операторов тела цикла должен влиять на значение условия, иначе цикл будет выполняться бесконечно. Пример 10.
Вычисление y=x 2 при x=8, 6, 4, 2. WRITELN (X:3,Y:4); Оператор повтора WHILE
аналогичен оператору REPEAT, но проверка условия выполнения тела цикла производится в начале цикла. Оператор имеет формат: WHILE_условие
_DO_тело цикла
; Условие
– булевское выражение, тело цикла
– простой или составной оператор. Перед каждым выполнением тела цикла вычисляется условие, если условие выполняется, то тело цикла выполняется и снова вычисляется значение условия. Если условие не выполняется, то происходит выход из цикла и переход к первому после WHILE оператору. В этом операторе программист сам должен позаботиться об изменении переменных, определяющих выход из цикла. Все операторы повтора могут быть вложенными. Пример 11.
1)Увеличение переменной I на 2 до тех пор, пока она меньше 30. WHILE I<30 DO I:=I+2; 2) Вычисление переменных А и N по заданным формулам до тех пор, пока 2*A не станет меньше или равно 3*N+1. WHILE 2*A<=3*N+1 DO BEGIN A:=A*2; N:=N+1; ND; 3) Перевод угла в радианах в градусы. WRITELN(‘угол в радианах угол в градусах’); WHILE RAD<6,28 DO BEGIN GRAD:=RAD*180/PI; WRITELN(‘ ‘,RAD:12:4,’ ‘,GRAD:12:2); Цели урока:
Задачи:
Увлечь учащихся созданием
программ на языке программирования. Закрепить
понятие об операторах. Тип урока:
закрепление пройденного
материала. Класс:
8 “Б”. Дидактические материалы:
Оборудование урока:
Интерактивная
доска. Наглядное пособие:
слайд-шоу. План урока:
1. Постановка цели урока. Организационный
момент – 3 мин 2. Актуализация знаний (тестирование, - 10 мин;
графический диктант 10 мин) - 20 мин 3. Решение заданий: 4. Домашнее задание – 2 мин Самостоятельная работа (инструктаж). 5. Подведение итогов урока. Выставление оценок
– 5 мин Ход урока
1. Организационный момент – 3 мин.
Ученикам раздаются карточки с заданием для
отгадывания темы урока. Вопросы к мини-игре “Отгадай тему”
1. Алгоритмом называется: 2. Алгоритмы, написанные на специальных языках,
предназначенные для ввода в ЭВМ, называются... 3. Блок-схемы – это... 4. Блок со словом “НАЧАЛО” используется для
обозначения 5. Блок со словом “КОНЕЦ” используется для
обозначения 6. Прямоугольник используется для обозначения 7. Ромб используется для обозначения 8. Линии используются для обозначения 9. Укажите знак присваивания 10. Для ввода и вывода в блок-схемах применяется.. 11. Укажите недопустимую операцию 12. Извлечь квадратный корень нельзя из... 13. Недопустимо деление на... 14.Укажите выражение с присваиванием 15. Помощь вызывается нажатием... 16. Быстрый запуск программы производится
нажатием... 17.Создание нового файла программы с помощью
меню осуществляется последовательным
выполнением команд... 18. Выход из оболочки Паскаля с помощью меню
осуществляется последовательным выполнением
команд... 19. Отдельные команды отделяются друг от друга
символом 20.Заголовок программы начинается служебным
словом 21.Раздел описания переменных начинается
служебным словом 2. Актуализация знаний - тестирование (10
вопросов), графический диктант - 7 мин. Задание 1.
графический диктант. Если высказывание истинно, рисуете прямую
линию “-”, если ложно – изображаете домик “^”. 1. Алгоритм ветвления – это алгоритм, в котором
выполнение команд зависит от выполнения условия. 2. Условие – это некое логическое выражение,
принимающее только значение “Ложь”. 3. Функция Sqrt (x) – квадратный корень из x; 4. Ветка “минус” в Паскале обозначается
оператором Then. 5. Оператором ветвления – является оператор
Writeln. 6. Оператор 7. integer – это вещественный тип данных? 8. Read – процедура ввода. 9. Логический оператор “and” читается как
“или”. 10. Оператором называется простое предложение
языка, которое определяет действие в процессе
выполнения алгоритма в программе. Ученики обмениваются тетрадями друг с другом.
Проверяют тетради своих товарищей - ответы на
доске. Ответ: _ ^ _^ ^ _^ _ ^ _ Задание 2.
Вычисли: Задание 3.
Вычислить значения
выражений: Задание
4.
Перед вами таблица,
соедините линиями зарезервированные слова и их
обозначения (ответы) Задание 5.
Запустить приложение Тест
. Отдохнём с пользой:
(отгадывание ребуса). Условие: составить из букв
известный вам раздел информатики. Ответ: программирование Ответы:
Начало, конец, вывод, Условие. а) Результативность (грей - зуб - утка - тигр -
в - н - о - с - т - ь); (Самостоятельная работа учащихся – решение
задач). Класс делится на два варианта: Решение задач:
1.
Program Funk; Writeln (‘введите числа x’); If x>0 then y:=sqr(x)+56х-1 Writeln (‘y=’, y); 2.
Program primer2; Var v, p,m: integer; Writeln (‘введите v, m ’); writeln (" Р "); Writeln (‘введите числа x’); Writeln (‘y=’, y); 1. program funct; writeln(‘Введите x’); if x >0 then y:= O x+56х else writeln (‘у=’, у); 2
. Program primer2; Var pi, r,S: integer; Writeln (‘введите r’); writeln (" S "); Writeln (‘введите числа a); Writeln (‘x’, x); Закрепление урока.
Вопрос 1. Оператор в Паскале. Вопрос 2. "Операнды" в Паскале. Вопрос 3. Символ-разделитель операторов в
Паскале. Вопрос 4. Простые операторы в Паскале. Вопрос 5. Группы операторов языка Паскаль: Вопрос 6. К простым операторам относятся: Вопрос 7. Структурные операторы это: Вопрос 8. Назначение условных операторов в
языке Паскаль Рефлексия (конверты со смайликами)
Вопросы:
Подведение итогов урока. Выставление
оценок
Инструктаж по домашнему заданию. Спасибо всем участникам и гостям! Желаю творческих успехов!Program
<вещественный тип данных>
<заголовок программы>;
Label
<конец>;
< раздел объявления меток>
Const
<заголовок программы>;
< раздел объявления констант>
Var
<Остаток от целочисленного деления >
<раздел объявления переменных>;
Begin
< раздел объявления меток>
<начало>;
End
< раздел объявления меток>
<конец>;
Sqr(x)
<квадратный корень из аргумента>
<возведение аргумента в квадрат>
Sqrt(x)
<Целочисленное деление>
<квадратный корень из аргумента>
A div B
<возведение аргумента в квадрат>
<Целочисленное деление>
A mod B
<округляет значение вещественного
типа до целого>
<Остаток от целочисленного деления >
Round(x)
<начало>;
<округляет значение вещественного
типа до целого>
Real
< раздел объявления констант>
<вещественный тип данных>
1 вариант
2 вариант
Ответы: (человек, работающий в должности
оператора ЭВМ)
Ответы: (данные, необходимые для выполнения
оператора в Паскале)
Ответы: (точка с запятой)
Ответы: (операторы, не содержащие никаких других
операторов, называются простыми)
Ответы: (простые и структурные)
Ответы: (операторы присваивания, безусловный
оператор, оператор вызова процедуры, пустой
оператор)
Ответы: (конструкции, построенные из других
операторов по строго определенным правилам)
Ответы: (выбор к исполнению одного из возможных
действий (операторов) в зависимости от
некоторого условия (при этом одно из действий
может быть пустым, то есть отсутствовать).