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

Содержание

Слайд 2

3 Основы программирования на языке Паскаль 100 Программирование разветвляющегося вычислительного процесса

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

Программирование разветвляющегося вычислительного процесса

(р.в.п.)
Участок алгоритма, состоящий из блока выбора решения и связанных с ним блоков по направлениям «да» и «нет», будем называть разветвленным (структурой ветвления).
Вычислительный процесс, в котором естественный порядок выполнения действий нарушается в результате проверки некоторого условия и образования двух ветвей дальнейших действий, называется разветвляющимся.
Различают два вида условий – простые и составные.
Простым условием (выражением сравнения) называется выражение, составленное из двух арифметических выражений или двух строковых выражений (иначе их еще называют операндами), связанных одной из операций отношения:
< - меньше, чем...
> - больше, чем...
<= - меньше, чем... или равно
>= - больше, чем... или равно
<> - не равно
= - равно
Например, простыми отношениями являются следующие:
x-y>10; k<=sqr(c)+abs(a+b); 9<>11; ‘мама’<>‘папа’.
Слайд 3

3 Основы программирования на языке Паскаль 101 Составные логические выражения образуются

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

Составные логические выражения образуются

из простых выражений с помощью логических операций not, and, or , xor.
Логические операции, операции отношения и арифметические операции часто встречаются в одном выражении. При этом отношения, стоящие слева и справа от знака логической операции, должны быть заключены в скобки, поскольку логические операции имеют более высокий приоритет. Вообще принят следующий приоритет операций:
not
and, *, /, div, mod
or, +, -
операции отношения.
Примечание. Логическую операцию and еще называют логическим умножением, а логическую операцию or - логическим сложением.
Кроме того, порядок выполнения операций может изменяться скобками. Например, в логическом выражении расставим порядок действий
4 3 2 1
A or B and not (A or B)
Сначала выполняется заключенная в скобки операция or, а затем операции not, and, or. Если подставить вместо переменных А и В значения True и False, то, используя уже рассмотренный порядок действий, получим значение всего выражения равное True.
Определите порядок выполнения операций в выражении ( a + b > c) and (b + c < a)
В смешанных выражениях тип результата определяется типом последней операции
Слайд 4

3 Основы программирования на языке Паскаль 102 Таблица истинности логических операций

3 Основы программирования на языке Паскаль 102 Таблица истинности логических операций a,

b – переменные логического типа
Слайд 5

3 Основы программирования на языке Паскаль 103 В общем случае полная

3 Основы программирования на языке Паскаль 103
В общем случае полная

форма конструкции условного оператора имеет вид:
if <логическое выражение>
then
<оператор 1>
else
<оператор 2>;
Условный оператор работает по следующему алгоритму.
Сначала вычисляется значение логического выражения, расположенного за служебным словом IF. Если его результат истина, выполняется <оператор 1>, расположенный после слова THEN, а действия после ELSE пропускаются; если результат ложь, то, наоборот, действия после слова THEN пропускаются, а после ELSE выполняется <оператор 2>.
Слайд 6

3 Основы программирования на языке Паскаль 104 Если в качестве оператора

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

Если в качестве оператора

должна выполниться серия операторов, то они заключаются в операторные скобки begin-end. Конструкция Begin ... End называется составным оператором.
if <логическое выражение>
then
begin
оператор 1;
оператор 2;
...
end
else
begin
оператор 1;
оператор 2;
...
end;
Составной оператор - объединение нескольких операторов в одну группу. Группа операторов внутри составного оператора заключается в операторные скобки (begin-end).
begin
<оператор 1>;
<оператор 2>;
end;
Слайд 7

3 Основы программирования на языке Паскаль 105 Можно также использовать и

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

Можно также использовать и

сокращенную (неполную) форму записи условного оператора. Эта форма используется тогда, когда в случае невыполнения условия ничего делать не надо.
Неполная форма условного оператора имеет следующий вид:
if <логическое выражение>
then <оператор> ;
Тогда если выражение, расположенное за служебным словом IF , в результате дает истину, выполняются действия после слова THEN, в противном случае эти действия пропускаются.
Пример 3. Составить программу, которая, если введенное число отрицательное меняет его на противоположное.
Program Chisla;
Var x : integer; {вводимое число}
Begin
writeln(‘Введите число ‘); {вводим целое число} readln(x);
if x<0 then x:=-x;
writeln (x);
readln;
End.
В этом примере использована сокращенная форма оператора IF.
Слайд 8

3 Основы программирования на языке Паскаль 106 Пример 4. Вывести на

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

Пример 4. Вывести на

экран большее из трех данных чисел.
Program Example4;
Var
a, b, c, m : integer; {вводимые числа}
Begin
writeln(‘Введите 3 числа ‘); {вводим два целых числа через пробел}
readln( a, b, c );
М:=а; {назначили а большим числом}
if b > M then M : = b;
if c > M then M: = c;
writeln (m); {выводим m}
readln;
End.
Пример 5. Предусмотреть исключение всех случаев возникновения неопределенности при вычислении функции по заданной формуле:
Функция не определена при
Для исключения неопределенностей нужно перед вычислением значения функции организовать проверку на выход аргумента за пределы области существования функции, вывести на печать величины, приводящие к неопределенности, и не выполнять счет.
Слайд 9

3 Основы программирования на языке Паскаль 107 Рис. 3. Фрагмент блок-схемы

3 Основы программирования на языке Паскаль 107
Рис. 3. Фрагмент блок-схемы

устранения неопределенностей из примера 3
В общем случае неопределенности могут возникнуть при вычислении функций:
при x = 0 , где x – любое выражение
при x < 0
Ln x при x ≤ 0
Слайд 10

3 Основы программирования на языке Паскаль 108 Фрагмент программы с исключением

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

Фрагмент программы с исключением

неопределенности (рис.3)
……………………………
IF a*x-b<=0 THEN WriteLn (‘ a*x-b<=0 ‘) ELSE
Begin
IF 2.5*b*x=0 THEN WriteLn (‘2.5*b*x=0 ‘ )
ELSE
Begin
Y: =(ln(a*x-b)+c)/( 2.5*b*x);
WriteLn (‘y=‘; y:8:3);
End;
End;
……………………………
Слайд 11

3 Основы программирования на языке Паскаль 109 Вложенные условные операторы При

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

Вложенные условные операторы
При решении

задач часто приходится рассматривать не два, а большее количество вариантов. Это можно реализовать, используя несколько условных операторов. В этом случае после служебных слов Then и Else записывается новый условный оператор. Рассмотрим пример.
Пример 6. Вычислить значение функции:
у=
Слайд 12

3 Основы программирования на языке Паскаль 110 Тогда фрагмент программы для

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

Тогда фрагмент программы для

решения этой задачи будет выглядеть так:
………………………………….
if х>0
then
у := х-12
else
if х=0
then
у := 5
else
у := sqr(x);
Слайд 13

3 Основы программирования на языке Паскаль 111 Итак, когда оператор if

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

Итак, когда оператор if

появляется внутри другого оператора if, они считаются вложенными. Такое вложение используется для уменьшения числа необходимых проверок. Этот метод часто обеспечивает большую эффективность, однако одновременно он уменьшает наглядность программы. Не рекомендуется использовать более одного-двух уровней вложения if. За вторым уровнем вложения становится трудно восстановить последовательность проверки условий каждым условным оператором.
Если часть else используется во вложенных if, то каждое else соответствует тому if, которое ему непосредственно предшествует. Таким образом, при определении последовательности выполнения фрагментов нет двусмысленности.
Слайд 14

3 Основы программирования на языке Паскаль 112 Оператор выбора case Оператор

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

Оператор выбора case
Оператор If

позволяет программе выполнять переходы на ту или иную ветвь по значению логического условия. Используя несколько операторов If, можно производить ветвление по последовательности условий. В приведенном фрагменте показано, как при помощи ряда операторов If можно преобразовать целое число (в диапазоне 0-9) к его словесному представлению:
if Ziphra = 0
then
write (‘Нуль‘);
if Ziphra = 1
then
write (‘Единица‘);
if Ziphra = 2
then
write (‘Два‘);
и т.д.
Слайд 15

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

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

Оператор выбора позволяет выбрать

одно из нескольких возможных продолжений программы. Параметром, по которому осуществляется выбор, служит так называемый ключ выбора (или селектор) – выражение порядкового типа.
Общая форма записи следующая:
case селектор of
<значение1> : <оператор1>;
<значение2> : <оператор2>;
. . . . . . . . . . . . . . . . . . . . . .
<значениеN> : <операторN>
[else <оператор(N+1)>;]
end;.
Слайд 16

3 Основы программирования на языке Паскаль 114 Здесь значение1, значение2,……- константа

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

Здесь значение1, значение2,……- константа

или список констант того же порядкового типа, что и селектор;
<оператор1>, <оператор2>,……..- операторы, чаще всего составные.
Оператор выбора работает следующим образом. Сначала вычисляется значение выражения-селектора, стоящее после зарезервированного слова case, а затем выполняется оператор (или составной оператор), соответствующий результату вычисления выражения.
Может случиться, что в списке выбора не окажется константы равной вычисленному значению ключа.
В этом случае управление передается оператору, стоящему за словом ELSE. Если слово ELSE отсутствует, то управление передается следующему за оператором case оператору.
Слайд 17

3 Основы программирования на языке Паскаль 115 Например, ……………………………………………… case NUMBER

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

Например,
………………………………………………
case NUMBER mod 2

of
0 : writeln (NUMBER, ‘- число четное‘)
else : writeln (NUMBER, ‘- число нечетное‘);
end;
Если один оператор выполняется при нескольких значениях, то их можно перечислить в списке через запятую.
Var MONTH : byte;
……………………………..
case MONTH of
1, 2, 3 : writeln (‘Первый квартал‘);
4, 5, 6 : writeln (‘Второй квартал‘);
7, 8, 9 : writeln (‘Третий квартал‘);
10, 11, 12 : writeln (‘Четвёртый квартал‘);
end;
Слайд 18

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

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

Оператором может являться не

только простой оператор, но также составной и пустой операторы.
……………………………………
case CODE of
1 : for i := 1 to 5 do
writeln (‘*******‘);
2 : begin {составной оператор}
x:=sqr(y-1);
writeln (x);
end;
3 : {пустой оператор}
end;
Слайд 19

3 Основы программирования на языке Паскаль 117 Если оператор должен выполняться

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

Если оператор должен выполняться

при нескольких значениях селектора следующих друг за другом, образуя некоторый промежуток, то это можно записать в более сжатой форме. Например,
var symvol: char;
……………………..
case symvol of
‘0’..’9’ : writeln (‘Это цифра‘);
‘A’..’Z’: writeln (‘Это прописная буква‘);
‘a’..’z’: writeln (‘Это строчная буква‘);
else writeln (‘Это другой символ‘);
end;
……………………..
Слайд 20

3 Основы программирования на языке Паскаль 118 Пример Написать программу преобразования

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

Пример Написать программу преобразования

цифр в слова.
Program Number1;
Var
a, b, c : integer;
Begin
writeln(‘Введите цифру ‘);
readln(a);
if (a<0) or (a>9)
then
writeln (‘Это число не является цифрой‘)
else
case a of
0 : writeln (‘ноль‘);
1 : writeln (‘один‘);
2 : writeln (‘два‘);
3 : writeln (‘три‘);
4 : writeln (‘четыре‘);
5 : writeln (‘пять‘);
6 : writeln (‘шесть‘);
7 : writeln (‘семь‘);
8 : writeln (‘восемь‘);
9 : writeln (‘девять‘);
end;
readln;
End.
Слайд 21

3 Основы программирования на языке Паскаль 119 Программирование циклических вычислительных процессов

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

Программирование циклических вычислительных процессов
Очень

многие алгоритмы, выполнение которых поручается компьютеру, по своей природе являются циклическими. И это не случайно, потому что человек обычно поручает машине рутинную работу, где нужно много считать, и счет производится по некоторым одинаковым правилам.
Цикл – это последовательность операторов, которая может выполняться более одного раза.
Циклический алгоритм – это алгоритм, содержащий один или несколько циклов.
Параметр цикла – это простая переменная, которая изменяется при каждом повторении цикла по некоторому закону и управляет работой цикла.
Цикл предусматривает 4 основных действия:
Присваивание начального значения параметру цикла;
Рабочий участок или тело цикла, содержащий действия, повторяющиеся несколько раз;
Изменение параметра цикла;
Проверка условия окончания цикла и при невыполнении его переход к началу тела цикла.
Различают циклы с известным числом повторений (цикл со счетчиком) и итерационные (с пред- и постусловием).
Слайд 22

3 Основы программирования на языке Паскаль 120 Цикл со счетчиком Телом

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

Цикл со счетчиком
Телом

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

3 Основы программирования на языке Паскаль 121 Здесь i— параметр цикла,

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

Здесь i— параметр цикла,

изменяющийся в цикле; i1, i2 — выражения, обозначающие начальное, конечное значение параметра цикла. Шаг изменения параметра цикла равен 1, если в заголовке цикла стоит To; и –1 — при DownTo (здесь рассматривается случай, когда I, I1, i2 переменные и выражения целого типа). Если тело цикла состоит из одного оператора, то составной оператор begin…..end не нужен.
В общем случае i, i1, i2 – переменные порядкового типа
Порядок выполнения цикла с шагом 1 следующий:
вычисляются значения начального и конечного значений параметра цикла i1, i2;
параметр i принимает начальное значение i1;
если i меньше или равно конечному значению, исполняется тело цикла;
к значению параметра цикла i прибавляется 1, т.е. i := i + 1; проверяется условие i ≤ i2 (для отрицательного шага условие i ≥ i2) и при его выполнении цикл повторяется.
Выход из цикла осуществляется, если i >i2 ( i< i2 для H=–1), и выполняется оператор, следующий за оператором цикла. Если i1 > i2 (или i1 < i2 для H=–1), то тело цикла не выполняется ни разу.
Если в операторе цикла с параметром начальное или конечное значение параметра заданы переменными или выражениями, то значения этих переменных должны быть определены в программе до оператора цикла.
Слайд 24

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

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

Рассмотрим примеры использования

оператора цикла for.
Пр.1 Пусть требуется вывести на экран таблицу квадратов N целых чисел: Var i, n : integer;
Begin
readln( n );
for i : = 1 to n do writeln (I : 4, i * i : 8) ;
Пр.2 Подсчитать сумму 20 вводимых чисел:
S: = 0;
for i : = 1 to 20 do begin readln(x); S: = S + x; end; write (S:6:2); В некоторых случаях бывает удобно, чтобы <параметр цикла> принимал последовательные, но не возрастающие, а убывающие значения. В этом случае надо использовать оператор цикла с параметром следующего вида:
for <параметр цикла> := downto do  <оператор>;
Пр.3 Пусть требуется вывести на экран последовательность букв от M до A и их номера: Var Ch : char;
begin
for Ch := ‘M' downto ‘A' do writeln (Ch:2, ‘ номер-’, ord( ch) :4);
Слайд 25

3 Основы программирования на языке Паскаль 123 Рекомендации по программированию цикла

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

Рекомендации по программированию цикла

for :
Не следует внутри цикла изменять параметр цикла;
Не следует внутри цикла изменять начальное и конечное значения параметра цикла с помощью операторов присваивания или ввода;
Значение параметра цикла не определено после выхода из цикла;
Нельзя перейти к оператору тела цикла по оператору goto <метка>, минуя заголовок цикла;
Допускается досрочный выход из цикла с использованием процедур:
Break - реализует выход из цикла любого типа;
Continue - осуществляет переход на следующую итерацию цикла,
игнорируя оставшиеся до конца тела цикла операторы;
Halt (<код, завершения>) - осуществляет выход из программы, возвращая
операционной системе заданный код завершения. Считается, что программа
завершилась нормально, если код завершения равен нулю. Возвращение
кода завершения, отличного от нуля, обычно означает, что программа завершена
по обнаружении каких-либо ошибок. Коды завершения назначаются
программистом, а информация о них помещается в программную документацию;
Exit- осуществляет выход из подпрограммы. Если процедура
использована в основной программе, то выполняется выход из программы
Слайд 26

3 Основы программирования на языке Паскаль 124 Цикл с предусловием while

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

Цикл с предусловием
while B

Do
Begin
тело цикла
End;
Цикл с предусловием предписывает многократное выполнение одной и той же последовательности действий с проверкой истинности условия перед телом цикла.
Выполнение оператора заключается в многократном повторении двух действий:
• вычислении логического выражения B (условия), записанного в заголовке цикла;
• выполнении оператора, являющегося телом цикла. Эти действия повторяются, пока выражение в заголовке не станет ложным. Проверка истинности выражения производится до первого выполнения оператора, то есть, если выражение сразу ложно, то тело цикла не выполнится ни разу.
В качестве примера рассмотрим фрагмент программы, который выводит на экран натуральные числа от 1 до некоторого N.
Write ('Введите число > '); readln (n); i := 0; while (i <= n) do    begin i := i + 1; writeln (i) end;
Слайд 27

3 Основы программирования на языке Паскаль 125 Пример5: Вывести на экран

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

Пример5: Вывести на экран

в одну строку через один пробел десять значений целого типа, начиная с единицы, в возрастающем порядке. Алгоритм решения представлен на рисунке.
Текст программы на Паскале:
Const k = 10; Var x: integer;
begin x : = 1;
while x <= k do
begin
write(x,' '); x: = x + 1;
end;
readln;
end.
Слайд 28

3 Основы программирования на языке Паскаль 126 Цикл с постусловием Оператор

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

Цикл с постусловием
Оператор

цикла repeat в Паскале также используется в циклах с неизвестным числом повторений и с известным числом повторений. Вид оператора:
repeat s until b;
Здесь s – тело цикла,
b - логическое выражение.
При выполнении оператора
сначала выполняется тело цикла,
а затем проверяется логическое условие.
Таким образом, обеспечивается,
по меньшей мере, одно выполнение тела цикла.
Цикл повторяется, пока логическое выражение ложно. Когда оно становится истинным, происходит выход из цикла.
Слайд 29

3 Основы программирования на языке Паскаль 127 Пример 6: Составить программу

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

Пример 6: Составить программу

определения k, при котором x/k становится меньше или равен а, где k = 1, 2, 3… . Алгоритм решения представлен на рисунке.
Текст программы на Паскале:
Var x, a : real; k : integer;
begin
write (‘x=’); readln (x); {ввод значения х}
write (‘a=’); readln (a); {ввод значения a}
k : = 0; {начальное значение k перед циклом}
repeat {начало цикла}
k : =k+1; {увеличение k в цикле}
until x/k <= a; {проверка логического условия}
writeln(‘k=’,k); {вывод найденного значения} k на экран}
readln;
end.
Слайд 30

3 Основы программирования на языке Паскаль 128 Выполним построение математической модели

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

Выполним построение математической модели

и алгоритма решения задачи табулирования функции.
Пример 7. Получить таблицу значений функции y = f ( x ) для аргумента х, изменяющегося от a до b с шагом h (если a>b, то h должен быть меньше нуля, т.е. отрицательным).
а) Обозначение переменных:
x – аргумент функции; y – значение функции;
а – начальное значение интервала изменения аргумента;
b – конечное значение интервала изменения аргумента;
h – шаг изменения аргумента на интервале;
i – счётчик цикла; n – число повторений цикла.
б) Тип переменных:
i, n – простые переменные целого типа;
x, y, a, b, h – простые переменные вещественного типа.
в) Классификация по группам:
исходные данные: a, b, h;
промежуточные результаты: i, n; результаты: x, y.
Слайд 31

3 Основы программирования на языке Паскаль 129 Блок-схема цикла с постусловием к примеру 7

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

Блок-схема цикла с постусловием

к примеру 7
Слайд 32

3 Основы программирования на языке Паскаль 130 Program primer_7_1; Uses CRT;

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

Program primer_7_1;
Uses CRT;
Var x,

y, a, b, h: real;
begin
write (‘a=’); readln (a); {ввод значения a}
write (‘b=’); readln (b); {ввод значения b}
write (‘h=’); readln (h); {ввод значения h}
Clrscr; {очистка экрана}
writeln( ‘ Таблица’);
writeln( ‘ x y’); {вывод заголовка таблицы}
writeln(‘------------------------------------------------------’); {вывод горизонтальной черты}
x : = a; {начальное значение x перед циклом}
repeat {начало цикла}
y : =x * sin( x ); {вычисление функции в цикле}
Writeln( x :8:3, y:14:3); {вывод строки таблицы на экран}
x:= x +h; {изменение параметра x}
until x > b; {проверка логического условия}
writeln(‘------------------------------------------------------’); {вывод горизонтальной черты}
readln;
end.
Слайд 33

3 Основы программирования на языке Паскаль 131 Блок-схема цикла со счетчиком i к примеру 7

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

Блок-схема цикла со счетчиком

i к примеру 7
Слайд 34

3 Основы программирования на языке Паскаль 132 Program primer_7_2; Uses CRT;

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

Program primer_7_2;
Uses CRT;
Var x,

y, a, b, h: real;
i, n : integer;
begin
write (‘a =’); readln (a); {ввод значения a}
write (‘b =’); readln (b); {ввод значения b}
write (‘h =’); readln (h); {ввод значения h}
Clrscr; {очистка экрана}
writeln( ‘ Таблица’);
writeln( ‘ x y’); {вывод заголовка таблицы}
writeln(‘------------------------------------------------------’); {вывод горизонтальной черты}
x : = a; {начальное значение x перед циклом}
N : = trunc( (b –a) / h ) + 1; {вычисление количества строк таблицы (повторений цикла)}
for i : = 1 to n do {начало цикла}
begin
y : =x * sin( x ); {вычисление функции в цикле}
Writeln( x :8:3, y:14:3); {вывод строки таблицы на экран}
x:= x +h; {изменение параметра x}
end;
writeln(‘------------------------------------------------------’); {вывод горизонтальной черты}
readln;
end.
Слайд 35

3 Основы программирования на языке Паскаль 133 Пример 8. Первоначальная стоимость

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

Пример 8. Первоначальная стоимость

оборудования производственного цеха составляет R0 руб. Ежегодно на сумму D руб. закупали новое оборудование. Ежегодная амортизация (уменьшение стоимости) имеющегося оборудования составляет Р% от его стоимости. Составить алгоритм для вычисления стоимости оборудования цеха RN через N лет после ввода его в эксплуатацию согласно формуле ,
где RN - стоимость оборудования в N-й год; где RN-1 - стоимость оборудования в предыдущем году. Получить таблицу результатов для N=1, 2,…10.
а) Обозначение переменных:
R0 – первоначальная стоимость оборудования;
D – стоимость ежегодно закупаемого нового оборудования;
Р – процент ежегодной амортизации оборудования;
N – счётчик цикла, количество лет эксплуатации оборудования.
б) Тип переменных:
P, N – простые переменные целого типа;
R0, D – простые переменные вещественного типа.
в) Классификация по группам:
исходные данные: R0, D, P; результаты: N, R0.
г) расчетные формулы в последовательности их выполнения:
N=1
N=N+1
Если N≤10, то повторять действия, иначе выход из цикла
Слайд 36

3 Основы программирования на языке Паскаль 134 Блок-схема цикла со счетчиком N к примеру 8

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

Блок-схема цикла со счетчиком

N к примеру 8
Слайд 37

3 Основы программирования на языке Паскаль 135 Пример 9 Разработать программу,

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

Пример 9
Разработать программу,

которая определяет первый отрицательный элемент последовательности значений функции sin х при заданных шаге h и диапазоне изменения х [а, Ь].
Вариант с использованием п р о ц е д у р ы break:
Program primer_9;
var i, n : integer; x, y, a, b, h : real;
Begin
Write (‘Введите a, b, h:');
Readln(a, b, h);
n:=round((b-a)/ h + 1.5); {определяем количество элементов}
x := a;
for i : = 1 to n do
begin
y: =sin(x);
If y < 0 then
begin
Writeln( ‘y= ', y:8:6, ' при x= ‘, x:6:3 );
break; {осуществляем досрочный выход из цикла}
end;
end;
{место, куда будет передано управление при выполнении break}
If y> 0 then WriteLn ('Элемент не найден,');
Readln;
End.
Слайд 38

3 Основы программирования на языке Паскаль 136 Для операторов repeat и

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

Для операторов repeat и

while значения параметра цикла (переменной, входящей в условие) должны изменяться в теле цикла, иначе цикл никогда не завершится (ситуация зацикливания).
Пр.4 s : = 0; x: = 0;
While x < 10 do begin s : = s + x; x : = x – 1; end;
Пр.5 Найти произведение четных чисел, меньших n:
Readln( n );
p: = 1; k : = 2;
Repeat
p: = p * k;
k : = k + 2;
Until k > n;
Слайд 39

3 Основы программирования на языке Паскаль 137 Циклы с операторами repeat

3 Основы программирования на языке Паскаль 137
Циклы с операторами repeat

и while часто заменяют в Паскале конструкцию
If <условие> then goto , особенно, если переход по метке должен осуществляться к операторам, расположенным выше. Такие конструкции в Паскале крайне нежелательны.
Пр.6 Реализовать фрагмент контроля правильности ввода исходных данных.
Repeat
Write( ‘введите a, b’);
Readln (a, b); Writeln( ‘a=‘, a :6:2, ‘b=‘, b :6:2);
Readln (‘данные введены верно? (1/0’ );
Readln (с);
Until с = 1;
К циклам с неизвестным числом повторений относятся, в частности, итерационные циклы, в которых происходит последовательное приближение к результату с заданной точностью.
Слайд 40

3 Основы программирования на языке Паскаль 138 Пример 10. Вычислить сумму

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

Пример 10.
Вычислить сумму бесконечного

ряда
x – x2/ 2 + x3/ 3 – x4/ 4 + x5/ 5 - …………..+ xi / i - ……….
с заданной точностью ε для | x | < 1. Вычисление суммы заканчивается, когда очередной член ряда становится по модулю меньше точности.
Математическая постановка
а) Обозначение переменных:
x – аргумент; s – значение суммы;
e – значение точности (погрешности);
m – член ряда;
p – промежуточная переменная;
i – номер члена ряда;
б) Тип переменных:
i – простая переменная целого типа;
x, s, e, m, p – простые переменные вещественного типа.
в) Классификация по группам:
исходные данные: x, e;
промежуточные результаты: i, p, m;
результат: s.
Слайд 41

3 Основы программирования на языке Паскаль 139 г) запись расчетных формул:

3 Основы программирования на языке Паскаль 139
г) запись расчетных

формул:
S = 0
m = 1
p = -1
i = 1
если abs (m) > e выполнить действия
p = - p * x
m = p / i
s = s + m
i = i + 1
Слайд 42

3 Основы программирования на языке Паскаль 140 блок-схема алгоритма примера 9

3 Основы программирования на языке Паскаль 140 блок-схема алгоритма примера

9
Слайд 43

3 Основы программирования на языке Паскаль 141 Program primer_10; Uses CRT;

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

Program primer_10;
Uses CRT;
Var x,

s, e, m, p: real;
i : integer;
begin
Clrscr; {очистка экрана}
write (‘x=’); readln (x); {ввод значения x}
write (‘e=’); readln (e); {ввод значения точности}
S : = 0;
m : = 1;
p := -1;
i : = 1; {начальные значения перед циклом}
while abs (m) > e do {начало цикла}
begin
p := - p * x; m : = p / i ; { вычисление члена ряда}
s : = s + m;
i : = i + 1;
end;
Writeln ( ‘s = ‘, s : 14 :8); {вывод суммы на экран}
Writeln ( ‘количество членов ряда = ’, i );
readln;
end.