Курсовая работа По дисциплине: «Программирование» Тема: «Условный оператор»

advertisement
Министерство Образования и науки Республики Казахстан
Кокшетауский коледж «Арна»
3707002
«Информационные системы»
Курсовая работа
По дисциплине: «Программирование»
Тема: «Условный оператор»
Выполнил:
Грицай Кирилл
студент 2 курса
группы ИС-26-О
Проверил: преподователь
Информационных дисцеплин
Желанкина Елена Валерьевна
Кокшетау 2009
2
Введение……………………………………………………………………3
Глава 1.
Условный оператор и его виды ……………………………..
1.1 Блок схема и запись на алгоритмическом языке условного
оператора (примеры)………………………………………….
1.2
Пример программирования с использованием условным
оператора ………………………………………………………
Глава 2 Создание программы диалога с использованием условного
оператора…………………………………………………………..
3
Введение
Паскаль – язык профессионального программирования, который назван в
честь французского математика и философа Блеза Паскаля (1623–1662) и
разработан в 1968–1971 гг. Николаусом Виртом, для обучения студентов
4
методам разработки программ, таким как "программирование сверху вниз",
"структурное программирование" и т. д. Вирту не понравился не один из
существующих на тот момент языков, и в 1968 году он приступил к
разработке своего собственного. Первая версия языка была создана для
компьютера CDC 6000.Благодаря своей четкости, логичности и другим
особенностям Паскаль надолго занял свою нишу, являясь прекрасным
языком для обучения программированию. Паскаль использовался и для
разработки серьезных программ- приложений. Шутили, что Вирт разработал
игрушку, но многие отнеслись к ней слишком серьезно
Впоследствии появились различные версии языка и его расширения.
Наиболее известным расширением стал пакет Турбо Паскаль фирмы Borland,
появившийся в 1983 году и сразу ставший событием в мире компьютерных
технологий.
Турбо Паскаль – это система программирования, созданная для
повышения качества и скорости разработки программ (80-е гг.). Слово Турбо
в названии системы программирования – это отражение торговой марки
фирмы-разработчика Borland International (США).
Систему программирования Турбо Паскаль называют интегрированной
(integration – объединение отдельных элементов в единое целое) средой
программирования, т.к. она включает в себя редактор, компилятор, отладчик,
имеет сервисные возможности.
Первое упоминание о нем содержалось в рекламе опубликованной в
журнале Byte, а сам пакет предназначен для операционной системы CP/M. В
начале 1984 года он был перенесен в среду MS-DOS и приобрел огромную
популярность. С тех пор появилось несколько версий Турбо Паскаля,
последняя- седьмая.
Программы на языке Паскаль имеют блочную структуру:
5
1) Блок типа PROGRAM – имеет имя, состоящее только из латинских
букв и цифр. Его присутствие не обязательно, но рекомендуется записывать
для быстрого распознавания нужной программы среди других листингов.
2) Программный блок, состоящий в общем случае из 7 разделов:
•раздел описания модулей (uses);
•раздел описания меток (label);
•раздел описания констант (const);
•раздел описания типов данных (type);
•раздел описания переменных (var);
•раздел описания процедур и функций;
•раздел описания операторов.
Общая структура программы на языке Паскаль следующая:
Рrogram ИМЯ..;
{заголовок программы}
Uses ...;
{раздел описания модулей}
Var ..;
{раздел объявления переменных}
...
Begin
...
...
End.
{начало исполнительной части программы}
{последовательность
операторов}
{конец программы}
6
Глава 1
Условный оператор полная и неполная развилка оператор выбора.
На практике решение большинства задач не удается описать с помощью
программ линейной структуры. При этом после проверки некоторого условия
выполняется та или иная последовательность операторов, однако происходит
нарушение естественного порядка выполнения операторов. Для этих целей
используют управляющие операторы. Условный оператор используется для
реализации разветвлений в программе, которые происходят при выполнении
некоторого условия и имеет следующую структуру
IF <логическое выражение> THEN серия1 ELSE серия2;
Если логическое выражение, выступающее в качестве условия, принимает
значение False, то выполняются операторы, расположенные после else (серия2),
если True,— операторы, следующие за then. При записи логического выражения
следует избегать знака = (равно) для действительных переменных, так как они
представляются неточно, а поэтому может не произойти совпадений значений
выражений, стоящих слева и справа от знака равно. Для устранения указанного
недостатка следует требовать выполнения условия с заданной точностью, т.е.
вместо отношения X = Y рекомендуется, например,
Abs(X - Y) < 1E-8.
Поскольку развилка может быть неполной, то возможна и неполная форма
записи условного оператора:
IF <логическое выражение> THEN серия;
Условный оператор реализует разветвление вычислительного процесса по
двум направлениям, одно из которых осуществляется при выполнении условия,
другое— в противном случае. Для реализации разветвлений более чем по двум
направлениям необходимо использовать несколько условных операторов.
Рассмотрим примеры.
Задача 1. Даны действительные числа x, y. Если x и y отрицательны, то
каждое значение заменить модулем; если отрицательно только одно из них, то оба
значения увеличить на 0,5; если оба значения неотрицательны и ни одно из них не
принадлежит отрезку [0,5; 2,0], то оба значения уменьшить в 10 раз; в остальных
случаях x и y оставить без изменения.
7
Разработаем алгоритм решения задачи, после чего напишем программу.
Алгоритм запишем словесно:
1) ввести значения x, y;
2) если x<0 и y<0, найти их модули и перейти к п. 5, иначе перейти к
следующему пункту;
3) если x<0 или y<0, увеличить каждую величину на 0,5 и перейти к п. 5,
иначе перейти к следующему пункту;
4) если ни x, ни y не принадлежат отрезку [0,5; 2,0], уменьшить их в 10 раз;
5) вывести значения x и y;
6) конец.
Program Usl;
Var X, Y : Real;
Begin
Write('Введите два действительных числа '); ReadLn(X, Y);
If (X < 0) AND (Y < 0) THEN
Begin
X = ABS(X);
Y = ABS(Y)
End
ELSE
IF (X < 0) OR (Y < 0) THEN
Begin
X = X + 0.5;
Y = Y + 0.5
End
8
ELSE
IF NOT (((X >= 0.5) AND (X <= 2))
OR ((Y >= 0.5) AND (Y <= 2)))
THEN
Begin
X = X / 10;
Y = Y / 10
End;
WriteLn('Результат:'); WriteLn('X= ', X:10:6); WriteLn('Y= ', Y:10:6)
END.
Задача 2. Дано действительное число a. Вычислить f(a), если
Program Usl1;
Var A, F : Real;
Begin
WriteLn('Введите действительное число: '); ReadLn(A);
IF A <= 0 THEN
F=0
ELSE
IF A <= 1 THEN
F = Sqr(A) - A
ELSE
F = Sqr(A) - SIN(Pi * Sqr(A));
WriteLn('Значение функции F(x) при x = ', A:10:6, ' равно ', F:10:6);
9
END.
Кроме условного оператора в качестве управляющей структуры довольно
часто используется оператор выбора CASE. Эта структура позволяет переходить
на одну из ветвей в зависимости от значения заданного выражения (селектора
выбора). Ее особенность состоит в том, что выбор решения здесь осуществляется
не в зависимости от истинности или ложности условия, а является вычислимым.
Оператор выбора позволяет заменить несколько операторов развилки (в силу
этого его ещё называют оператором множественного ветвления).
В конструкции CASE вычисляется выражение K и выбирается ветвь,
значение метки которой совпадает со значением K. После выполнения выбранной
ветви происходит выход из конструкции CASE. Если в последовательности нет
метки со значением, равным K, то управление передается внешнему оператору,
следующему за конструкцией CASE (в случае отсутствия альтернативы ELSE;
если она есть, то выполняется следующий за ней оператор, а уже затем
управление передается внешнему оператору).
Запись оператора выбора
CASE K OF
A1 : серия 1;
A2 : серия 2;
...
AN : серия N
ELSE серия N + 1
END;
Любая из указанных серий операторов может состоять как из единственного
оператора, так и нескольких (в этом случае, как обычно, операторы, относящиеся
к одной метке, должны быть заключены в операторные скобки begin..end).
Выражение K здесь может быть любого порядкового типа (напомним, что к
таким типам относятся все целые типы, Boolean, Char, перечисляемый тип,
диапазонный тип, базирующийся на любом из указанных выше типов).
Задача 1. В старояпонском календаре был принят двенадцатилетний цикл.
Годы внутри цикла носили названия животных: крысы, коровы, тигра, зайца,
дракона, змеи, лошади, овцы, обезьяны, петуха, собаки и свиньи. Написать
программу, которая позволяет ввести номер года и печатает его название по
10
старояпонскому календарю. Справка: 1996г.— год крысы— начало очередного
цикла.
Поскольку цикл является двенадцатилетним, поставим название года в
соответствие остатку от деления номера этого года на 12.
Program Goroskop;
Var Year : Integer;
Begin
Write('Введите год '); ReadLn(Year);
CASE Year MOD 12 OF
0 : WriteLn('Год Обезьяны');
1 : WriteLn('Год Петуха');
2 : WriteLn('Год Собаки');
3 : WriteLn('Год Свиньи');
4 : WriteLn('Год Крысы');
5 : WriteLn('Год Коровы');
6 : WriteLn('Год Тигра');
7 : WriteLn('Год Зайца');
8 : WriteLn('Год Дракона');
9 : WriteLn('Год Змеи');
10 : WriteLn('Год Лошади');
11 : WriteLn('Год Овцы')
END;
END.
Задача 2. Найти наибольшее из двух действительных чисел, используя
условный оператор.
11
Program Maximum;
Var Max, X, Y : Real;
Begin
Write('Введите два неравных числа:');
ReadLn(X, Y);
if X > Y then
Max := X
else Max := Y;
End;
WriteLn('Максимальное из двух есть ', Max : 12 : 6)
End.
Задача 3. Преобразовать символ, если он является строчной русской буквой,
в заглавную букву.
Так как в альтернативной системе кодировки ASCII строчные русские буквы
идут не подряд, а с некоторым разрывом, то в данном случае, в зависимости от
того, в какую часть таблицы попадает введенная буква, используется та или иная
формула. Если введённый символ не является строчной русской буквой, он
выводится без изменения.
Program UpCase;
Var C : Char;
Begin
Write('Введите символ:');
ReadLn(C);
Case C Of
'а'..'п' : C := Chr(Ord(C) - 32);
'р'..'я' : C := Chr(Ord(C) - 80)
12
End;
WriteLn(C);
End.
Как видно из примера, в качестве метки может выступать не только
отдельное значение, но и диапазон значений. Кроме того, в качестве метки может
выступать перечень значений выражения (значения перечисляются через
запятую).
Контрольные вопросы и задания
Когда возникает необходимость в организации развилки?
Какая развилка называется полной? неполной?
Выражение какого типа может выступать в качестве условия при
организации развилки? Какие значения принимают такие выражения?
Могут ли в полной развилке не выполниться операторы ни по одной из
ветвей? выполниться по обеим ветвям?
Записать примеры 1-3 по теме "Оператор выбора" с помощью условного
оператора. Сколько развилок понадобилось в каждом из случаев?
В каком случае целесообразно использовать оператор выбора?
Какого типа может быть выражение, являющееся селектором выбора?
Приведите примеры.
Используя оператор выбора решить задачу: "Определить знак заданного
целого числа".
Приведите пример оператора выбора, где выражение-селектор выбора имеет
перечислимый тип
13
например, forex
Условный оператор
Вернемся к рассмотрению нашего первого
советника и расскажу об условном операторе if-else,
который я использовал в функции init().
int init()
{
//---if (iMA(NULL, 0, MAPeriod, 0,
MODE_EMA, PRICE_CLOSE, 0) > Close[0])
CurrentState = STATE_SHORT;
else CurrentState = STATE_LONG;
MyOrderTicket = 0;
//---return(0);
}
Формат условного оператора if-else:
if (выражение)
первый_оператор
else
второй_оператор
Принцип работы оператора: вычисляется значение
выражения в скобках; если оно равно true,
то выполняется
«первый_оператор»,
в противном
случае — «второй_оператор».
В нашем первом эксперте в функции init() есть
14
такая строчка:
if (iMA(NULL, 0, MAPeriod, 0,
MODE_EMA, PRICE_CLOSE, 0) > Close[0])
CurrentState = STATE_SHORT;
else CurrentState = STATE_LONG;
В этой строчке вычисляется выражение
iMA(NULL,
0, MAPeriod,
0, MODE_EMA,
PRICE_CLOSE, 0) > Close[0]. Забегая вперед, скажу,
что в этом выражении сравнивается значение
экспоненциальной скользящей средней по цене
закрытия
с периодом,
определенным
внешней
переменной MAPeriod, и цена закрытия текущего бара (
Close[0] ).
Если значение скользяйшей средней больше цены
закрытия, то выполняется первый оператор:
CurrentState = STATE_SHORT;
Если — меньше, то второй:
CurrentState = STATE_LONG;
Если в качестве оператора есть необходимость
выполнить сразу несколько операторов, то можно
использовать составной оператор, т.е. заключить
в фигурные скобки необходимые нам операторы. При
этом после закрывающей фигурной скобки точка
с запятой уже не ставится.
Пример использования составного
можно найти и в нашем эксперте:
оператора
if (!IsTesting())
return(MarketInfo(s,
MODE_LOTSIZE)*MarketInfo(StringSubstr(s,
0, 3)+"USD",
MODE_BID)/AccountLeverage());
else
{
p = iClose(StringSubstr(s,
0, 3)+"USD", Period(),
iBarShift(StringSubstr(s, 0,
15
3)+"USD", Period(), CurTime(), true));
return(MarketInfo(s,
MODE_LOTSIZE)*p/AccountLeverage());
}
Если у нас нет необходимости в выполнении
второго оператора (в случае, если выражение в круглых
скобках не равно true), то часть else можно опустить:
if (выражение)
первый_оператор
Пример из нашего эксперта:
if (s == "CHFJPY")
{
p = iClose("USDCHF", Period(),
iBarShift("USDCHF", Period(), CurTime(),
true));
return(MarketInfo(s,
MODE_LOTSIZE)/(AccountLeverage()*p));
}
Если несколько операторов if-else вложены друг
в друга, а часть операторов имеет пропущенную часть
else, то else всегда связывается с ближайшим
предыдущим
оператором
if в том же
блоке,
не имеющим части else.
Обычно операторы в коде эксперта выполняются
последовательно — один за другим. Однако часто
требуется изменить последовательность их выполнения
в зависимости от каких-то условий. В этом выпуске
я рассмотрел один из способов изменения этой
последовательности: условный оператор if-else.
Условный оператор в стандартной форме состоит из условия (логического
выражения) и двух последовательностей операторов, размещенных после символа
then и после символа else. Действие всего такого условного оператора совпадает
16
(если при вычислении условия не возникают побочные эффекты, или ,что тоже,
самое изменения в состоянии памяти) с действием одной из двух составляющих
его последовательностей операторов, выбор которой для исполнения
осуществляется по значению условия, вычисление которого начинает выполнение
условного оператора. Условный оператор назначает к исполнению первую
последовательность операторов (он стоит непосредственно после символа then),
если на текущем состоянии памяти ВМ условие принимает истинное значение,
либо вторую последовательность операторов (она находится за символом else),
если условие ложно.
Рис.
Пример
блок-схемы
Например, условный оператор if X
Y then Z := X else Z := Y end
присваивает переменной
максимальное из значений переменных
и
и
описывается блок-схемой
Рассмотрим
задачу
вычисления
корней
уравнения
,
заданного коэффициентами ,
и . Предположим, что a
и что корни
действительны. Тогда возможным решением является следующая программа,
использующая правила Виета:
module Корни3;
var A,B,C,X1,X2,D,E : Real;
begin
read(A,B,C);
D := sqrt(Sqr(B) - 4 A C);
if B>= 0 then X1 := -(B+D)/(2 A) else X1 := (-B+D)/(2 A) end ;
X2 := C/(X1 A);
17
write(X1,X2)
end Корни3.
Предусматривается возможность сокращенной записи вложенности одного
условного оператора в другой. Например, оператор
if E1 then S1 else if E2 then S2 else S3 end end,
где E1, E2, E3 - произвольные последовательности операторов, можно
записать в виде
if E1 then S1 elsif E2 then S2 else S3 end.
В этом случает говорят, что условный оператор содержит не одну, а две
охраняемые последовательности операторов (E1и E2), первая из которых
охраняется выражением E1, а вторая - выражением E2. Действие всего такого
условного оператора совпадает (если при вычислении условия не возникают
побочные эффекты, или ,что тоже, самое изменения в состоянии памяти -- см. п.
6.1.5) с действием одной из трех составляющих его последовательностей
операторов, выбор которой для исполнения осуществляется по значению условий
E1и E2, вычисление которых происходит, начиная с E1. Условный оператор
назначает к исполнению первую последовательность операторов S1, если на
текущем состоянии памяти ВМ условие E1 принимает истинное значение, вторую
последовательность операторов S2, если условие E1 ложно, а E2 истинно, и
третью последовательность S3, если условия E1и E2 ложны.
Например, программа распознавания -- равно ли данное натуральное число
некоторому нечетному числу, умноженному на два (печатает "ДА", если ответ
положительный, и "НЕТ" -- в противном случае) -- может иметь следующий вид:
ModuleПроверка;
var N : integer;
begin read(N);
if odd(N) then write('НЕТ')
elsif N mod 4# 0 then write ('ДА')
else write ('НЕТ')
end
end Проверка.
Глава 1.1: Запись на алгоритме языка условного оператора
(Примеры).
18
Рассмотрим примеры.
Задача 1. Даны действительные числа x, y. Если x и y отрицательны, то
каждое значение заменить модулем; если отрицательно только одно из них,
то оба значения увеличить на 0,5; если оба значения неотрицательны и ни
одно из них не принадлежит отрезку [0,5; 2,0], то оба значения уменьшить в
10 раз; в остальных случаях x и y оставить без изменения.
Разработаем алгоритм решения задачи, после чего напишем программу.
Алгоритм запишем словесно:
1) ввести значения x, y;
2) если x<0 и y<0, найти их модули и перейти к п. 5, иначе перейти
к следующему пункту;
3) если x<0 или y<0, увеличить каждую величину на 0,5 и перейти
к п. 5,
иначе перейти к следующему пункту;
4) если ни x, ни y не принадлежат отрезку [0,5; 2,0], уменьшить их
в 10 раз;
5) вывести значения x и y;
6) конец.
Program Usl;
Var X, Y : Real;
Begin
Write('Введите два действительных числа '); ReadLn(X, Y);
If (X < 0) AND (Y < 0) THEN
Begin
X = ABS(X);
19
Y = ABS(Y)
End
ELSE
IF (X < 0) OR (Y < 0) THEN
Begin
X = X + 0.5;
Y = Y + 0.5
End
ELSE
IF NOT (((X >= 0.5) AND (X <= 2))
OR ((Y >= 0.5) AND (Y <= 2)))
THEN
Begin
X = X / 10;
Y = Y / 10
End;
WriteLn('Результат:'); WriteLn('X= ', X:10:6); WriteLn('Y= ', Y:10:6)
END.
Задача 2. Дано действительное число a. Вычислить f(a), если
Program Usl1;
20
Var A, F : Real;
Begin
WriteLn('Введите действительное число: '); ReadLn(A);
IF A <= 0 THEN
F=0
ELSE
IF A <= 1 THEN
F = Sqr(A) - A
ELSE
F = Sqr(A) - SIN(Pi * Sqr(A));
WriteLn('Значение функции F(x) при x = ', A:10:6, ' равно ', F:10:6);
END.
Кроме условного оператора в качестве управляющей структуры
довольно часто используется оператор выбора CASE. Эта структура
позволяет переходить на одну из ветвей в зависимости от значения заданного
выражения (селектора выбора). Ее особенность состоит в том, что выбор
решения здесь осуществляется не в зависимости от истинности или ложности
условия, а является вычислимым. Оператор выбора позволяет заменить
несколько операторов развилки (в силу этого его ещё называют оператором
множественного ветвления).
В конструкции CASE вычисляется выражение K и выбирается ветвь,
значение метки которой совпадает со значением K. После выполнения
выбранной ветви происходит выход из конструкции CASE. Если в
последовательности нет метки со значением, равным K, то управление
передается внешнему оператору, следующему за конструкцией CASE (в
случае отсутствия альтернативы ELSE; если она есть, то выполняется
следующий за ней оператор, а уже затем управление передается внешнему
оператору).
Запись оператора выбора
CASE K OF
A1 : серия 1;
21
A2 : серия 2;
...
AN : серия N
ELSE серия N + 1
END;
Любая из указанных серий операторов может состоять как из
единственного оператора, так и нескольких (в этом случае, как обычно,
операторы, относящиеся к одной метке, должны быть заключены в
операторные скобки begin..end).
Выражение K здесь может быть любого порядкового типа (напомним,
что к таким типам относятся все целые типы, Boolean, Char, перечисляемый
тип, диапазонный тип, базирующийся на любом из указанных выше типов).
Задача 1. В старояпонском календаре был принят двенадцатилетний
цикл. Годы внутри цикла носили названия животных: крысы, коровы, тигра,
зайца, дракона, змеи, лошади, овцы, обезьяны, петуха, собаки и свиньи.
Написать программу, которая позволяет ввести номер года и печатает его
название по старояпонскому календарю. Справка: 1996 г. — год крысы —
начало очередного цикла.
Поскольку цикл является двенадцатилетним, поставим название года в
соответствие остатку от деления номера этого года на 12.
Program Goroskop;
Var Year : Integer;
Begin
Write('Введите год '); ReadLn(Year);
CASE Year MOD 12 OF
0 : WriteLn('Год Обезьяны');
1 : WriteLn('Год Петуха');
2 : WriteLn('Год Собаки');
3 : WriteLn('Год Свиньи');
22
4 : WriteLn('Год Крысы');
5 : WriteLn('Год Коровы');
6 : WriteLn('Год Тигра');
7 : WriteLn('Год Зайца');
8 : WriteLn('Год Дракона');
9 : WriteLn('Год Змеи');
10 : WriteLn('Год Лошади');
11 : WriteLn('Год Овцы')
END;
END.
Задача 2. Найти наибольшее из двух действительных чисел,
используя оператор выбора.
Program Maximum;
Var Max, X, Y : Real;
Begin
Write('Введите два неравных числа:');
ReadLn(X, Y);
Case X > Y Of
TRUE : Max := X;
FALSE : Max := Y
End;
WriteLn('Максимальное из двух есть ', Max : 12 : 6)
End.
Задача 3. Преобразовать символ, если он является строчной русской
буквой, в заглавную букву.
23
Так как в альтернативной системе кодировки ASCII строчные русские
буквы идут не подряд, а с некоторым разрывом, то в данном случае, в
зависимости от того, в какую часть таблицы попадает введенная буква,
используется та или иная формула. Если введённый символ не является
строчной русской буквой, он выводится без изменения.
Program UpCase;
Var C : Char;
Begin
Write('Введите символ:');
ReadLn(C);
Case C Of
'а'..'п' : C := Chr(Ord(C) - 32);
'р'..'я' : C := Chr(Ord(C) - 80)
End;
WriteLn(C);
End.
Как видно из примера, в качестве метки может выступать не только
отдельное значение, но и диапазон значений. Кроме того, в качестве метки
может выступать перечень значений выражения (значения перечисляются
через запятую).
Глав1.2:
оператора.
Пример
программы
с
использованием
условного
Операторы отношений сравнивают два значения, возвращая в
результате булевское значение True или False. В Паскале реализуются
операторы:
>
>=
<
=
<=
–больше , чем;
–больше, или равно;
– меньше,
– равно;
– меньше, чем или равно;
24
<> – не равно;
in – является элементом.
Общий формат условного оператора:
if <условие> then <оператор1> else <оператор2>
где <условие> – любое булевское выражение (вырабатывающее в
результате True или False); <оператор1> и <оператор2> – операторы
Паскаля. Если выражение принимает значение True, то выполняется
<оператор1>; в противном случае – <оператор2>.
Например:
if a > b then max := a else max := b;
Два важных момента, на которые следует обратить внимание при
использовании if/then/else. Во-первых, оператор else не является
обязательным, другими словами, допустимо использовать оператор if в
следующем виде:
if выражение then оператор 1
В этом случае оператор 1 выполняется только тогда, когда выражение
имеет значение True. В противном случае пропускается оператор 1 и
выполняется следующий оператор. Во-вторых, если необходимо выполнить
более одного оператора, в случае, когда выражение принимает значение, True
или False, то следует использовать составной оператор. Составной оператор –
это последовательность произвольных операторов программы, заключённая в
операторные скобки – зарезервированные слова begin ... end.
Например:
if B = 0 then
Writeln('Деление на нуль невозможно.')
else begin
Ratio := A div B;
Writeln('Отношение =', Ratio)
end;
В Паскале есть четыре логических оператора – and, xor, or, not. Эти
логические операторы работают с логическими значениями (True и False),
позволяя комбинировать выражения отношений, булевские переменные и
булевские выражения. Например:
25
if (a > b) and (a = 0) then writeln('a = ", a);
if (a > b) and (a = 0) then writeln('a = ", a);
Глава 2:Создать программу диалога с использованием условного
оператора.
Программа 1
Программа 2
Вычислить:
Алгоритм в виде диаграммы действий
26
Текст программы
Program prg2;
var
{ http://nataliya.kiev.ua }
x,z:real;
begin
write('x=');
readln(x);
if x<=0
then
z:=sqr(x)*x
else
if x<4
then
z:=4-sqr(x)
else
z:=1;
writeln('z=',z:0:3);
readln;
end.
Результат работы программы
x=2
z=0.000
x=3
z=-5.000
x=9
z=1.000
x=0
z=0.000
x=-3
z=-27.000
Теория к программе
Условные операторы
Оператор IF
Общий вид:
IF <выражение V> THEN <оператор S1> [ELSE <оператор S2>];
27
Где: V - выражение логического типа (условие, за которым выполняется
оператор S1 или S2). S1,S2 - один простой оператор (может быть составным).
Вложенный оператор IF
Условный оператор if может содержать в свою очередь также оператор if,
например:
IF V1 THEN IF V2 THEN S1 ELSE S2
Для избежания ошибки лучше использовать операторные скобки:
IF V1 THEN BEGIN
IF V2 THEN S1
ELSE S2
END;
Оператор выбора CASE
Используется в том случае, если переменная может принимать ряд
дискретных значений. Общий вид оператора:
CASE <K> OF
<значение K1 или список значений K1>: S1
<значение K2 или список значений K2>: S2
.
.
<значение KN или список значений N>: SN
[ELSE SN+1]
END;
Где: K - выражение или переменная перечислимого типа;
S1 .. SN+1 - операторы, которые используются в том случае, если
выражение или переменная K приобретает соответствующее значение. Они
могут быть составными.
28
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ:
1.
Бен-Ари М. Языки программирования. Практический сравнительный анализ:
Пер. с англ. – М.: Мир, 2000. – 366 с., ил.
2.
Зуев Е.А. Turbo Pascal. Практическое программирование. – М.: Приор, 1997.
– 336с.
3.
Кнут Д. Искусство программирования, том 1. Основные алгоритмы, 3-е изд.:
Пер. с англ. – М.: Издательский дом "Вильямс", 2000. – 720 с.
4.
Немнюгин С.А. Turbo Pascal. – СПб.: Издательство “Питер”, 2000. – 496 с.,
ил.
5.
Немнюгин С.А. Turbo Pascal: практикум – СПб.: Питер, 2001. – 256 с., ил.
6.
Рубенкинг Н.Дж. Турбо Паскаль для Windows: в 2-х томах. Т.1. Пер. с англ. М.: Мир, 1993. – 536 с., ил.
7.
Рубенкинг Н.Дж. Турбо Паскаль для Windows: в 2-х томах. Т.2. Пер. с англ. М.: Мир, 1993. – 536 с., ил.
8.
Ставровский А.Б. Турбо Паскаль 7.0. Учебник. – К.: Издательская группа
BHV, 2000. – 400 с.
9.
Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. Издание
7-е, переработанное. – М.: «Нолидж», 2000. – 576 с., ил.
10. Фаронов В.В. Турбо Паскаль 7.0. Практика программирования. Учебное
пособие. Издание 7-е, переработанное. – М.: «Нолидж», 2000, - 416 с., ил.
11. Шелест В.Д. Программирование. – СПб.: БХВ – Петербург, 2001. – 592 с., ил.
29
Download
Study collections