Содержание
- 2. Операторы ветвления: if и case. Операторы цикла: for, while и repeat. Прерывание циклов: break, continue и
- 3. 1. Операторы ветвления
- 4. К операторам, позволяющим из нескольких возможных вариантов выполнения программы (ветвей) выбрать только один, относятся if и
- 5. Полный условный оператор if Формат: if then else ; Схема выполнения оператора: Сначала вычисляется значение -
- 6. Полный условный оператор if Примеры: if a>=b then Max:=a else Max:=b; If (х 5) then begin
- 7. Неполный условный оператор if Формат: if then ; Схема выполнения оператора: Если условие истинно, то выполняется
- 8. Неполный условный оператор if Примеры: If F mod 3 = 0 then write(i); If (х 5)
- 9. В операторе if по обеим ветвям (then и else) может выполняться только один оператор! При необходимости
- 10. В случае, когда каждый оператор if имеет собственную else-ветвь, все будет в порядке. А вот если
- 11. Компилятор языка Паскаль всегда считает, что else относится к самому ближнему оператору if. Таким образом, если
- 12. Для того чтобы избежать подобных ошибок, стоит всегда (или по крайней мере при наличии нескольких вложенных
- 13. Итак, исходный вариант нужно переписать следующим образом: if i>0 then if s>2 then s:= 1 else
- 14. Program SquareEquation; Var a, b, c, Root1, Root2, Discriminant : real; Solution: Integer; Begin Write(’Введите коэффициенты
- 15. Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения:
- 16. Вариант 1. Блок-схема полная форма ветвления блок «решение»
- 17. Вариант 1. Программа max := a; max := b; полная форма условного оператора program qq; var
- 18. Вариант 2. Блок-схема неполная форма ветвления
- 19. Вариант 2. Программа program qq; var a, b, max: integer; begin writeln('Введите два целых числа'); read
- 20. Сложные условия Задача. Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести возраст человека и
- 21. Вариант 1. Алгоритм начало ввод x 'подходит' конец да нет x >= 25? да нет x
- 22. Вариант 1. Программа program qq; var x: integer; begin writeln('Введите возраст'); read ( x ); if
- 23. Вариант 2. Алгоритм начало ввод x 'подходит' да нет x >= 25 и x 'не подходит'
- 24. Вариант 2. Программа сложное условие program qq; var x: integer; begin writeln('Введите возраст'); read ( x
- 25. Сложные условия Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью
- 26. Сложные условия Порядок выполнения (приоритет = старшинство) выражения в скобках not and or, xor , >=,
- 27. Истинно или ложно при a := 2; b := 3; c := 4; not (a >
- 28. Оператор case позволяет сделать выбор между несколькими вариантами. Оператор варианта состоит из выражения, называемого селектором, и
- 29. Оператор выбора case Формат: Case of : ; . . . : ; [else ] end;
- 30. Оператор выбора case Выполнение оператора case происходит следующим образом: вычисляется значение селектора; полученный результат проверяется на
- 31. В операторе case по всем ветвям может выполняться только один оператор! При необходимости выполнения нескольких требуется
- 32. Оператор выбора case Схема выполнения оператора:
- 33. Оператор выбора case Примеры: case Index mod 4 of 0 : x:= y*y + 1; 1
- 34. Оператор выбора case Примеры: case symbol(* :char *) of 'a'..'z', 'A'..'Z' : writeln('Это латинская буква'); 'а'..'я',
- 35. Оператор выбора Задача: Ввести номер месяца и вывести количество дней в этом месяце. Решение: Число дней
- 36. Алгоритм начало конец выбор ни один вариант не подошел ввод M да нет M = 1?
- 37. Программа program qq; var M, D: integer; begin writeln('Введите номер месяца:'); read ( M ); case
- 38. Оператор выбора Особенности: после case может быть имя переменной или арифметическое выражение целого типа (integer) или
- 39. Оператор выбора Особенности: если нужно выполнить только один оператор, слова begin и end можно не писать
- 40. Оператор выбора Особенности: значения, при которых выполняются одинаковые действия, можно группировать case i of 1: a
- 41. Что неправильно? case a of 2: begin a := b; 4: a := c; end; case
- 42. Иллюстрация if и case В качестве примера, иллюстрирующего использование операторов ветвления, приведем пример решения системы уравнений:
- 43. Иллюстрация if и case if x=0 then y:= x; if x=1 then y:= sqr(x); if x=2
- 44. Иллюстрация if и case case x of 0: y:= x; 1: y:= sqr(x); 2: y:= power(x,3);
- 45. 2. Цикл типа счетчик
- 46. Цикл – это последовательность операторов, которая может выполняться более одного раза. Для реализации циклических алгоритмов в
- 47. Оператор For состоит из заголовка и тела цикла. Он может быть представлен в двух форматах: Цикл
- 48. Переменная цикла (счетчик), нижняя граница N1 (переменная, константа или выражение) и верхняя граница N2 (переменная, константа
- 49. Схема выполнения оператора: Цикл for
- 50. Цикл for-to работает следующим образом: вычисляется значение верхней границы N2; переменной цикла присваивается значение нижней границы
- 51. Параметр цикла, начальное и конечное значения должны быть одного и того же порядкового типа (лучше всего
- 52. Примеры: Цикл for For i:=1 to 20 do writeln(Sqrt(i)); {выведет 20 результатов извлечения квадратного корня из
- 53. Задача. Вывести на экран квадраты и кубы целых чисел от 1 до 8 (от a до
- 54. Алгоритм начало i, i2, i3 конец нет да i i := 1; i := i +
- 55. Алгоритм (с блоком «цикл») начало i, i2, i3 конец i2 := i * i; i3 :=
- 56. Программа program qq; var i, i2, i3: integer; begin for i:=1 to 8 do begin i2
- 57. Цикл с уменьшением переменной Задача. Вывести на экран квадраты и кубы целых чисел от 8 до
- 58. for i:=1 to 9 do begin if ??? then begin i2 := i*i; i3 := i2*i;
- 59. Как изменить шаг? – II Идея: Надо вывести всего 5 чисел, переменная k изменяется от 1
- 60. Как изменить шаг? – III Идея: Надо вывести всего 5 чисел, переменная k изменяется от 1
- 61. Program NFactorial; var Factorial, Argument: Integer; i : Integer; Begin Write(’ введите аргумент факториала ’); Readln(Argument)
- 62. Рrogram Tabulation; var MinBound, MaxBound, Step, x, y, Coef :Real; i, n : Integer; Begin Write(’Введите
- 63. PROGRAM SUM_N; { расчет конечной суммы } var a, S, i, N: integer; Begin write('Введите число
- 64. Циклы с условием
- 65. Цикл с предусловием while do begin {тело цикла} end; Формат: Схема выполнения оператора: Последовательность действий при
- 66. Цикл с предусловием Особенности: условие окончания цикла может быть выражено переменной, константой или выражением, имеющим логический
- 67. Особенности: условие пересчитывается каждый раз при входе в цикл если условие на входе в цикл ложно,
- 68. Цикл с предусловием
- 69. Цикл с неизвестным числом шагов Пример: Определить количество цифр числа. Задача: Ввести целое число ( Идея
- 70. Алгоритм начало count конец нет да n 0? count := 0; count := count + 1;
- 71. Программа program qq; var n, count: integer; begin writeln('Введите целое число'); read(n); count := 0; while
- 72. Замена for на while и наоборот for i:=1 to 10 do begin {тело цикла} end; i
- 73. Цикл с постусловием Repeat ; . . . Until ; Оператор используется, когда количество повторений заранее
- 74. Цикл с постусловием Схема выполнения оператора: Последовательность действий при выполнении цикла: Выполняются , … . Проверяется
- 76. Пример 1: цикл с постусловием Задача: Ввести целое положительное число ( Проблема: Как не дать ввести
- 77. Цикл с постусловием: алгоритм начало конец да нет n > 0? тело цикла условие ВЫХОДА блок
- 78. Программа program qq; var n: integer; begin repeat writeln('Введите положительное число'); read(n); until n > 0;
- 79. Пример 2 Решение: вводим начальное a и конечное b значение переменной х; вводим шаг h, с
- 80. Пример 2 Program pr2; var a, b, h, x, y: real; begin writeln('Введите a,b,h:'); read(a,b,h); x:=a;
- 81. 3. Операторы ограничения и прерывания цикла
- 82. Существует возможность прервать выполнение цикла (или одной его итерации), не дождавшись конца его (или ее) работы.
- 83. Действие оператора Continue заключается в передаче управления на начало цикла, при этом контролируется условие выхода из
- 84. Пример использования операторов для блокировки несанкционированного доступа в программу For i:= 1 to 3 do begin
- 85. Возвращаясь к сказанному об операторе goto, необходимо отметить, что при всей его нежелательности все-таки существует ситуация,
- 86. Дело в том, что процедуры break и continue прерывают только один цикл - тот, в теле
- 87. 4. Массивы
- 88. Массив – это последовательность однотипных данных, объединенная общим именем, элементы (компоненты) которой отличаются (идентифицируются) индексами. Индекс
- 89. Массивы Массив – это группа однотипных элементов, имеющих общее имя и расположенных в памяти рядом. Особенности:
- 90. Объявление массива Для того чтобы задать массив, необходимо в разделе описания переменных (var) указать его размеры
- 91. Массивы A массив 3 15 НОМЕР элемента массива (ИНДЕКС) A[1] A[2] A[3] A[4] A[5] ЗНАЧЕНИЕ элемента
- 92. Объявление массивов Зачем объявлять? определить имя массива определить тип массива определить число элементов выделить место в
- 93. Объявление массивов Массивы других типов: Другой диапазон индексов: Индексы других типов: var X, Y: array [1..10]
- 94. Нумерация Нумеровать компоненты массива можно не только целыми числами. Любой порядковый тип данных (перечислимый, интервальный, символьный,
- 95. Тип компонент Тип компонент массива может быть любым: var a4: array[10..20] of real; - массив из
- 96. Что неправильно? var a: array[10..1] of integer; ... A[5] := 4.5; [1..10] var a: array ['z'..'a']
- 97. Массивы Объявление: Ввод с клавиатуры: Поэлементные операции: Вывод на экран: const N = 5; var a:
- 98. Многомерные массивы Для краткости и удобства многомерные массивы можно описывать и более простым способом: var a9:
- 99. Описание переменных размерностей Если ваша программа должна обрабатывать матрицы переменных размерностей (N по горизонтали и М
- 100. Описание переменных размерностей Если на этапе написания программы ничего нельзя сказать о предполагаемом размере входных данных,
- 101. Описание переменных размерностей Предположим, однако, что известны максимальные границы, в которые могут попасть индексы обрабатываемого массива.
- 102. Обращение к компонентам массива Массивы относятся к структурам прямого доступа. Это означает, что возможно напрямую (не
- 103. Обращение к компонентам массива Правила употребления индексов при обращении к компонентам массива: Индекс компоненты может быть
- 104. Описание переменных размерностей Примеры использования компонент массива: a1[1, 3]:= 0; a1[i, 2]:= a1[i, 2]-1; a2['z']:= a2['z']+1;
- 105. Задание массива константой Чтобы не вводить массивы вручную во время отладки программы, можно воспользоваться более простым
- 106. Задание массива константой Многомерный массив также можно рассматривать как линейный, предполагая, что его компонентами служат другие
- 107. Задание массива константой Примеры задания массивов типизированными константами: type mass = array[1..3, 1..2] of byte; const
- 108. 5. Решение некоторых типовых задач
- 109. Постановка задачи Пусть A = {a1, a2, ...} – последовательность однотипных элементов и b – некоторый
- 110. Постановка задачи Поскольку представление последовательности в памяти может быть осуществлено в виде массива, задачи могут быть
- 111. Максимальный элемент Задача: найти в массиве максимальный элемент. Алгоритм: Считаем, что первый элемент максимальный Сравниваем его
- 112. Максимальный элемент max := a[1]; { считаем, что первый – максимальный } iMax := 1; for
- 113. program qq; const N = 5; var a: array [1..N] of integer; i, iMax: integer; begin
- 114. Поиск в массиве Задача – найти в массиве элемент, равный X, или установить, что его нет.
- 115. Линейный поиск nX := 0; for i:=1 to N do if A[i] = X then begin
- 116. Program Search_in_Array; Label 1; Const n = 100; Var A : Array[1..n] of Real; b :
- 117. Реверс массива Задача: переставить элементы массива в обратном порядке. Алгоритм: поменять местами A[1] и A[N], A[2]
- 118. Как переставить элементы? 2 3 1 Задача: поменять местами содержимое двух чашек. Задача: поменять местами содержимое
- 119. Программа program qq; const N = 10; var A: array[1..N] of integer; i, c: integer; begin
- 120. Циклический сдвиг Задача: сдвинуть элементы массива влево на 1 ячейку, первый элемент становится на место последнего.
- 121. Программа program qq; const N = 10; var A: array[1..N] of integer; i, c: integer; begin
- 122. Способы перебора элементов массивов
- 123. Часто при работе с массивами задача ставится так, что требуется все элементы или их часть обработать
- 124. В массиве одновременно можно обрабатывать один, два, три и т.д. элемента. Часто в качестве параметра цикла
- 125. В правильно построенной схеме обязательно должны присутствовать: блок установки начальных значений индексов массива, блок проверки индекса
- 126. Перебрать элементы массива по одному, двигаясь от начала массива к концу. Случай 1 Здесь индекс начального
- 127. Случай 1 Схема перебора может быть представлена в виде: for i:=1 to n do { обработка
- 128. Случай 1 Если условие окончания проверяется с помощью сравнения (конечное значение - начальное значение)/шаг=n. Отсюда: (кз
- 129. Перебрать элементы массива по одному, двигаясь от конца массива к началу. Случай 2 for i:=n downto
- 130. Обработать массив по одному элементу, двигаясь с обоих концов к середине массива. Случай 3 i:=1; {установка
- 131. Случай 4 Вариант 1. Здесь индекс начинает изменяться с четного числа, величина шага, равная двум, обеспечивает
- 132. Случай 5 Вариант 1. Здесь установка начального значения - не простое присваивание, а условный оператор, позволяющий
- 133. Случай 5 Вариант 2. Условный оператор, устанавливающий начальное значение индекса, можно внести в тело цикла. i:=n;
- 134. Случай 6 Для решения этой задачи соединим схемы перебора, рассмотренные в случаях 4 и 5: i:=2;
- 135. Случай 7 Для решения этой задачи соединим схемы перебора, рассмотренные в случаях 4 и 5: i:=k;
- 136. Случай 8 Для массива из 5 элементов нужно последовательно обработать пары: a[1] и a[2], a[2] и
- 137. Случай 8 Для массива из 5 элементов нужно последовательно обработать пары: a[1]-a[2]-a[3], a[2]-a[3]-a[4], a[3]-a[4]-a[5]. Вариант 1.
- 138. Примеры решения некоторых типовых задач
- 139. Задача 1 Последовательность элементов задана формулой общего члена ai=sin(i+i/n), где i изменяется от 1 до n.
- 140. Задача 1: решение Исходными данными для решения задачи являются элементы последовательности: a1=sin(1+1/n), a2=sin(2+2/n), ..., an=sin(n+n/n). В
- 141. Задача 1: решение Вторая причина имеет два значения: «найдено» или «не найдено». Поэтому ее можно изображать
- 142. Задача 1: программа program pr4; var n, i : integer; z: real; { заданное число }
- 143. Задача 2 Вычислить значение выражения: y=cos(1+cos(2+cos(3+...+cos(n-1+cos(n)...)).
- 144. Задача 2: решение Для начала запишем заданную формулу при различных значениях n. Для n=3 получим y=cos(1+cos(2+cos(3))).
- 145. Задача 2: программа y:=0; for i:=n downto 1 do y:=cos(i+y); Фрагмент программы решения задачи:
- 146. Задача 3 Вычислить для произвольного натурального n Решение. Этот пример очень похож на предыдущий, однако здесь
- 147. Задача 4 Вычислить для произвольного натурального n Решение. Этот пример также похож на предыдущие. В нем
- 148. Задача 5 Дано натуральное число n. Поменять порядок цифр числа n на обратный. Решение. Например, для
- 149. Задача 6 Решение. Первый элемент последовательности объявляем кандидатом на максимум. Последовательно сравниваем все остальные элементы последовательности
- 150. Задача 6: программа program primer; var n, i : integer; a: real; { элемент посл-сти }
- 151. Задача 7 Решение. Чтобы вычислить дневной путь баржи, начиная с шестого дня, необходимо знать расстояния, пройденные
- 152. Задача 7: программа Var a, b, c, d, e, f: real; i, n: integer; { i
- 153. Задача 8 Решение. Для решения задачи нужно m раз выполнить вычисление очередного члена последовательности. Для его
- 154. Задача 8: программа var a, { член последовательности } s: integer; { сумма квадратов цифр предыдущего
- 155. Задача 9 Решение. Здесь признаком окончания ввода является число 0, заранее количество вводимых данных неизвестно, поэтому
- 156. Задача 9: фрагмент программы p:=1; b:=1; read(a); while a 0 do begin for i:=b to a
- 157. Задача 10 Решение. Для ввода данных нужно организовать арифметический цикл по счетчику до ввода n чисел.
- 158. Задача 10: фрагмент программы read(a); { вводим первое число посл-сти } max:=a; min:=a; for i:=2 to
- 159. Задача 11 Решение. Например, числу 1234 соответствует дробь 0,0081, а числу 9876 - 0,003. Для перебора
- 160. Задача 11: фрагмент программы y:=0; { начальное значение отношения } a:=0; { искомое число } for
- 162. Скачать презентацию