Основы программирования на языке Паскаль
Методическое пособие - Компьютеры, программирование
Другие методички по предмету Компьютеры, программирование
° совпадает с какой-либо константой выбора, то выполняется оператор, стоящий после списка констант, в котором есть константа, совпадающая со значением выражения-селектора. если значение выражения-селектора не совпадает ни с одной из констант выбора, то выполняется оператор, следующий за 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);
Эта, каз