- •Оглавление
- •Учебное пособие
- •1. Структура программы
- •2. Константы и переменные
- •3. Основные типы данных
- •4. Выражения, операнды, операции
- •5. Совместимость и преобразование типов
- •6. Основные операторы языка
- •7.Массивы
- •8. Процедуры и функции
- •9. Интегрированная среда Turbo Pascal 7.0
- •Практикум
- •1. Основные конструкции языка Паскаль. Составление простейших программ
- •2. Условный оператор
- •3. Цикл с параметром
- •4. Циклы с условиями
- •5. Процедуры и функции
- •7. Одномерные массивы
- •8. Двумерные массивы
- •Вопросы для самопроверки
2. Условный оператор
Цель работы
Получение навыков в использовании условного оператора.
Пример. Даны целые числа а, b, с. Если abc, то все числа заменить их квадратами, если а>b>с, то каждое число заменить наименьшим из них, в противном случае сменить знак каждого числа.
Решение:
Условие задачи перепишем следующим образом:
а = a2,b=b2, с = с2, если а <=b<= с,
а = с, b= с, если а>b> с,
а = -a,b= -b, с =-с, в остальных случаях.
Program Example_3;
Var
a,b,c: Integer;
Begin
Writeln('Введите числа a, b, c');
Readln(a,b,c);
If (a<=b) And (b<=c) Then begin
a:=sqr(a);
b:=sqr(b);
c:=sqr(c);
End
Else If (a>b) And (b>c) Then Begin
a:=c;
b:=c;
End
Else Begin
a:=-a;
b:=-b;
c:=-c;
End;
Writeln(a:3,b:3,c:3);
Readln;
End.
3. Цикл с параметром
Цель работы
Получение навыков в использовании оператора For.
Пример. Из чисел от 10 до 99 вывести те, сумма цифр которых равна п (0<п< 18).
Решение:
Обозначим: k— это просматриваемое число,p1 — это первая цифра числаk, р2 — это вторая цифра числаk,s— это сумма цифр данного числаk. Числоkбудем выписывать только в том случае, когда сумма р1 и р2 будет равнаn.
Program Example_4;
Var
k, n,pi,p2,s:Integer;
Begin
Write('введите целое число ');
Readln(n); {вводим целое число}
For k:=10 To 99 Do begin
pl:=k Div 10; {выделяем первую цифру}
p2:=k Mod 10; {выделяем вторую цифру}
s:=pl+p2; {находим сумму цифр}
If s=n Then Writeln(k); {если сумма равна n, то выводим К}
End;
Readln;
End.
Упражнения
1. Сколько раз будут выполнены операторы из тела циклов в следующих фрагментах программ:
For k:=-l To 1 Do ...
For k:=10 To 20 Do ...
For k:=20 To 10 Do ...
k:=5; r:=15;
For i:=k+l To r-1 Do ...
k:=5;r:=15;
For i:=0 To k*r Do ...
k:=r;
For i:=k To r Do ...
2. Определите значение переменной sпосле выполнения следующих операторов:
s:=0; n:=10;
For i:=2 To n Do s:=s+100 Div i;
4. Циклы с условиями
Цели работы
Получение навыков в использовании циклов с предусловием и постусловием.
Получение навыков работы с вложенными циклами.
Пример 1. Цикл с предусловием. Напечатайте таблицу значений функции у =sin(x) на отрезке [0, 1] с шагом 0,1.
Решение. Постановка задачи наталкивает нас на использование цикла с вещественным параметром, но цикл с параметром предполагает использование переменной порядкового типа, а типRealтаковым не является.
Program Example_5;
Var
x: Real;
Begin
x:=0;
While x<=l Do Begin
Writeln (x:5:l,sin(x):7:3);
i:=i+0.1;
End;
Readln;
End.
Пример 2. Цикл с постусловием. Составить программу планирования закупки товара в магазине на сумму, не превышающую заданной величины.
Решение. Обозначим черезхиксоответственно цену и количество товара, черезр— заданную предельную сумму, черезs— общую стоимость покупки. Начальное значение общей стоимости покупки (s) равно нулю. Значение предельной суммы считывается с клавиатуры. Необходимо повторять запрос цены и количества выбранного товара, вычислять его стоимость, суммировать ее с общей стоимостью и выводить результат на экран до тех пор, пока она не превысит предельную суммур. В этом случае на экран надо вывести сообщение о превышении.
Program Example_6;
Var
x, k, p, s: Integer;
Begin
Writeln('Предельная сумма - ');
Readln(p);
s:=0;
Repeat
Writeln('Введите цену товара и его количество');
Readln(x, к) ;
s:=s+x*k;
Writeln('Стоимость покупки равна ',s);
Until s>p;
Writeln ('Суммарная стоимость покупки превысила предельную сумму');
End.
При описании циклов с постусловием необходимо принимать во внимание следующее:
перед первым выполнением цикла условие его окончания (или продолжения) должно быть определено;
тело цикла должно содержать хотя бы один оператор, влияющий на условие окончания (продолжения), иначе цикл будет бесконечным;
условие окончания цикла должно быть в результате выполнено.
Пример 5. Вложенные циклы. Даны натуральные числа n и k. Составить программу вычисления выражения 1k + 2k + ... + nk.
Решение. Для вычисления указанной суммы целесообразно организовать цикл с параметромi, в котором, во-первых, вычислялось бы очередное значениеу = ik и, во-вторых, осуществлялось бы накопление суммы прибавлением полученного слагаемого к сумме всех предшествующих (s = s + у).
Program Example_7;
Var
n, k, y, i, s, m: Integer;
Begin
Writeln('Введите исходные данные n и k');
Readln(n,к);
s:=0;
For i:=l To n Do Begin
y:=l;
For m:=l To к Do
y:=y*i; {нахождение степени к числа i}
s:=s+y;
End;
Writeln('Ответ: ',s);
End.
Таким образом, для решения задачи потребовалось организовать два цикла, один из которых пришлось поместить внутрь другого. Такие конструкции называют вложенными циклами.
Внутренний и внешний циклы могут быть любыми из трех рассмотренных ранее видов: циклами с параметром, циклами с предусловием или циклами с постусловием. Правила организации как внешнего, так и внутреннего циклов такие же, как и для простого цикла каждого из этих видов. Но при использовании вложенных циклов необходимо соблюдать следующее условие: внутренний цикл должен полностью укладываться в циклическую часть внешнего цикла.
Упражнения
Дана последовательность операторов:
а:=1;
b:=1;
while a+b<8 do begin
a:=a+l;
b:=b+2;
End;
s:=a+b;
Сколько раз будет повторен цикл и какими будут значения переменных а,b, иsпосле завершения этой последовательности операторов?
Какими будут значения переменных aиbпосле выполнения операторов:
а:=1;
b:=1;
While a<=3 Do
a:=a+l;
b:=b+l;
Определите значение переменной sпосле выполнения следующих операторов:
a) s:=0; i:=0; While i<5 Do Inc(i); s:=s+100 Div i;
6) s:=0; i:=l; While i>l Do Begin s:=s+100 Div i; dec(i) End;
Дана последовательность операторов, вычисляющих факториал fчислап:
k:=l; f:=0;
While k<n Do f=f*k
k:=k+l,
которая содержит пять ошибок. Найдите эти ошибки
Определите значение переменной sпосле выполнения следующих операторов:
s:=0; i:=l;
Repeat s:=s+5 Div i; i:=l-l; Until i<=l;