Реферат Курсовая Конспект
Составной оператор - раздел Программирование, Оглавление Операторы Языка Паскаль. 1 Оператор Присваивания...
|
Оглавление
Операторы языка Паскаль. 1
Оператор присваивания. 1
Оператор перехода. 1
Пустой оператор. 2
Составной оператор. 2
Условный оператор. 2
Оператор выбора. 3
Операции отношения и логические операции. 3
Контрольные вопросы.. 4
Примеры алгоритмов линейной и разветвляющейся структур. 4
Комбинированный урок №5
Тема:Условный оператор. Оператор выбора. Логические операции в Паскале, таблица истинности, основные законы алгебры логики.
Цель: формирование знаний о форматах операторов If, Case, навыков применения операторов. Примеры использования операторов.
Операторы языка Паскаль
Оператор присваивания
Наиболее простым и часто используемым оператором языка является оператор присваивания:
<имя переменной> : = <выражение>;
Пример:
Y := Abs(x) -3.5;
Min := M Div N;
Y:=Sqrt(Exp(x)) + 2 * Sqr(x) * Sin(x/2) - Exp(5*Ln(x));
В операторах присваивания переменная и выражение должны иметь один и тот же тип, а для переменных интервального типа - одно и то же подмножество значений. Нельзя присваивать целочисленным переменным выражение типа Real. Однако разрешается присваивать переменной типа Real выражение целочисленного типа.
В логическом операторе присваивания слева от знака присваивания указывается переменная логического типа (boolean), а справа дается логическое выражение, имеющее значение True (правда) или False (ложь):
Пример:
D:=True;
B:=(A>C) AND (D<>0);
В символьном и строковом операторе присваивания слева от знака стоит переменная типа Char или String, а справа - символ, строка символов, либо символьное или строковое выражение:
Пример:
SYM:='A'; Alpha:=SUM;
Str1:='Turbo-'; Str2:='Pascal'; Str:=Str1+Str2.
Оператор перехода
Оператор безусловного перехода GOTO служит для прерывания естественного хода выполнения программы. Следующим выполняется оператор, помеченный меткой, которая использована в данном операторе перехода. Один оператор может помечаться несколькими метками.
GOTO <метка>;
где <метка> - это целое число без знака или идентификатор, обязательно описанный в разделе описания меток (LABEL).
Для того, чтобы пометить оператор, перед ним ставится метка, после которой записывается двоеточие.
< метка> :[<метка>:...] <оператор>;
Оператор GOTO не рекомендуется использовать при программировании, так как это существенно усложняет отладку и тестирование программы, тем более что остальных управляющих операторов языка вполне достаточно для реализации любого алгоритма.
Пример:
Program Primer;
LABEL 25;
VAR N,S:Real;
Begin
Readln(S);
Readln(N);
IF N<0 THEN begin S:=N+2; GOTO 25 end;
25: Writeln('S= ',S:6:2)
End.
Пустой оператор
Пустой оператор не обозначается и не вызывает никаких действий в программе, представляет собой дополнительную точку с запятой.
Пример:
.................
GOTO 5;
.................
End.
Составной оператор
При написании программ на Паскале часто требуется, чтобы в определенном месте несколько операторов условно представлялись как один оператор. Для этого используется составной оператор, который объединяет последовательность (цепочку) операторов в единый оператор путем обрамления этой последовательности операторными скобками - словами "begin" и "end". Внутри операторных скобок операторы отделяются друг от друга знаком ";". Выполнение составного оператора сводится к последовательному - в порядке их написания - выполнению входящих в него операторов:
Пример:
begin i:=0; j:=0 end;
Begin
y:=x/2;
x:=x+h;
Begin
Sym:='A';Str:='Строка'
End
end;
Условный оператор
Условный оператор используется для программирования развилки, если условие сформулировано как логическое выражение.
IF <логическое выражение> THEN<оператор 1>
[ ELSE <оператор 2>] ;
<следующий оператор >;
Оператор выполняется таким образом: если результат вычисления логического выражения TRUE, то выполняется <оператор 1>, затем <следующий оператор >; если - FALSE, то выполняется <оператор 2>, затем <следующий оператор>. Операторы 1 и 2 могут быть простым или составным оператором. Если часть оператора, начинающаяся ELSE, отсутствует, то при логическом выражении равным FALSE, будет выполняться <следующий оператор>. При вложенности условных операторов ELSE всегда относится к ближайшему предшествующему IF. Следует избегать большой глубины вложенности условных операторов, так как при этом теряется наглядность и возможно появление ошибок.
Пример: ………….
IF A > 0 THEN P := P + 1
ELSE
IF A < 0 THEN O := O + 1
ELSE N := N + 1 ;
……….
IF A > 0 THEN
BEGIN
S := S+ A ; K := K + 1
END ;
Примеры полных условных операторов:
IFx<0THENi:=i+1ELSEj:=j+1;
IF(x<y)AND(x<>0)THENbegin x:=y/x; y:=y+k endELSEbegin x:=x+0.01; y:=y-k end;
Примеры использования условного оператора в сокращенной форме:
IF x>y THEN Max:=x;
IF x<>0 THEN begin a:=y/x; Writeln('A= ', a:6:2) end;
Оператор выбора
Оператор выбора CASE может быть использован вместо условного оператора, если требуется сделать выбор более, чем из двух возможностей.
CASE <селекторное выражение> OF
<метка1> : <оператор 1> ;
<метка2> : <оператор 2> ;
…………..
<меткаN> : <операторN>
[ ELSE <оператор>]
END;
Селекторное выражение (селектор, переключатель) и метки-константы (метки варианта, метки выбора) должны иметь один и тот же простой тип (кроме вещественного). Метки-константы в отличие от меток программы не требуется описывать в разделе описания меток. Но на них нельзя ссылаться в операторе GOTO. Метки варианта могут быть перечисляемого и интервального типа.
Оператор выбора выполняется следующим образом. Сначала вычисляется селекторное выражение; затем выполняется оператор, метка варианта которого равна текущему значению селектора; после этого происходит выход из оператора CASE на следующий оператор. Если значение селектора не совпадает ни с одной из меток варианта, будет выполнен оператор после ELSE. Если ветвь ELSE отсутствует, то управление передается следующему за CASE оператору.
Пример: Вычислено значение К. Если К=0, то Z= ln x, при K=1 Z=ln x , при K=2 Z=sin x, при K=3 Z=cos x, в остальных случаях Z=0.
………..
CASE K OF
0: Z := LN(X) ;
1: Z := EXP(X) ;
2: Z := SIN(X) ;
3: Z := COS(X)
ELSE
Z := 0 END ; ...
В этом примере результат вычисляется по одной из стандартных функций в зависимости от параметра К, который получает свое значение перед выполнением этого оператора.
В следующем примере переменная OTVET получает значение YES или NO в зависимости от введенного значения символьной переменной V. Здесь метки варианта задаются перечислением.
VAR V CHAR;
OTVET : STRING;
………….
CASE V OF
'D', 'd', 'Д', 'д' : OTVET := 'YES';
'N', 'n', 'Н', 'н' : OTVET := 'NO'
ELSE
OTVET := ' '
END; .
В следующем примере метки выбора заданы интервалом.
VAR V CHAR;
OTVET : STRING;
………….
CASE V OF
'A' . . 'Z','a' . . 'z' : OTVET := 'буква';
'0' . . '9' : OTVET := 'цифра'
ELSE
OTVET := 'специальный символ'
END;
Операции отношения и логические операции
Операции отношения позволяют сравнивать 2 значения, результатом сравнения являются данные логического (boolean) типа, а именно -правда или ложь (true илиfalse).
В Паскале имеются следующие операции отношения:
Равно
Lt;> не равно
Lt; меньше
Gt; больше
Lt;= меньше или равно
Контрольные вопросы
1. Опишите формат оператора безусловного перехода. Назначение. Примеры.
2. Опишите формат пустого оператора. Назначение. Примеры.
3. Опишите формат составного оператора. Назначение. Примеры.
4. Опишите формат условного оператора. Примеры полной и сокращенной формы применения оператора.
5. Опишите формат оператора выбора. Назначение. Примеры.
6. Перечислите операции отношения. Какое значение принимает результат выполнения операции?
7. Перечислите логические операции. Приведите примеры.
Примеры алгоритмов линейной и разветвляющейся структур
Пример 1. Алгоритм, запрашивающий имя и затем приветствующий его обладателя.
Данные | Результат |
Имя = "Тимур" | "Привет, Тимур!" |
Program Hello;Var Name: String; {Описание переменной Name строкового типа}BEGIN Write('Как тебя зовут ? '); {Вывод на экран текста вопроса} ReadLn(Name); {Ввод c клавиатуры имени} WriteLn('Привет, ', Name, '!'); {Вывод на экран приветствия} ReadLnEND.
Здесь последний оператор ReadLn позволяет видеть на экране результаты работы программы, пока не будет нажата клавиша <Enter>.
Результаты работы Pascal-программы
Как тебя зовут ? Тимур <Enter> Привет, Тимур ! |
Пример 2. Определить объём и площадь боковой поверхности цилиндра с заданными радиусом основания R и высотой H.
Данные | Результат | ||
R = 1 | H = 1 | V = 3.14 | S = 6.28 |
Program Cylinder; Uses Crt; {Подключение библиотеки Crt} Var R, {радиус основания цилиндра} H, {высота цилиндра } V, {объем цилиндра } S: Real; {площадь боковой поверхности цилиндра}BEGIN ClrScr; {Вызов из библиотеки Crt процедуры очистки экрана} Write('Введите высоту цилиндра : '); ReadLn(H); Write('Введите радиус основания : '); ReadLn(R); V := Pi * R * R * H; S := 2 * Pi * R * H; WriteLn; WriteLn('Объем цилиндра = ', V : 5 : 2); {Здесь 5 - общее количество позиций, занимаемых переменной V при выводе, а 2 - количество позиций в дробной части значения V} WriteLn('Площадь боковой поверхности = ', S : 5 : 2); ReadLn END.
Пример 3. Даны три точки на плоскости. Определить, какая из них ближе к началу координат.
Таблица - Система тестов
Номер теста | Данные | Результат | |||||
xA | yA | xB | yB | xC | yC | Otvet | |
-1 | "Это точка A" | ||||||
-1 | "Это точка B" | ||||||
-1 | "Это точка C"/TR> |
Пример 4. Найти произведение цифр заданного целого четырехзначного числа.
Таблица - Система тестов
Номер теста | Проверяемый случай | Число | Результат |
Число положительное | P = 24 | ||
Число отрицательное | -1245 | P = 40 |
Program DigitsProduct;Uses Crt;Var Number, {заданное число} i, j, k, l, {цифры числа} P : Integer; {произведение цифр}BEGIN ClrScr; Write( 'Введите четырехзначное число : ' ); ReadLn(Number); Number:=Abs(Number); Write( 'Цифры числа ' , Number , ' : ' ); i := Number div 1000; Write(i:3); {первая цифра} j := Number div 100 mod 10; Write(j:3); {вторая цифра} k := Number div 10 mod 10; Write(k:3); {третья цифра} l := Number mod 10; WriteLn(l:3); {четвертая цифра} P := i * j * k * l ; WriteLn( 'О т в е т : произведение цифр равно ' , P ); ReadLnEND.
Пример 5. Решить квадратное уравнение ax2+ bx + c = 0.
Таблица - Система тестов
Номер теста | Проверяемый случай | Коэффициенты | Результаты | ||
a | b | c | |||
d >0 | -2 | x1 = 1, x2 = - 2 | |||
d=0 | Корни равны: x1 = - 1, x2 = - 1 | ||||
d < 0 | Действительных корней нет | ||||
a=0, b=0, c=0 | Все коэффициенты равны нулю. х — любое число | ||||
a=0, b=0, c<>0 | Неправильное уравнение | ||||
a=0, b<>0 | Линейное уравнение. Один корень: x = - 0,5 | ||||
a <> 0, b <> 0, с = 0 | x1 = 0, x2 = - 0,5 |
Тест 1 . Введите коэффициенты a, b, c : ? 1, 1, –2 <Enter> x1 = 1 ; x2 = – 2 Тест 2 . Введите коэффициенты a, b, c : ? 1, 2, 1 <Enter> Корни равны: x1 = – 1 ; x2 = – 1 Тест 3 . Введите коэффициенты a, b, c : ? 2, 1, 2 <Enter> Действительных корней нет. |
Пример 6. Две прямые описываются уравнениями
a1 x + b1 y + c1 = 0;
A2 x + b2 y + c2 = 0.
Пример 7. Вычисление даты следующего дня. Ввести данные о текущем дне, месяце и годе. Напечатать дату следующего дня. Если это последний день месяца, то напечатать об этом. Если это последний день года, то напечатать поздравление с наступающим годом.
Таблица - Система тестов
Номер теста | Проверяемый случай | Результат |
11 12 2009 | Завтра 12.12.2009 | |
30 12 2009 | C наступающим Новым годом! | |
31 07 2009 | Последний день месяца! |
Результаты работы Pascal-программы:
Тест 1 . Введите цифрами сегодняшнюю дату (число месяц год) —> 11 12 2009 <Enter>
Завтра 12.12.2009
Тест 2 . Введите цифрами сегодняшнюю дату (число месяц год) —> 30 12 2009 <Enter>
C наступающим Новым годом!
Тест 3 . Введите цифрами сегодняшнюю дату (число месяц год) —> 31 07 2009<Enter>
Последний день месяца!
Пример 8. Вычисление результата арифметической операции. Ввести два числа в первой строке и один из знаков +, -, *, / - во второй и вывести на экран результат соответствующего арифметического действия.
Таблица - Система тестов
Номер теста | X | Y | Проверяемый случай | Результат |
+ | ||||
- | ||||
/ | ||||
* |
Результаты работы Pascal-программы:
Тест 1 . x,y= 23 4 <Enter>
операция: +<Enter>
результат=27
Тест 2 . x,y= 12 11 <Enter>
операция: -<Enter>
результат=11
Тест 3 . x,y= 45 15 <Enter>
операция: /<Enter>
результат=3
Тест 4 . x,y= 2 33 <Enter>
операция: *<Enter>
результат=66
– Конец работы –
Используемые теги: составной, Оператор0.048
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Составной оператор
Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов