Составить программу, которая выдает на экран True, если заданная своими координатами точка лежит внутри выделенной области: | Результат работы программы: | |
| Uses crt; Var x, y:integer; L:Boolean; Begin Write(‘введите Х и У ->’); Readln(x, y); L:=((x<=0) and (Sqr(x)+Sqr(y)<=9) and (y>=-x-3)) or ((Sqr(x)+Sqr(y)<=25) and (x>0)); Writeln(‘Точка лежит в задвнной области? - ’,L); readkey; end. | введите Х и У ->1 1 Точка лежит в задвнной области? - True |
Перечисляемый тип – это описание упорядоченного множества значений, задаваемых идентификаторами в круглых скобках. Переменные перечисляемого типа могут использоваться в логических выражениях или операторах присваивания и не могут использоваться в операторах ввода или вывода. Например, программа определения дня недели может выглядеть так:
PROGRAM DEMO1;
USES CRT;
TYPE WEEK=(MONDAY, TEUSDAY, WEDNESDAY, THURSDAY, FRIDAY, SATYRDAY, SUNDAY);
VAR DAY: WEEK;
BEGIN
DAY:=THURSDAY;
IF (DAY=SUNDAY) OR (DAY=SATYRDAY) THEN WRITELN(‘УИКЕНД’)
ELSE WRITELN(‘РАБОЧИЕ ДНИ’);
{или - IF (DAY<SATYRDAY) THEN WRITELN( ‘РАБОЧИЕ ДНИ’) ELSE WRITELN (‘УИКЕНД’);}
READLN;
END.
Применение перечисляемых типовделает программы нагляднее.
Тип – диапазон (интервальный тип) – этот тип получается путем введения ограничения на уже определенный некоторый простой тип. Ограничения определяются заданием диапазона – минимального и максимального значений констант в этом диапазоне. Тип, из которого выбирается диапазон (отрезок), называется базовым типом. Левая граница диапозона на должна превышать правую. Диапазоны для вещественных типов не допускаются. Например, рассмотрим типы:
TYPE A=10..100;
WEEK=(MONDAY, TEUSDAY, WEDNESDAY, THURSDAY, FRIDAY, SATYRDAY, SUNDAY);
WORKDAY=MONDAY..FRIDAY;
WEEKEND= SATYRDAY.. SUNDAY;
Базовый тип для диапазона А – тип INTEGER; для диапазонов WORKDAY и WEEKEND – перечисляемый тип WEEK.
Использование диапазонов позволяет более экономично распределять память, особенно в случае данных типа INTEGER. Декларация интервального типа указывает компилятору, что для переменных возможны только значения в заданном интервале, тем самым в программе автоматически организуется проверка корректности операций присвоения (см. приложение 1, СТРУКТУРА ТИПОВ ДАННЫХ).
2. Функции, используемые для работы с порядковыми переменными.
Название функция | Назначение | Тип аргумента | Тип функции |
Readkey | Ввод данных без «Эхо», т. е. программа передает значение нажатого символа без нажатия на клавишу Enter и вывода на экран вводимого символа. Пример записи: A:=readkey; | Нет | CHAR |
Pred(x) | Определение предшественника взятого символа х | Порядковый | Порядковый |
Succ(x) | Определение последующего символа за взятым символом х | Порядковый | Порядковый |
Ord(x) | определяет код символа. Например, Ord(‘A’) - 65 | Порядковый | Целочисленный |
Chr(x) | определяет символ по коду. Например, Chr(65) - ’A’ | Целочисленный | CHAR |
Low(х) | возвращают минимальное значание указанного диапозона переменной Х | ЦелочисленныйТип-диапозан Логический | ЦелочисленныйТип-диапозан Логический |
High(х) | возвращают максимальное значание указанного диапозона переменной Х |
Пример использования различных порядковых типов переменных:
Текст программы: | Результат работы программы: | |
uses crt; type d=(x, y,z, k,l, m,n); d2=k..n; var a:d; b:x..z; c:d2; f, f1:20..500; i:integer; i1:word; i2:byte; i3:longint; i4:boolean; ch:char; begin clrscr; a:=d(2); b:=z; | c:=d(5); c:=pred(c); if a=z then writeln('Z'); if a=b then writeln('EYS'); if c=l then writeln('L'); c:=succ(c); if c=m then writeln('M'); i:=ord(c); write(i); writeln(low(i),' ',high(i)); writeln(low(i1),' ',high(i1)); writeln(low(i2),' ',high(i2)); writeln(low(i3),' ',high(i3)); writeln(low(i4),' ',high(i4)); f1:=low(f); writeln(f1,' ',high(f)); readkey; end. | Z EYS L M 5 -32 0 65535 0 255
False True 20 500 |
3. Условный оператор (выбор одного из двух направлений)
В разветвляющихся вычислительных процессах отдельные этапы вычислений выполняются не всегда в одном и том же порядке, а в зависимости от некоторых условий выбираются для исполнения различные их последовательности.
if <условие> then <оператор 1> [ else <оператор 2> ];
если тогда иначе
Условие – логическое выражение, которое может быть истинным или ложным.
оператор 1, оператор 2 – какой либо оператор, в том числе и составной оператор, т. е. несколько операторов, объединенных операторными скобками begin end.
Часть конструкции, заключенная в квадратные скобки может отсутствовать.
Принцип работы оператора:
¨ проверяется условие
¨ если условие истинно (верно), то выполняется оператор 1
¨ если условие ложно (неверно), то выполняется оператор 2
¨ если else <оператор 2> отсутствует, то, при ложности условия, выполняется следующий за if оператор.
Например, из двух чисел a и b вывести на экран значение большего числа. | if a > b then writeln (‘большее число a - ’, a) else writeln (‘большее число b - ’, b); |
Внимание! Перед словом else нельзя ставить точку с запятой. Обратите внимание на запись служебных слов и операторов. Каждое слово else под своим, словом if. Для большей наглядности и «читаемости» текста программы операторы, следующие за словами then и else можно писать на следующей строке.
Возможная форма оператора: if <условие> then
<оператор 1>;
Пример использования оператора: Вычислите значение функции f(x) в зависимости от значения аргумента x. | if x<0 then y=x; if x=0 then y=0; if x<0 then y=sqr(x); |
Вложенные операторы if
Возможно использовать в качестве оператор1 или оператор2 других условных операторов:
if <условие1> then if <условие2> then <оператор1> else <оператор2>;
Вложенность операторов if неограниченна.
4. Ветвление на несколько направлений (оператор – переключатель, или оператор выбора или оператор варианта):
Позволяет выбрать из любого числа возможностей.
case <переменная или выражение> of
<список значений выбора1>:<оператор1>;
<список значений выбора2>:<оператор2>;
. . .
<список значений выбора N>:<оператор N>;
[else <оператор>]
end;
Переменная может быть любого порядкового типа, кроме longint (word, boolean, integer, char… или перечисляемый тип). (см. приложение 1, СТРУКТУРА ТИПОВ ДАННЫХ)
Список значений выбора - это значения, которые могут принимать переменная или выражение, перечисленные через запятую или, если значения принадлежат какому-либо интервалу, с использованием лексемы " . . " (1..7 или 'а' ..'м')
Оператор - любой оператор, в том числе составной.
Принцип работы оператора:
¨ Значение переменной или выражения сравнивается с предложенными списками значений
¨ Если найдено нужное значение, выполняется соответствующий оператор
¨ Если нужное значение не найдено в перечисленных списках, выполняется оператор после else
¨ Если else отсутствует, то, когда нужное значение не найдено, выполняется следующий за case оператор.
Ветви здесь представлены элементами выбора, разграниченными точкой с запятой, а слово else с последующим оператором могут отсутствовать. Элемент выбора – это оператор, например составной, снабжённый одной или несколькими константами выбора:
Пример использования оператора: Написать программу, которая запрашивает номер месяца и выводит название времени года | uses crt; var month : integer; begin writeln (‘введите номер месяца от 1 – 12’); readln (month); case month of 1,2,12 : writeln(‘зима’); 3,4,5 : writeln(‘весна’); 6,7,8 : writeln(‘лето’); 9,10,11 : writeln(‘осень’); else writeln (‘ошибка ввода!’); end; repeat until keypressed; end. |
5. Операторы безусловного перехода goto и halt:
goto <метка>
перейти к
halt [<код>]
выход из программы
Оператор безусловного перехода прерывает естественную последовательность выполнения операторов и передает управление оператору, помеченному меткой.
Метка - это любое целое число от 0 до 9999 или идентификатор
Метки необходимо описывать в разделе описаний перед описанием переменных.
Например, LABEL 1, 2, lab3;
Метки ставятся в программе перед операторами в начале строки, после метки - двоеточие.
Например, 1: repeat until keypressed;
ЗАМЕЧАНИЕ:
- Нельзя входить и выходить из функций и процедур с помощью операторов goto и halt
- Нельзя входить в циклы с помощью операторов goto и halt, но можно досрочно их заканчивать
- Из программы можно выйти оператором halt
Пример использования оператора:
Составить программу проверки знания таблицы умножения. | program pt1; uses crt; label 1; var a, b:integer;x, y,z:integer;t:char; begin clrscr; writeln ('ПРОГРАММА ПРОВЕРКИ ТАБЛИЦЫ УМНОЖЕНИЯ.'); writeln ('Выход из программы - Q, продолжение - любая другая клавиша'); randomize; 1: x:= random(10);y:= random(10); write(' ',x,' x ',y,' = ?'); read(z); if z=x*y then writeln ('правильно!') else writeln ('неправильно! '); writeln ('продолжить?(y/n)')t:=readkey; if (t='N') or (t='n') then halt else goto 1; end. |
Практические задания:
1. Отработка навыков использования операторов ветвления
Составить программу движения символа * под управлением клавиш 2,4,6,8. Q – выход из программы. | uses crt; label 1; var x, y:word;q:char; begin clrscr; x:=40;y:=12; 1:textcolor(14);gotoxy(x, y);write('*'); q:=readkey; textcolor(0);gotoxy(x, y);write('*'); if q='2' then y:=y+1; if q='8' then y:=y-1; if q='4' then x:=x-1; if q='6' then x:=x+1; if (q='q') or (q=’Q’) then halt; goto 1; readkey;end. |
Составить программу подсчета суммы введенных с клавиатуры чисел. Признак конца ввода – число 0. | program pt1; uses crt; label 1; var x, z:integer;t:char; begin clrscr; writeln ('ПРОГРАММА ПОДСЧЕТА СУММЫ ВВЕДЕНЫХ ЧИСЕЛ.'); gotoxy(50,22);writeln ('Выход из программы - число 0'); 1: write('Введите число'); read(x); if х=0 then goto 2 else begin z:=z+x; goto 1;end; 2: writeln('сумма введенных чисел - ',z); readkey;end. |
Написать программу, которая проверяет, является ли четным введенное с клавиатуры число | Uses crt; Var n:integer; Begin Readln(n); Write(‘число’, n,’-‘); If n mod 2=0 then writeln(‘четное’) else writeln(‘нечетное’); readkey; End. |
Написать программу, которая запрашивает номер месяца и выводит название времени года. | Uses crt; Var month: integer; Begin Writeln (‘Введите номер месяца от 1 – 12); Readln(month); Case month of 1,2,12: writeln(‘Зима’); 3..5: writeln(‘Весна’); 6..8: writeln(‘Лето’); 9..11: writeln(‘Осень’); else writeln(‘число д. б. от 1 до 12’); end; readkey;end. |
2. Задача. Развивая предельно возможную скорость своего движения, жираф пробегает за 23 с 335,8 м. Заяц пробегает за 55 с 918,5 м. Кому из этих животных вы присвоите звание чемпиона, сопоставляя их скорости?
Алгоритм решения задачи в виде блок-схемы приведен ниже. Программу составить самостоятельно.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |



