Основы программирования на языке Паскаль

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

° совпадает с какой-либо константой выбора, то выполняется оператор, стоящий после списка констант, в котором есть константа, совпадающая со значением выражения-селектора. если значение выражения-селектора не совпадает ни с одной из констант выбора, то выполняется оператор, следующий за else. Else может в Case отсутствовать, тогда в случае несовпадения констант оператор Case игнорируется.

Примеры:

1. Селектор целого типа, список констант представлены перечнем констант:


 

 

 

Program Prim7;Var i,z:integer;BEGIN writeln(введите целое i); readln(i);

Case i of

1,2,5: writeln(i=,i, z=,i+10);

12,16: writeln(i=,i, z=,i+100);

31,35,46: writeln(i=,i, z=,i+1000);

else writeln(неправильно задано i); end;

readln; END.

2. Селектор целого типа список констант представлен диапазоном.

вводится целое i, определить, находится ли оно в диапазоне 1-10 или 11-100, или 101-1000, либо вне этих диапазонов.

Program Prim8;Var i:integer;BEGIN writeln(введите целое i); readln(i); Case i of

1..10: writeln( число в диапазоне 1-10);

11..100: writeln( число в диапазоне 11-100);

101..1000: writeln( число в диапазоне 101-1000);

else writeln( число вне диапазона 1-1000); end;

readln; END.

3. Селектор целого типа, список констант представлены перечнем констант и диапазоном:

 

Program Prim9; Var i:integer; x,m,a,b,c,d:real; BEGIN writeln(введите значение i); readln(i); writeln(введите значения x,m,a,b,c,d);

readln(x,m,a,b,c,d);

Case i of

1,2,4,8,11..20,24,28,30: writeln(y=,(x+1)/(sqr(x)+2)-ln(m)+2a/b);

31,45..55: writeln(y=,(sqr(a)+m)/sqrt(b+m)-3ab/c+d);

58,60,63..76,78,93,100: writeln(y=,sqr(x)-ax+sqr(sin(ax)-exp(x))

/(1-ln(sqr(x)-exp(х/2))));

else writeln(неправильно задано i); end;

readln; END.

4. Селектор знакового типа:

Program Prim10; Var name:char;

BEGIN writeln(введите шифр); readln(name);

Case name of

S,s: writeln( факультет самолето- и вертолетостроения);

D,d: writeln( факультет авиадвигателестороения);

Y,y: writeln( факультет систем управления);

L,l: writeln( факультет летательных аппаратов);

R,r: writeln( факультет радиотехнический );

M,m: writeln( факультет инженерно - менеджерский); Z,z: writeln( факультет заочного обучения);

else writeln(введенныйшифр не соответствует ни одному ,

из факультетов ХАИ); end; readln; END. 5. Селектор перечисляемого типа:

Program Prim11; Var season:(winter,spring,summer,autumn); rez:integer;BEGIN season:=spring; Writeln(результат ord(season)=,ord(season)); case season of winter: writeln(winter);

spring: writeln(spring);

summer: writeln(summer);

autumn: writeln(autumn);

end; readln;

END.

4. Циклические программы

 

Наиболее часто в практике программирования встречаются циклические программы. В циклических программах какой-либо алгоритм повторяется многократно, при этом один из параметров изменяется. Например, описанная в п. 3.3 программа Рrim 4 является классическим примером циклического алгоритма. Операторов цикла в Паскале три: for, repeat, while.

 

4.1. Оператор for

 

Оператор состоит из заголовка, в котором определяется порядок изменения переменной параметра цикла и тела цикла, являющегося многократно повторяющимся алгоритмом. Общий вид оператора:

for параметр цикла: = начальное значение to, конечное значение do {заголовок}; оператор; {тело цикла}. Этот оператор применяется, если начальное значение < конечного значения;

for параметр цикла:=начальное значение downto, конечное значение do; оператор; применяется, если начальное значение > конечного значения.

Пример: найти сумму квадратов целых чисел от 8 до 1.24.

Program Prim12; Var i,s:integer; BEGIN s:=0; for i:= 8 to 124 do s:=s+sqr(i); writeln(s=,s); readln;

END.

Работа программы. В разделе Var выделяется ячейка памяти с именем i и s для хранения величин. Поскольку в S мы должны накапливать сумму, то вначале занесем в S ноль. Затем заголовок цикла присваивает i=8. далее выполняется тело цикла: извлекается содержимое ячейки S (а там у нас 0) и к этому содержимому прибавляется sgr(i), т.е. i2=82. Результат присваивается ячейке S, т.е. в S теперь 82.

Проверяется, не стал ли параметр цикла больше конечного значения параметра 128. Это не произошло, поэтому i присваивается следующее значение равное 9 и вновь выполняется тело цикла, т.е. S:=82+92. Можно сказать так: S присвоить тому S, которое было раньше, + следующее i2. Так как цикл еще не закончился, то i станет равным 10, а S присвоится тому S, которое было раньше, т.е. 82+92, и к нему прибавится еще текущее i2, т.е. 102. Этот процесс повторяется до тех пор, пока параметр цикла не станет равным 124. Тогда в последний раз 1242 прибавляется к накапливаемой сумме.

Итак: выполнение цикла значения i значения S

1 8 82

2 9 82+92

3 10 82+92+102

116 117 82+92+102+…+1232

117 124 82+92+102+…+1232 +1242

При i=125 происходит выход из цикла и переход к оператору writeln (S= ,S);

Эта, каз