Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 8 лет назад пользователемОльга Самсонова
1 1 Глава 2 Управляющие конструкции 2.1 Оператор условной передачи управления Оператор условной передачи управления реализует конструкцию ветвления. Оператор – простой или составной оператор языка. Составной оператор – блок операторов в операторных скобках begin …end. Пример. Разработать программу, которая вводит число от 0 до 15 и выводит его шестнадцатеричный эквивалент, например: С
2 2 Программа отображения 16-тиричных эквивалентов Program Ex2_1; {$APPTYPE CONSOLE} uses SysUtils; Var Ch:char; n:Integer; Begin Write('Input n:'); ReadLn(n); if (n>=0)and(n<=15) then begin if n<10 then Ch:=chr(ord('0')+n) else Ch:=chr(ord('A')+n-10); Write ('n=',Ch); end else WriteLn('Error'); ReadLn; End. Начало n n>=0 и n<=15 n<10 Ch:=0+nCh:=A+n-10 Error Ch Конец да-нет да
3 3 Правило вложения if then else Ветвь else относится к ближайшему if. Для реализации варианта б используют begin …end: if then begin if then end else begin end
4 4 2.2 Оператор выбора Оператор реализует конструкцию выбора. Пример: case 1+2*j of 3: z:=sin(x); -1..1,10: z:=cos(x); else z:=0; end; Пример. Разработать программу, вычисляющую значения нескольких функций. Функция выбирается пользователем, который вводит ее код. Input cod: 1 – y=sin x 2 – y=cos x 3 – y=exp x
5 5 Схема алгоритма Начало Kod, x key:=true Kod y:=sin(x)y:=cos(x)y:=exp(x)key:=false Key да-нет Конец Errorx, y 2 1 3Иначе
6 6 Программа вычисления функции Program Ex2_2; {$APPTYPE CONSOLE} uses SysUtils; Var Kod:Integer; y,x:Single; Key:boolean; Begin WriteLn('Input Kod:'); WriteLn('1 - y=sin x'); WriteLn('2 - y=cos x'); WriteLn('3 - y=exp x'); ReadLn(Kod); WriteLn('Input x:'); ReadLn(x);
7 7 Программа вычисления функции (2) Key:=true; Case Kod of 1: y:=sin(x); 2: y:=cos(x); 3: y:=exp(x); else Key:=false; end; if Key then WriteLn( ' x =', x:10:6,' y =',y:10:6) else WriteLn('Error'); ReadLn; End.
8 8 2.3 Операторы организации циклов Циклы Счетные ИтерационныеПоисковые Цикл-для Цикл-пока Цикл-до
9 9 Цикл-пока Условие да нет Действие
10 10 Цикл-до Действие Условие да нет Условие да нет Действие «Цикл-до» можно реализовать через «цикл-пока»
11 11 Счетный цикл i:=1,k Действие i k да нет i :=i+1 i :=1 Действие Счетный цикл также можно реализовать через «цикл-пока»
12 12 «Накопление» суммы Суммирование натуральных чисел Найти сумму N натуральных чисел. Program Ex2_3; {$APPTYPE CONSOLE} uses SysUtils; Var i,N,S:Integer; Begin Write('Input N:'); ReadLn(N); S:=0; For i:=1 to N do S:=S+i; WriteLn('Summa=',S:6); ReadLn; End.
13 13 Суммирование ряда Определить сумму ряда S = 1 - 1/x + 1/x 2 - 1/x 3 + … с заданной точностью. R n = -R n-1 /x S N 1234 S N 1234 x>1x<1 S
14 14 Приведение алгоритма к структурному Начало x, Eps S=0 R=1 S=S+R |R|<=Eps нет да R=-R/x x, S Конец Начало x, Eps S=0 R=1 S=S+R |R|>Eps да нет R=-R/x x, S Конец S=S+R Начало x, Eps S=0 R=1 S=S+R |R|<=Eps да нет R=-R/x x, S Конец
15 15 Вариант а Program Ex2_4 а; {$APPTYPE CONSOLE} uses SysUtils; var S,R,X,eps:Single; Begin WriteLn('Input x and epsilon:'); ReadLn(X,eps); S:=1; {S:=0; & S:=S+R;} R:=1; while abs(R)>eps do begin R:=-R/X; S:=S+R; end; WriteLn('x=', x:6:2, ' S=', S:8:2,' R=', R:8:6); ReadLn; End. Начало x, Eps S=0 R=1 S=S+R |R|>Eps да R=-R/x x, S Конец S=S+R
16 16 Вариант б Program Ex2_4b; {$APPTYPE CONSOLE} uses SysUtils; var S,R,X,eps:Single; Begin WriteLn('Input x and epsilon:'); ReadLn(X,eps); S:=0; R:=1; repeat S:=S+R; R:=-R/X; until abs(R)<=eps; WriteLn('x=', x:6:2, ' S=', S:8:2,' R=', R:8:6); ReadLn; End. Начало x, Eps S=0 R=1 S=S+R |R|<=Eps да нет R=-R/x x, S Конец
17 17 Решение задач вычислительной математики Задача. Вычислить определенный интеграл функции f(x) на интервале [a,b] методом прямоугольников с точностью. Итак n S = f(x1) d + f(x2) d + f(x3) d+ …+ f(xn) d = d f(xi), где d=(b-a)/n. i=1 Увеличивая n, получаем приближения площади: S 1, S 2, S 3... Останавливаемся, когда |S k -S k+1 | <
18 18 Неформальное описание алгоритма Алгоритм: Шаг 1. Ввести a, b,. Шаг 2. Задать число прямоугольников n:=10. Шаг 3. Определить шаг d:=(b-a)/n. Шаг 4. Определить площадь фигуры S1. Шаг 5. Увеличить число прямоугольников вдвое n:=n*2. Шаг 6. Уменьшить шаг вдвое d:=d/2. Шаг 7. Определить площадь фигуры S2. Шаг 8. Если Разность площадей меньше, то перейти к шагу 11 Шаг 9. Запомнить новое значение площади S1:=S2. Шаг 10. Перейти к шагу 5. Шаг 11. Вывести S1. Конец.
19 19 Схема алгоритма (неструктурная и неэффективная) Начало n:=10 d:=(b-a)/n S1:=0 x:=a i:=1,n S1:=S1+f(x) x:=x+d S1:=S1*d S2:=0 x:=a i:=1,n S2:=S2+f(x) x:=x+d S2:=S2*d A A |S1-S2|< да нет S1:=S2 n:=2*n, d=d/2 Ввод a, b Вывод S2 Конец
20 20 Схема структурированная и сокращенная Начало n:=5 d:=(b-a)/n S2:=10 10 S2:=0 x:=a i:=1,n S2:=S2+f(x) x:=x+d S2:=S2*d A A |S1-S2|< да нет S1:=S2 n:=2*n Ввод a, b Вывод S2 Конец B B d:=d/2
21 21 Программа program Ex2_5; {$APPTYPE CONSOLE} uses SysUtils; Var a,b,S1,S2,d,eps,x:Single; n,i:Integer; Begin WriteLn('Input a, b and eps:'); ReadLn(a,b,eps); n:= 5; d:=(b-a)/n; S2:=1E+10; Начало n:=5 d:=(b-a)/n S2:=10 10 A Ввод a, b
22
22 Программа (2) repeat S1:=S2; n:=n*2; d:=d/2; S2:=0; x:=a; for i:=1 to n do begin S2:=S2+x*x-1; x:=x+d; end; S2:=S2*d; until abs(S2-S1)
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.