русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ОПЕРАТОРЫ ПОВТОРА


Дата добавления: 2013-12-23; просмотров: 1571; Нарушение авторских прав


End;

Вариант 4.

Вариант 3.

Вариант 2.

Вариант 1.

Рис. 3.1

 

Например, для нахождения наибольшего из двух чисел условный оператор запишется следующим образом:

If a>b then max:= a else max:= b;

 

Если требуется выполнить после then или else несколько операторов, они обрамляются операторными скобками begin и end, образуя тем самым составной оператор.

Например,

If a>=0 then begin а:=sqrt(a); Write(‘а=’,a:4:2); end

else Write(‘Нет решения’);

Часть оператора, стоящая после служебного слова else, может отсутствовать. Тогда при значении true условного выражения выполняется <оператор1>, в противном случае этот оператор пропускается.

Формат:

If< условие >then< оператор>;

 

Один оператор if может входить в состав другого оператора if. В этом случае говорят о вложенности операторов. Рассмотрим следующие возможные варианты.

 

IfУсловие1then ifУсловие2 thenОператор1elseОператор2

elseОператорЗ;

Например,

If a>b then if a>=0 then write(sqrt(a)) else write(sqr(a))

else write(‘Первое число не наибольшее’);

 

ifУсловие1thenОператор1

else ifУсловие2thenОператор2elseОператорЗ;

Например,

If х<2 then y:= x

else if x<3 then y:=2 else y:=-x+5;

 

IfУсловие1then ifУсловие2 thenОператор1elseОператор2

else ifУсловие3thenОператор3elseОператор4;

Например,

if a > b then if a > 100 then a:=a+10 else a:=2*a

else if b > 100 then b:=b+10 else b:=2*b;

ifУсловие1then ifУсловие2thenОператор1elseОператор2;

 

Например,

If А <20 then if А>=15 then write(‘А в диапазоне 15 - 20’)

else write(‘А вне диапазона 15 - 20’);

В условном операторе логические выражения могут содержать несколько отношений и/или логических переменных, связанных операциями and, or, not. Каждое простое условие в логическом выражении обязательно заключается в скобки.



Например,

if (a+b>c) and (a+c>b) and (b+c>a)

then write('Треугольник с такими сторонами существует')

else write('Треугольник с такими сторонами не существует');

Следует знать:

· в условных операторах точка с запятой не ставится после then и перед else;

· при вложенности операторов каждое else соответствует тому then, которое непосредственно ему предшествует;

· конструкций со степенью вложенности более 2—3 необходимо избегать из-за сложности их анализа при отладке программы;

· в условных операторах часто используют составной оператор begin … end.

 

Пример. Составить алгоритм нахождения корней квадратного уравнения ax2+bx+c=0 в зависимости от коэффициентов а, b и с.

Данный пример рассмотрен в Главе 1. Он реализован с помощью разветвляющейся структуры. Рядом с блок-схемой приводится текст программы.

В разделе описания переменных описаны переменные a, b, c (исходные данные), D (промежуточная величина), x1, x2 (результат) вещественного типа. Если условие D³0 выполняется, необходимо выполнить несколько операторов, поэтому они заключены в операторные скобки, если условие не выполняется, выводится сообщение об отсутствии корней.

    Program Prim1; uses crt; Var a, b, c, D, x1, x2 :real; BEGIN СlrScr; Write('Введите числа a, b, c'); Readln(a, b, c); D:= sqr(b)-4*a*c; If D>=0 then begin x1:=(-b+sqrt(D))/(2*a); x2:=(-b-sqrt(D))/(2*a); Write('x1=', x1:5:2, 'x2=', x2:5:2,); end else Write('Корней нет'); END.

Пример.Даны три числа. Найти наибольшее из них.

Данный пример реализован с помощью двух разветвляющихся структур, поэтому используем два условных оператора, следующих друг за другом.

Три вводимых числа обозначены переменными a, b и c, переменная max служит для хранения максимального значения этих чисел. После выполнения первого условного оператора переменная max принимает одно из двух значений – значение переменной а или b, в зависимости от выполнения условия a>b.

Не следует записывать a:=max или b:=max, т.к. в данном случае переменные а или b получат значения равные нулю (по умолчанию переменная max =0).

Так как необходимо найти максимальное значение из трех чисел, используется второй условный оператор.

 

  Program Prim2; uses crt; Var a, b, c, max : integer; BEGIN СlrScr; Write('Введите числа а, b и с'); Readln(a, b, с); If a>b then max:=a else max:=b; If c>max then max:=c; Write('Наибольшее число', max); END.

Пример.Пусть значение y зависит от значения х.

Рассчитать

 
 
 

 


В программе каждому логическому блоку соответствует условный оператор.

 

Program Prim3;

uses crt;

Var x, y : real;

BEGIN

СlrScr;

Write('Введите число x');

Readln(x);

If x<0 then y:=sqr(x)

else

If x>0 then y:=sqrt(x) else y:=0 ;

Write('Значение y=', y:3:1);

END.

 

 

Оператор выбора Case

 

Обычно при написании программы не рекомендуется использовать многократно вложенные друг в друга условные операторы if — программа становится громоздкой и ее трудно понимать (число уровней вложения не должно превышать двух-трех).

Оператор выбора case позволяет сделать выбор из произвольного числа имеющихся вариантов. Он состоит из выражения, называемого селектором (selection – выбор альтернативы), и списка параметров, каждому из которых предшествует список констант выбора (список может состоять и из одной константы).

Формат:

Case<выражение-селектор>of

<список1>: <оператор1>;

<список2>: <оператор2>;

<списокN>: <операторN>

else<оператор>

где case, of, else – зарезервированные слова (обозначают случай, из, иначе соответственно);

<выражение-селектор> - выражение порядкового типа (кроме типов Real и String);

<список1>, < список2> - константы того же типа, что и <выражение-селектор>;

<оператор1>, <оператор2> - любые операторы языка Паскаль.

 

Выполнение оператора case начинается с вычисления выражения-селектора. Операторы между begin и end выполняются в том случае, если значение выражения после слова case совпадает с константой из соответствующего списка. Если это не так, то выполняется оператор, идущий после else. Если else отсутствует, выполняется оператор программы, следующий за case.

Например,

· селектор целочисленного типа:

case k of

1: z:=k+10;

2: z:=k+100;

3: z:=k+1000;

end;

· селектор интервального типа;

case k of

1..15: Writeln(‘Число’, k, ‘в диапазоне 1 - 15 ‘);

16..36: Writeln(‘Число’, k, ‘в диапазоне 16 - 36 ‘);

37..55: Writeln(‘Число’, k, ‘в диапазоне 37 - 55 ‘)

else Writeln(‘Число’, k, ‘вне заданных диапазонов ‘);

end;

Следует знать:

· оператор case является обобщением оператора if;

· выражение-селектор должно иметь порядковый тип: чаще всего — integer, реже — char, boolean или один из пользовательских типов;

· список констант выбора может состоять из произвольного количества значений, отделенных друг от друга запятыми, или диапазонов, границы которых записываются двумя константами через разграничитель "..";

· диапазоны не должны пересекаться и не должны содержать констант, указанных в данной или других альтернативах;

· константы выбора внутри одного оператора выбора должны быть различны, в противном случае выполняется первая "подходящая" ветвь (одинаковые константы выбора разрешается использовать в разных операторах выбора);

· после последнего элемента списка выбора (перед else) точка с запятой не ставится.

 

Пример. По введенному номеру месяца вывести название времени года.

Program God;

uses crt;

var m : integer;

begin Write(‘Введите номер месяца ‘); Readln(m);

case m of

12, 1, 2 : Writeln(‘Зима ‘);

3..5 : Writeln(‘Весна ‘);

6..8 : Writeln(‘Лето‘);

9..11 :Writeln(‘Осень ‘)

else Writeln(‘Введите номер месяца ‘)

end;

end.

Сообщение о названии времени года будет выведено на экран лишь в том случае, если пользователем введен номер месяца, входящий в список констант. В противном случае, запрашивается ввод нового значения месяца.

 

Операторы повторения (циклы) предусматривают выполнение некоторых операторов несколько раз. В языке Паскаль имеются три различных оператора, с помощью которых можно запрограммировать повторяющиеся фрагменты программ:

· while (цикл с предусловием)

· repeat (цикл с постусловием)

· for (цикл со счетчиком)

 

Если число повторений оператора (составного оператора) заранее неизвестно, а задано лишь условие его повторения (или окончания), используются операторы while, repeat. Оператор for используется, если число повторений заранее известно.

Следует знать:

- самым универсальным из всех операторов цикла считается while, поэтому в случае затруднений с выбором можно отдать предпочтение ему;

- цикл repeat имеет очень простой и понятный синтаксис, поэтому с него удобно начинать изучение циклов;

- цикл for обеспечивает удобную запись циклов с заранее известным числом повторений;

- при неумелом использовании циклов любого типа возможна ситуация, когда компьютер не сможет нормально закончить цикл (в таком случае говорят, что программа "зациклилась"). Для выхода из подобной ситуации используется комбинация клавиш Ctrl+Break. Если это не помогает, есть и крайнее средство Ctrl+Alt+Delete.

 

Оператор repeat

 

Оператор repeat называют оператором цикла с постусловием за то, что условие проверяется после выполнения тела цикла.

Формат:

repeat < тело цикла >until < условие окончания цикла >;

 

где repeat, until – зарезервированные слова (обозначают "повторяй", "пока" соответственно);

<условие> – булевское выражение: простое выражение отношения или сложное логическое выражение;

<тело цикла> – оператор или последовательность операторов.

Вначале выполняется тело цикла, затем проверяется условие завершения цикла. Именно поэтому цикл, организованный с помощью оператора repeat, в любом случае выполнится хотя бы один раз. Если результат булевского выражения равен false (ложь), то тело цикла выполняется еще раз, если же результат – true (истина), происходит выход из цикла. Операторы будут выполняться, пока условие будет оставаться ложным (false). На рисунке 3.2 приведена блок-схема оператора повтора repeat.

 


<== предыдущая лекция | следующая лекция ==>
УСЛОВНЫЕ ОПЕРАТОРЫ | Цветовая шкала


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.007 сек.