1 Курс « Паскаль. Программирование на языке высокого
osnovnye_konstrukcii_yazyka_lekcii_3_4_5.ppt
- Размер: 491.5 Кб
- Автор:
- Количество слайдов: 33
Описание презентации 1 Курс « Паскаль. Программирование на языке высокого по слайдам
1 Курс « Паскаль. Программирование на языке высокого уровня»
2 Управляющие операторы языка Рассматриваются управляющие операторы языка (ветвления, циклы, передача управления).
3 Операторы ветвления
4 Разветвляющийся алгоритм — алгоритм, в котором в зависимости от условия выполняется либо одна, либо другая последовательность действий.
5 Разветвляющийся алгоритм полная форма если условие, то… иначе… неполная форма если условие, то. . . Открыть зонт. Идет дождь данет Остаться дома. Идет дождь да Пойти гулять нет
6 Условный оператор if if a < 0 then b : = 1; if (a d) or (a = 0)) then inc(b) else begin b : = b * a; a : = 0 end; if a < b then if a < c then m : = a else m : = c else if b < c then m : = b else m : = c ; if выражение then оператор_1 [else оператор_2; ]
7 Типовые задачи: Нахождение значения функции Квадратное уравнение Принадлежность точки указанной области
8 Пример1 Составить блок-схему алгоритма нахождения значения функции Y : 2 , если 5 2 , если =
9 НАЧАЛО XX ДА X 5 ДА НЕТ Y = X — 1 Y = 2* X YY КОНЕЦ X = 3 ДА НЕТ
10 Пример2 Составить блок-схему алгоритма решения квадратного уравнения a. X 2 + b. X + c =
11 Пример 3. Определить принадлежность точки указанной области -2 -2 1 -2 -2 2 xy 2 0 0 1 22 xy y x илиyx program shot ; var x , y : real ; begin writeln (‘ Введите значения х и у: ’); readln(x, y); if (sqr(x) + sqr(y) <= 1) or (x = — x — 2) then writeln (‘ Точка попадает в область’) else writeln (‘ Точка не попадает в область’); end.
12 Программа, которая по введенному значению аргумента вычисляет значение функции, заданной в виде графика
13 Описание алгоритма в неформальном словесном виде 1. Ввести значение аргумента х. 2. Определить, какому интервалу из области определения функции оно принадлежит, и вычислить значение функции y по соответствующей формуле. 3. Вывести значения х и y.
14 Второй пункт алгоритма следует детализировать
15 program calc_function_1; var x, y : real; begin writeln(‘ Введите значение аргумента’); readln(x); if x = – 2) and (x = – 1) and (x = 1) and (x = 2 then y : = 0; writeln(‘Для x = ‘, x: 6: 2, ‘ значение функции y = ‘, y: 6: 2); end.
16 По введенному значению аргумента вычислить значение функции, заданной в виде графика
17 Запись условий Нужно сократить количество проверок, т. е. использовать вложенные условия
18 Оператор варианта case выражение of константы_1 : оператор_1 ; константы_2 : оператор_2 ; константы_n : оператор_n; [ else оператор ] end ;
19 Пример 1 Program primer 3; Uses crt; Var day: byte; Begin Wtiteln (‘ введите номер дня недели ’ ); Case day of 1. . 5: writeln(‘ рабочий день ’); 6: writeln(‘ суббота ’); 7: writeln(‘ воскресенье ’) else writeln ( ‘ ошибка ввода данных ’) end; readkey; end.
20 Пример 2 program cursor _ keys ; uses Crt; var key : char; begin writeln (‘Нажмите одну из курсорных клавиш ‘); key : = readkey; if ord(key) 0 then writeln(‘ обычная клавиша ‘) else begin key : = readkey; case ord(key) of 77: writeln(‘ стрелка вправо ‘); 75: writeln(‘ стрелка влево ‘); 0 72: writeln(‘ стрелка вверх ‘); 80: writeln(‘ стрелка вниз ‘); else writeln(‘ не стрелка ‘); end.
21 Операторы цикла
22 Структура оператора цикла Усл-е. Начальные значения Тело цикла Модиф-я параметра
23 Цикл с предусловием while выражение do оператор program tabl_fun; var Xn, Xk, d. X, t, x, y : real; begin writeln(‘ Введите Xn, Xk, d. X, t’); readln(Xn, Xk, d. X, t); writeln(‘| X | Y |’); x : = Xn ; while x <= Xk do begin y : = t * x; writeln('|', x: 9: 2, ' |', y: 9: 2, ' |'); x : = x + d. X; end; writeln(' ————— '); end. y = t x x n x k X Y
24 Цикл с постусловием repeat тело цикла until выражение program square_root; var X , eps , Yp, Y : real; begin repeat writeln(‘Введите аргумент и точность : ‘); readln(X, eps); until (X > 0) and (eps > 0); Y : = 1; repeat Yp : = Y; Y : = (Yp + X / Yp) / 2; until abs(Y — Yp) < eps; writeln('Корень из ', X: 6: 3, ' с точно c тью ', eps : 7: 5, 'равен ', Y: 9: 5); end. y n = ½ (y n– 1 + x/y n– 1 )
25 Цикл с параметром for параметр : = выражение_1 to выражение_2 do оператор for параметр : = выражение_2 downto выражение_1 do оператор var i : integer ; begin for i : = 1 to 10 do writeln ( i ) end.
26 Примеры цикла с параметром var i , sum : integer ; begin sum : = 0; for i : = 10 downto 1 do begin writeln(i); inc(sum, i) end; writeln(sum); end. var ch : char; begin for ch : = ’a’ to ’z’ do writeln(ch) end.
27 Рекомендации не забывать о том, что если в теле циклов while и for требуется выполнить более одного оператора, нужно заключать их в блок ; убедиться, что всем переменным, встречающимся в правой части операторов присваивания в теле цикла, до этого присвоены значения, а также возможно ли выполнение других операторов; проверить, изменяется ли в теле цикла хотя бы одна переменная, входящая в условие продолжения цикла; предусматривать аварийный выход из итеративного цикла по достижению некоторого предельно допустимого количества итераций.
28 Процедуры передачи управления
29 Процедуры передачи управления break — завершает выполнение цикла, внутри которого записана; continue — выполняет переход к следующей итерации цикла; exit — выходит из программы или подпрограммы, внутри которой записана; halt — немедленно завершает выполнение программы.
30 Пример Написать программу вычисления значения функции sin с помощью степенного ряда с точностью по формуле: 3 5 7. . . 3! 5! 7! x x x y x 2 1 1 2 1 ! n n n x C n 2 1 2 2 1 n n x C C n n ||n.
31 program sinus ; const Max. Iter = 500; { максимально допустимое количество итераций } var x , eps : double ; { аргумент и точность } c , y : double ; { член ряда и его сумма } n : integer ; { номер члена ряда } done : boolean ; { признак достижения точности } begin writeln (‘Введите аргумент и точность: ‘); readln(x, eps);
32 done : = true ; c : = x ; y : = c ; n : = 1; while abs(c) > eps do begin c : = — c * sqr ( x ) / 2 / n / (2 * n + 1) ; y : = y + c ; inc ( n ); if n <= Max. Iter then continue; writeln ('Ряд расходится!'); done : = false ; break end; if done then writeln ('Аргумент: ', x : 10: 6, #13#10, 'Значение функции: ', y : 10: 6, #13#10, 'Вычислено с точностью ', eps : 8: 6, ' за ', n , ' итераций'); end.
33 Оператор перехода goto Использование оператора безусловного перехода оправдано, как правило, только в двух случаях : принудительный выход вниз по тексту программы из нескольких вложенных циклов или переключателей; переход из нескольких мест программы в одно (например, если перед выходом из программы необходимо всегда выполнять какие-либо действия).