1 Курс «Паскаль. Программирование на языке высокого уровня»

Скачать презентацию 1 Курс «Паскаль. Программирование на языке высокого уровня» Скачать презентацию 1 Курс «Паскаль. Программирование на языке высокого уровня»

Osnovnye_konstrukcii_jazyka_Lekcii_3_4_5.ppt

  • Количество слайдов: 33

>1 Курс «Паскаль. Программирование на языке высокого уровня» 1 Курс «Паскаль. Программирование на языке высокого уровня»

>2 Управляющие операторы языка Рассматриваются управляющие операторы языка (ветвления, циклы, передача управления). 2 Управляющие операторы языка Рассматриваются управляющие операторы языка (ветвления, циклы, передача управления).

>3 Операторы ветвления 3 Операторы ветвления

>4 Разветвляющийся алгоритм — алгоритм, в котором в зависимости от условия выполняется либо одна, 4 Разветвляющийся алгоритм — алгоритм, в котором в зависимости от условия выполняется либо одна, либо другая последовательность действий.

>5 Разветвляющийся алгоритм полная форма если условие, то… иначе…  неполная форма если условие, 5 Разветвляющийся алгоритм полная форма если условие, то… иначе… неполная форма если условие, то...

>6 Условный оператор if  if a < 0 then b := 1; if 6 Условный оператор if if a < 0 then b := 1; if (a < b) and ((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 Типовые задачи: Нахождение значения функции Квадратное уравнение Принадлежность точки  указанной области 7 Типовые задачи: Нахождение значения функции Квадратное уравнение Принадлежность точки указанной области

>8 Пример1 Составить блок-схему алгоритма нахождения значения функции Y: 8 Пример1 Составить блок-схему алгоритма нахождения значения функции Y:

>9 НАЧАЛО X Y = X2  Y = X - 1  Y 9 НАЧАЛО X Y = X2 Y = X - 1 Y = 2*X Y КОНЕЦ

>10 Пример2 Составить блок-схему алгоритма решения квадратного уравнения  aX2+ bX + c = 10 Пример2 Составить блок-схему алгоритма решения квадратного уравнения aX2+ bX + c = 0

>11 Пример 3. Определить принадлежность точки указанной области program shot; var x, y: real; 11 Пример 3. Определить принадлежность точки указанной области program shot; var x, y: real; begin writeln(‘ Введите значения х и у:’); readln(x, y); if (sqr(x) + sqr(y) <= 1) or (x <= 0) and (y <= 0) and (y >= - x - 2) then writeln(‘ Точка попадает в область’) else writeln(‘ Точка не попадает в область’); end.

>12 Программа, которая по введенному значению аргумента вычисляет значение функции, заданной в виде графика 12 Программа, которая по введенному значению аргумента вычисляет значение функции, заданной в виде графика

>13 Описание алгоритма в неформальном словесном виде  Ввести значение аргумента х.  Определить, 13 Описание алгоритма в неформальном словесном виде Ввести значение аргумента х. Определить, какому интервалу из области определения функции оно принадлежит, и вычислить значение функции y по соответствующей формуле. Вывести значения х и y.

>14 Второй пункт алгоритма следует детализировать 14 Второй пункт алгоритма следует детализировать

>15 program calc_function_1; var x, y : real; begin     writeln(' 15 program calc_function_1; var x, y : real; begin writeln(' Введите значение аргумента'); readln(x); if x < –2 then y := 0; if (x >= –2) and (x < –1) then y := –x – 2; if (x >= –1) and (x < 1) then y := x; if (x >= 1) and (x < 2) then y := –x + 2; if x >= 2 then y := 0; writeln('Для x = ', x:6:2, ' значение функции y = ', y:6:2); end.

>16 По введенному значению аргумента вычислить значение функции, заданной в виде графика 16 По введенному значению аргумента вычислить значение функции, заданной в виде графика

>17 Запись условий Нужно сократить количество проверок,  т.е. использовать вложенные условия 17 Запись условий Нужно сократить количество проверок, т.е. использовать вложенные условия

>18 Оператор варианта case case выражение of  константы_1 : оператор_1;  константы_2 : 18 Оператор варианта case case выражение of константы_1 : оператор_1; константы_2 : оператор_2; константы_n : оператор_n; [ else оператор ] end;

>19 Пример 1 Program primer3; Uses crt; Var day: byte; Begin Wtiteln (‘введите номер 19 Пример 1 Program primer3; 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('Нажмите 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; end; end.

>21   Операторы цикла 21 Операторы цикла

>22 Структура оператора цикла Усл-е Начальные значения Тело цикла Модиф-я параметра 22 Структура оператора цикла Усл-е Начальные значения Тело цикла Модиф-я параметра

>23 Цикл с предусловием  while выражение do оператор program tabl_fun; var Xn, Xk, 23 Цикл с предусловием while выражение do оператор program tabl_fun; var Xn, Xk, dX, t, x, y : real; begin writeln('Введите Xn, Xk, dX, t'); readln(Xn, Xk, dX, t); writeln('| X | Y |'); x := Xn; while x <= Xk do begin y := t * x; writeln('|', x:9:2,' |', y:9:2,' |'); x := x + dX; end; writeln(' --------------------------- '); end. y = tx

>24 Цикл с постусловием  repeat  тело цикла until выражение  program square_root; 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. yn = ½ (yn–1 + x/yn–1)

>25 Цикл с параметром  for параметр := выражение_1 to выражение_2 do оператор for 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 := 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 27 Рекомендации не забывать о том, что если в теле циклов while и for требуется выполнить более одного оператора, нужно заключать их в блок; убедиться, что всем переменным, встречающимся в правой части операторов присваивания в теле цикла, до этого присвоены значения, а также возможно ли выполнение других операторов; проверить, изменяется ли в теле цикла хотя бы одна переменная, входящая в условие продолжения цикла; предусматривать аварийный выход из итеративного цикла по достижению некоторого предельно допустимого количества итераций.

>28   Процедуры передачи управления 28 Процедуры передачи управления

>29 Процедуры передачи управления break — завершает выполнение цикла, внутри которого записана; continue — 29 Процедуры передачи управления break — завершает выполнение цикла, внутри которого записана; continue — выполняет переход к следующей итерации цикла; exit — выходит из программы или подпрограммы, внутри которой записана; halt — немедленно завершает выполнение программы.

>30 Пример Написать программу вычисления значения функции sin с помощью степенного ряда с точностью 30 Пример Написать программу вычисления значения функции sin с помощью степенного ряда с точностью по формуле:

>31 program sinus; const MaxIter = 500;       31 program sinus; const MaxIter = 500; { максимально допустимое количество итераций } var x, eps : double; { аргумент и точность } c, y : double; { член ряда и его сумма } n : integer; { номер члена ряда } done : boolean; { признак достижения точности } begin writeln('Введите аргумент и точность:'); readln(x, eps);

>32 done := true;    c := x;    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 <= MaxIter 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 Использование оператора безусловного перехода оправдано, как правило, только в двух 33 Оператор перехода goto Использование оператора безусловного перехода оправдано, как правило, только в двух случаях: принудительный выход вниз по тексту программы из нескольких вложенных циклов или переключателей; переход из нескольких мест программы в одно (например, если перед выходом из программы необходимо всегда выполнять какие-либо действия).