Программирование (Паскаль)

Содержание

Слайд 2

Программирование (Паскаль)

§ 17. Введение

Программирование (Паскаль) § 17. Введение

Слайд 3

Что такое программирование?

Программирование — это создание программ для компьютеров. Этим занимаются программисты.

Чем

Что такое программирование? Программирование — это создание программ для компьютеров. Этим занимаются программисты. Чем занимаются программисты:
занимаются программисты:

Слайд 4

Направления в программировании

Направления в программировании

Слайд 5

Простейшая программа

program qq;
begin { начало программы }
{ тело программы }
end. {

Простейшая программа program qq; begin { начало программы } { тело программы
конец программы }

комментарии внутри {} не обрабатываются

название программы

Слайд 6

Вывод на экран

program Hello;
begin
write('Привет!');
end.

оператор вывода

Оператор — это команда языка программирования.

write('Привет', Вася!);

write('Привет,

Вывод на экран program Hello; begin write('Привет!'); end. оператор вывода Оператор —
Вася!');

вся строка в апострофах

Слайд 7

Переход на новую строку

write('Привет, Вася!');
write('Привет, Петя!');

ожидание:

реальность:

Привет, Вася!
Привет, Петя!

Привет, Вася!Привет, Петя!

решение:

writeln('Привет, Вася!');
writeln('Привет, Петя!');

и

Переход на новую строку write('Привет, Вася!'); write('Привет, Петя!'); ожидание: реальность: Привет, Вася!
перейти на новую строку

ln

Слайд 8

Системы программирования

Системы программирования — это средства для создания новых программ.

Транслятор — это

Системы программирования Системы программирования — это средства для создания новых программ. Транслятор
программа, которая переводит тексты программ, написанных программистом, в машинные коды (команды процессора).

компилятор — переводит всю программу в машинные коды, строит исполняемый файл (.exe)
интерпретатор — сам выполняет программу по частям (по одному оператору).

program Hello;
begin
write('Привет!');
end.

Слайд 9

Системы программирования

Отладчик — это программа для поиска ошибок в других программах.

пошаговый режим

Системы программирования Отладчик — это программа для поиска ошибок в других программах.
— выполнение программы по шагам (по одному оператору)
просмотр значений переменных во время выполнения программы
точки останова – операторы в программе, перед выполнением которых нужно остановиться.

Среда программирования (IDE):
редактор текста программ
транслятор
отладчик

Слайд 10

Задачи

«B»: Вывести на экран текст «лесенкой»
Вася
пошел
гулять
«C»: Вывести на экран

Задачи «B»: Вывести на экран текст «лесенкой» Вася пошел гулять «C»: Вывести
рисунок из букв
Ж
ЖЖЖ
ЖЖЖЖЖ
ЖЖЖЖЖЖЖ
HH HH
ZZZZZ

Слайд 11

Программирование (Паскаль)

§ 18. Линейные программы

Программирование (Паскаль) § 18. Линейные программы

Слайд 12

Пример задачи

Задача. Ввести два числа и вычислить их сумму.

program Sum;
begin
{ ввести

Пример задачи Задача. Ввести два числа и вычислить их сумму. program Sum;
два числа }
{ вычислить их сумму }
{ вывести сумму на экран }
end.

Псевдокод – алгоритм на русском языке с элементами языка программирования.

Слайд 13

Зачем нужны переменные?

program Sum;
begin
{ ввести два числа }
{ вычислить их

Зачем нужны переменные? program Sum; begin { ввести два числа } {
сумму }
{ вывести сумму на экран }
end.

Переменная — это величина, которая имеет имя, тип и значение. Значение переменной может изменяться во время выполнения программы.

var a, b, c: integer;

объявление переменных

ячейки памяти

Слайд 14

Имена переменных

Идентификатор — это имя программы или переменной.

var a, b, c: integer;

МОЖНО

Имена переменных Идентификатор — это имя программы или переменной. var a, b,
использовать
латинские буквы (A-Z, a-z)
цифры
знак подчеркивания _

НЕЛЬЗЯ использовать скобки, знаки ", &, |, *, +, =, !, ? и др.

Какие имена правильные?
AXby R&B 4Wheel Вася “PesBarbos” TU154 [QuQu] _ABBA A+B

Слайд 15

Работа с переменными

Присваивание (запись значения)

a := 5;

:=

оператор присваивания

a := 5;
a := 18;

Вывод

Работа с переменными Присваивание (запись значения) a := 5; := оператор присваивания
на экран

write(a);

с:= 14;
write(с);

с:= 14;
write('с');

14

c

a ← 5

Слайд 16

Работа с переменными

Изменение значения

i:= i + 1;

увеличить на 1

a:= 4;
b:= 7;
a:=

Работа с переменными Изменение значения i:= i + 1; увеличить на 1
a + 1;
b:= b + 1;
a:= a + b;
b:= b + a;
a:= a + 2;
b:= b + a;

4

7

5

8

13

21

15

36

i ← i + 1

Слайд 17

Ввод с клавиатуры

Цель – изменить исходные данные, не меняя программу.

read(a);

5

a

Ввод с клавиатуры Цель – изменить исходные данные, не меняя программу. read(a); 5 a

Слайд 18

Ввод с клавиатуры

через пробел:
25 30
через Enter:
25
30

read(a, b);

Ввод с клавиатуры через пробел: 25 30 через Enter: 25 30 read(a, b);

Слайд 19

Программа сложения чисел

program Sum;
var a, b, c: integer;
begin
read(a, b); { ввести

Программа сложения чисел program Sum; var a, b, c: integer; begin read(a,
два числа }
c:= a + b; { вычислить их сумму }
write(c) { вывести сумму на экран }
end.

ожидание:

реальность:

Введите два числа: 5 7
5+7=12

5 7
12

Слайд 20

write(данных с текстом

5+7=12

значение a

значение с

значение b

write(a);
write('+');
write(b);
write('=');
write(c);

write(a, '+', b, '=', c);

write(данных с текстом 5+7=12 значение a значение с значение b write(a); write('+');

Слайд 21

Программа сложения чисел

program Sum;
var a, b, c: integer;
begin
write('Введите два числа: ');

Программа сложения чисел program Sum; var a, b, c: integer; begin write('Введите
read(a, b);
c:= a + b;
write(a, '+', b, '=', c)
end.

Слайд 22

Задачи

«A»: Ввести три числа, найти их сумму.
Пример:
Введите три числа:
4

Задачи «A»: Ввести три числа, найти их сумму. Пример: Введите три числа:

5
7
4+5+7=16
«B»: Ввести три числа, найти их сумму и произведение.
Пример:
Введите три числа:
4
5
7
4+5+7=16
4*5*7=140

Слайд 23

Задачи

«C»: Ввести три числа, найти их сумму, произведение и среднее арифметическое.
Пример:

Задачи «C»: Ввести три числа, найти их сумму, произведение и среднее арифметическое.
Введите три числа:
4
5
7
4+5+7=16
4*5*7=140
(4+5+7)/3=5.333333

Слайд 24

Арифметические выражения

Линейная запись (в одну строку):

a:=(c+b-1)/2*d;

Операции:

+ –
* – умножение
/ –

Арифметические выражения Линейная запись (в одну строку): a:=(c+b-1)/2*d; Операции: + – *
деление
** – возведение в степень (x2 → x**2)

var x, a, b: integer;
read(a, b);
x:= a / b;

a / b

var x: real;

Слайд 25

Порядок выполнения операций

действия в скобках
возведение в степень
умножение и деление, слева направо
сложение и

Порядок выполнения операций действия в скобках возведение в степень умножение и деление,
вычитание, слева направо

a := c + (1 – 2 * b) / 2 * d;

1

2

3

4

5

6

Слайд 26

Частное и остаток

div – деление нацело (остаток отбрасывается)
mod – остаток от деления

var

Частное и остаток div – деление нацело (остаток отбрасывается) mod – остаток
t, m, s: integer;
t:= 175;
m:= t div 60; { 2 }
s:= t mod 60; { 55 }

175 сек = 2 мин 55 сек

Слайд 27

Частное и остаток

n:= 123
d:= n div 10; { 12 }
k:= n

Частное и остаток n:= 123 d:= n div 10; { 12 }
mod 10; { 3 }

При делении на 10 нацело отбрасывается последняя цифра числа.

Остаток от деления на 10 – это последняя цифра числа.

Слайд 28

Форматный вывод

var a, b, c: integer;
a:=1; b:=2; c:=3;
write(a, b, c);

123

write(a,' ',b,' ',c);

1

Форматный вывод var a, b, c: integer; a:=1; b:=2; c:=3; write(a, b,
2 3

write(a, b:3, c:5);

1 2 3

3

5

Слайд 29

Задачи

«A»: Ввести число, обозначающее количество секунд. Вывести то же самое время в

Задачи «A»: Ввести число, обозначающее количество секунд. Вывести то же самое время
минутах и секундах.
Пример:
Введите число секунд: 175
2 мин. 55 с.
«B»: Ввести число, обозначающее количество секунд. Вывести то же самое время в часах, минутах и секундах.
Пример:
Введите число секунд: 8325
2 ч. 18 мин. 45 с

Слайд 30

Задачи

«С»: Занятия в школе начинаются в 8-30. Урок длится 45 минут, перерывы

Задачи «С»: Занятия в школе начинаются в 8-30. Урок длится 45 минут,
между уроками – 10 минут. Ввести номер урока и вывести время его окончания.
Пример:
Введите номер урока: 6
13-50

Слайд 31

Форматный вывод

var x: real;
x:=12.34567891234;
write(x);

12.345679

6

по умолчанию

write(x:10:3);

12.346

3

10

всего на число

в дробной части

write(x:8:2);

12.34

write(x:2:2);

12.34

write(x:0:1);

12.3

минимально возможное

вариант:

Форматный вывод var x: real; x:=12.34567891234; write(x); 12.345679 6 по умолчанию write(x:10:3);

Слайд 32

Научный формат чисел

var x: real;
x:=123456789;
write(x);

1.234568e+008

1,234568 ⋅108

var x: real;
x:=0.0000123456789;
write(x);

1.234568e-005

1,234568 ⋅10–5

количество знаков может отличаться

Научный формат чисел var x: real; x:=123456789; write(x); 1.234568e+008 1,234568 ⋅108 var

Слайд 33

Операции с вещественными числами

x:= 1.6;
write(trunc(x));

trunc – целая часть числа (дробная часть отбрасывается)
round

Операции с вещественными числами x:= 1.6; write(trunc(x)); trunc – целая часть числа
– округление к ближайшему целому
frac – дробная часть

1

2

write(round(x));

write(frac(x));

0.6

Слайд 34

Операции с вещественными числами

sqrt – квадратный корень

x:= 2.25;
write(sqrt(x));

1.5

Операции с вещественными числами sqrt – квадратный корень x:= 2.25; write(sqrt(x)); 1.5

Слайд 35

Операции с вещественными числами

1/3 = 0,33333…

бесконечно много знаков

var x, y, z:

Операции с вещественными числами 1/3 = 0,33333… бесконечно много знаков var x,
real;
x:= 1/2;
y:= 1/3;
z:= 5/6; { 5/6=1/2+1/3 }
write(x+y-z);

-1.110223e-016

Слайд 36

Задачи

«A»: Ввести число, обозначающее размер одной фотографии в Мбайтах. Определить, сколько фотографий

Задачи «A»: Ввести число, обозначающее размер одной фотографии в Мбайтах. Определить, сколько
поместится на флэш-карту объёмом 2 Гбайта.
Пример:
Размер фотографии в Мбайтах: 6.3
Поместится фотографий: 325.

Слайд 37

Задачи

«B»: Оцифровка звука выполняется в режиме стерео с частотой дискретизации 44,1 кГц

Задачи «B»: Оцифровка звука выполняется в режиме стерео с частотой дискретизации 44,1
и глубиной кодирования 24 бита. Ввести время записи в минутах и определить, сколько Мбайт нужно выделить для хранения полученного файла (округлить результат в большую сторону).
Пример:
Введите время записи в минутах: 10
Размер файла 152 Мбайт

Слайд 38

Задачи

«С»: Разведчики-математики для того, чтобы опознать своих, используют числовые пароли. Услышав число-пароль,

Задачи «С»: Разведчики-математики для того, чтобы опознать своих, используют числовые пароли. Услышав
разведчик должен возвести его в квадрат и сказать в ответ первую цифры дробной части полученного числа. Напишите программу, которая по полученному паролю (вещественному числу) вычисляет число-ответ.
Пример:
Введите пароль: 1.92
Ответ: 6
потому что 1,922 = 3,6864…, первая цифра дробной части – 6

Слайд 39

Случайные и псевдослучайные числа

Случайные явления
встретил слона – не встретил слона
жеребьёвка на

Случайные и псевдослучайные числа Случайные явления встретил слона – не встретил слона
соревнованиях
лотерея
случайная скорость (направление выстрела ) в игре

Случайные числа — это последовательность чисел, в которой невозможно предсказать следующее число, даже зная все предыдущие.

Слайд 40

Случайные и псевдослучайные числа

Псевдослучайные числа — похожи на случайные, но строятся по

Случайные и псевдослучайные числа Псевдослучайные числа — похожи на случайные, но строятся
формуле.

Xn+1:= mod(a*Xn+b, c) | от 0 до c-1

следующее

предыдущее

Xn+1:= mod(Xn+3, 10) | от 0 до 9

X = 0

зерно

→ 3

→ 6

→ 9

→ 2

→ 5

→ 8

→ 0

зацикливание

8

→ 1

→ 4

→ 7

Слайд 41

Датчик случайных чисел

Целые числа на отрезке:

цел K, L
K:= irand(1, 6) |

Датчик случайных чисел Целые числа на отрезке: цел K, L K:= irand(1,
отрезок [0,6]
L:= irand(1, 6) | это уже другое число!

англ. integer – целый
random – случайный

Вещественные числа в полуинтервале:

цел x, y
x:= rand(0, 10) | полуинтервал [0,10)
y:= rand(0, 10) | это уже другое число!

Слайд 42

Датчик случайных чисел

Целые числа на отрезке:

var K, L, M: integer;
K:= random(6);

Датчик случайных чисел Целые числа на отрезке: var K, L, M: integer;
{ отрезок [0,5] }
L:= random(6)+1; { отрезок [1,6] }
M:= random(b-a+1)+a; { отрезок [a,b] }

Вещественные числа в полуинтервале:

var x, y, z, w: real;
x:= random; { полуинтервал [0,1) }
y:= 7*random; { [0,7) }
z:= 7*random + 5; { [5,12) }
w:= (b-a)*random + a; { [a,b) }

Слайд 43

Задачи

«A»: В игре «Русское лото» из мешка случайным образом выбираются бочонки, на

Задачи «A»: В игре «Русское лото» из мешка случайным образом выбираются бочонки,
каждом из которых написано число от 1 до 90. Напишите программу, которая выводит наугад первые 5 выигрышных номеров.
«B»: + Доработайте программу «Русское лото» так, чтобы все 5 значений гарантированно были бы разными (используйте разные диапазоны).

Слайд 44

Задачи

«С»: + Игральный кубик бросается три раза (выпадает три случайных значения). Из

Задачи «С»: + Игральный кубик бросается три раза (выпадает три случайных значения).
этих чисел составляется целое число, программа должна найти его квадрат.
Пример:
Выпало очков:
1 2 3
Число 123
Его квадрат 15129

Слайд 45

Задачи

«D»: + Получить случайное трёхзначное число и вывести в столбик его отдельные

Задачи «D»: + Получить случайное трёхзначное число и вывести в столбик его
цифры.
Пример:
Получено число 123
сотни: 1
десятки: 2
единицы: 3

Слайд 46

Программирование (Паскаль)

§ 19. Ветвления

Программирование (Паскаль) § 19. Ветвления

Слайд 47

Выбор наибольшего из двух чисел

полная форма ветвления

if a > b then
M:=

Выбор наибольшего из двух чисел полная форма ветвления if a > b
a
else
M:= b;

Слайд 48

Вариант 1. Программа


program Maximum; var a, b, M: integer; begin
writeln('Введите два целых числа');

Вариант 1. Программа program Maximum; var a, b, M: integer; begin writeln('Введите
read(a, b); if a > b then else writeln('Наибольшее число ', M); end.

M:= a

M:= b;

полная форма условного оператора

Слайд 49

Выбор наибольшего из двух чисел-2

неполная форма ветвления

Выбор наибольшего из двух чисел-2 неполная форма ветвления

Слайд 50

Вариант 2. Программа


program Maximum2;
var a, b, M: integer;
begin writeln('Введите два целых числа');

Вариант 2. Программа program Maximum2; var a, b, M: integer; begin writeln('Введите
read(a, b);
M:= a; if b > a then M:= b; writeln('Наибольшее число ', M); end.

неполная форма условного оператора

Слайд 51

Примеры

if a < b then
M:= a;
if b < a then

Примеры if a M:= a; if b M:= b; if a begin
M:= b;

if a < b then
begin
c:= a;
a:= b;
b:= c
end;

Поиск минимального:

begin
c:= a;
a:= b;
b:= c
end;

составной оператор

Слайд 52

В других языках программирования

С:

if (a < b) {
c = a;

В других языках программирования С: if (a c = a; a =
a = b;
b = c;
}

if a < b:
c = a
a = b
b = c

Python:

Слайд 53

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

Задача. В переменной a записан возраст Антона, а в переменной

Вложенные условные операторы Задача. В переменной a записан возраст Антона, а в
b – возраст Бориса. Определить, кто из них старше.

if a = b then
writeln('Одного возраста')
else
if a=b then
writeln('Одного возраста')
else
writeln('Борис старше');

if a > b then
writeln('Андрей старше' )
else
writeln('Борис старше' );

вложенный условный
оператор

else относится к ближайшему if

Слайд 54

Задачи

«A»: Ввести два целых числа, найти наибольшее и наименьшее из них.

Задачи «A»: Ввести два целых числа, найти наибольшее и наименьшее из них.

Пример:
Введите два целых числа:
1 5
Наибольшее число 5
Наименьшее число 1

«B»: Ввести четыре целых числа, найти наибольшее из них.
Пример:
Введите четыре целых числа:
1 5 4 3
Наибольшее число 5

Слайд 55

Задачи

«C»: Ввести последовательно возраст Антона, Бориса и Виктора. Определить, кто из них

Задачи «C»: Ввести последовательно возраст Антона, Бориса и Виктора. Определить, кто из
старше.
Пример:
Возраст Антона: 15
Возраст Бориса: 17
Возраст Виктора: 16
Ответ: Борис старше всех.
Пример:
Возраст Антона: 17
Возраст Бориса: 17
Возраст Виктора: 16
Ответ: Антон и Борис старше Виктора.

Слайд 56

Сложные условия

Задача. Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести

Сложные условия Задача. Фирма набирает сотрудников от 25 до 40 лет включительно.
возраст человека и определить, подходит ли он фирме (вывести ответ 'подходит' или 'не подходит').
Особенность: надо проверить, выполняются ли два условия одновременно:
возраст ≥ 25 возраст ≤ 40

Слайд 57

Плохое решение


program Work;
var v: integer;
begin
writeln('Введите ваш возраст');
read(v);
if v >=

Плохое решение program Work; var v: integer; begin writeln('Введите ваш возраст'); read(v);
25 then
if v <= 40 then
write('Подходит!')
else
write('Не подходит.')
else
write('Не подходит.');
end.

вложенный условный оператор

Слайд 58

Хорошее решение (операция «И»)

program Work;
var v: integer;
begin
writeln('Введите ваш возраст');
read(v);
if

Хорошее решение (операция «И») program Work; var v: integer; begin writeln('Введите ваш
(v >= 25) and (v <= 40) then
write('Подходит!')
else
write('Не подходит.');
end.

сложное условие

Слайд 59

Примеры

Задача. Вывести 'Да', если число в переменной a – двузначное.

if (10 <=

Примеры Задача. Вывести 'Да', если число в переменной a – двузначное. if
a) and (a <= 99) then
write('Да');

Задача. Вывести 'Да', если число в переменной a – двузначное и делится на 7.

if (10 <= a) and (a <= 99)
and (a mod 7 = 0) then
write('Да');

Слайд 60

Сложные условия

Задача. Самолёт летает по понедельникам и четвергам. Ввести номер дня недели

Сложные условия Задача. Самолёт летает по понедельникам и четвергам. Ввести номер дня
и определить, летает ли в этот день самолёт.
Особенность: надо проверить, выполняется ли одно из двух условий:
день = 1 день = 4

if (d = 1) or (d = 4) then
write('Летает')
else
write('Не летает');

сложное условие

(d = 1) or (d = 4)

Слайд 61

Ещё пример

Задача. Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести

Ещё пример Задача. Фирма набирает сотрудников от 25 до 40 лет включительно.
возраст человека и определить, подходит ли он фирме (вывести ответ 'подходит' или 'не подходит'). Использовать «ИЛИ».

if ??? then
write('Не подходит!')
else
write('Подходит.');

(x < 25) or (x > 40)

Слайд 62

Простые и сложные условия

Простые условия (отношения)
< <= > >= = <>
Сложное

Простые и сложные условия Простые условия (отношения) >= = Сложное условие –
условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций:
И – одновременное выполнение условий
x >= 25 and x <= 40
ИЛИ – выполнение хотя бы одного из условий
x <= 25 or x >= 40
НЕ – отрицание, обратное условие
not (x > 25) ⇔ ???

равно

не равно

x <= 25

Слайд 63

Порядок выполнения операций

выражения в скобках
НЕ (not)
И (and)
ИЛИ (or), исключающее ИЛИ (xor)

1

if not(a

Порядок выполнения операций выражения в скобках НЕ (not) И (and) ИЛИ (or),
> 2) or (c <> 5) and (b < a) then
...

4

2

3

5

6

Слайд 64

Сложные условия

Истинно или ложно при a := 2; b := 3; c

Сложные условия Истинно или ложно при a := 2; b := 3;
:= 4;
not (a > b)
(a < b) and (b < c)
(a > c) or (b > c)
(a < b) and (b > c)
(a > c) and (b > d)
not(a >= b) or (c = d)
(a >= b) or not (c < b)
(a > c) or (b > c) or (b > a)

Да

Да

Нет

Да

Да

Нет

Нет

Да

Слайд 65

Задачи

«A»: Напишите программу, которая получает три числа - рост трёх спортсменов, и

Задачи «A»: Напишите программу, которая получает три числа - рост трёх спортсменов,
выводит сообщение «По росту.», если они стоят по возрастанию роста, или сообщение «Не по росту!», если они стоят не по росту.
Пример:
Введите рост трёх спортсменов:
165 170 172
По росту.
Пример:
Введите рост трёх спортсменов:
175 170 172
Не по росту!

Слайд 66

Задачи

«B»: Напишите программу, которая получает номер месяца и выводит соответствующее ему время

Задачи «B»: Напишите программу, которая получает номер месяца и выводит соответствующее ему
года или сообщение об ошибке.
Пример:
Введите номер месяца:
5
Весна.
Пример:
Введите номер месяца:
15
Неверный номер месяца.

Слайд 67

Задачи

«C»: Напишите программу, которая получает возраст человека (целое число, не превышающее 120)

Задачи «C»: Напишите программу, которая получает возраст человека (целое число, не превышающее
и выводит этот возраст со словом «год», «года» или «лет». Например, «21 год», «22 года», «25 лет».
Пример:
Введите возраст: 18
Вам 18 лет.
Пример:
Введите возраст: 21
Вам 21 год.
Пример:
Введите возраст: 22
Вам 22 года.

Слайд 68

Логические переменные

var b: boolean;
...
b:= True; { 1 }
b:= False; { 0 }

только

Логические переменные var b: boolean; ... b:= True; { 1 } b:=
два возможных значения

Пример:

var vyh: boolean;
...
vyh:= (d=6) or (d=7);
...
if not vyh then
write('Рабочий день.')
else
write('Выходной!');

Слайд 69

Задачи

«A»: Напишите программу, которая получает с клавиатуры целое число и записывает в

Задачи «A»: Напишите программу, которая получает с клавиатуры целое число и записывает
логическую переменную значение «да» (True), если это число трёхзначное. После этого на экран выводится ответ на вопрос: «Верно ли, что было получено трёхзначное число?».
Пример:
Введите число: 165
Ответ: да.
Пример:
Введите число: 1651
Ответ: нет.

Слайд 70

Задачи

«B»: Напишите программу, которая получает с клавиатуры трёхзначное число и записывает в

Задачи «B»: Напишите программу, которая получает с клавиатуры трёхзначное число и записывает
логическую переменную значение «да» (True), если это число – палиндром, то есть читается одинаково слева направо и справа налево. После этого на экран выводится ответ на вопрос: «Верно ли, что введённое число – палиндром?».
Пример:
Введите число: 165
Ответ: нет.
Пример:
Введите число: 656
Ответ: да.

Слайд 71

Задачи

«С»: Напишите программу, которая получает с клавиатуры трёхзначное число и записывает в

Задачи «С»: Напишите программу, которая получает с клавиатуры трёхзначное число и записывает
логическую переменную значение «да» (True), если это все его цифры одинаковы. После этого на экран выводится ответ на вопрос: «Верно ли, что все цифры введённого числа одинаковы?»
Пример:
Введите число: 161
Ответ: нет.
Пример:
Введите число: 555
Ответ: да.

Слайд 72

Экспертная система

Экспертная система — это компьютерная программа, задача которой — заменить человека-эксперта

Экспертная система Экспертная система — это компьютерная программа, задача которой — заменить
при принятии решений в сложной ситуации.

База знаний = факты + правила writeа:

если у животного есть перья, то это птица;
если животное кормит детенышей молоком, то это — млекопитающее;
если животное — млекопитающее и ест мясо, то это — хищник.

Диалог:
Это животное кормит детей молоком? Нет
Это животное имеет перья? Да
Это птица.

Слайд 73

Дерево решений

хищник

?

птица

да

да

нет

нет

млекопитающее

Кормит детей молоком?

Имеет перья?

Ест мясо?

?

да

нет

Дерево решений хищник ? птица да да нет нет млекопитающее Кормит детей

Слайд 74

Программирование экспертной системы

Ответы пользователя: да и нет – символьные строки.

var otvet: string;
...
write('Кормит

Программирование экспертной системы Ответы пользователя: да и нет – символьные строки. var
детей молоком? ');
read(otvet);
if otvet = 'да' then
... { вариант 1 }
else
... { вариант 2 }

{ вариант 1 }
writeln('Млекопитающее.');
write('Ест мясо? ');
read(otvet);
if otvet = 'да' then
writeln('Хищник.')
else
writeln('Не знаю.');

Слайд 75

Заглавные и строчные буквы

var otvet: string;
...
if otvet = 'да' then
...

не

Заглавные и строчные буквы var otvet: string; ... if otvet = 'да'
сработает на 'Да'

if (otvet = 'да') or (otvet = 'Да') then
...

if LowerCase(ответ) = 'да' then
...

Ещё лучше:

преобразовать все заглавные в строчные

if UpperCase(ответ) = 'ДА' then
...

Слайд 76

Программирование (Паскаль)

§ 23. Отладка программ

Программирование (Паскаль) § 23. Отладка программ

Слайд 77

Виды ошибок

Синтаксические ошибки – нарушение правил записи операторов языка программирования.

Обнаруживаются транслятором.

Логические ошибки

Виды ошибок Синтаксические ошибки – нарушение правил записи операторов языка программирования. Обнаруживаются
– неверно составленный алгоритм.

Отказ (ошибка времени выполнения) – аварийная ситуация во время выполнения программы.

Отладка – поиск и исправление ошибок в программе.

Слайд 78

Пример отладки программы

program SqEq;
var a, b, c, D, x1, x2: real;
begin
write('Введите

Пример отладки программы program SqEq; var a, b, c, D, x1, x2:
a, b, c: ');
read(a, b, c);
D:=b*b-4*a*a;
x1:=(-b+sqrt(D))/2*a;
x2:=(-b-sqrt(D))/2*a;
writeln('x1=', x1, ' x2=', x2);
end.

Программа решения квадратного уравнения

Слайд 79

Тестирование

Тест 1. a = 1, b = 2, c = 1.

x1=-1.0 x2=-1.0

x1=-1.0

Тестирование Тест 1. a = 1, b = 2, c = 1.
x2=-1.0

Реальность:

Тест 2. a = 1, b = – 5, c = 6.

x1=3.0 x2=2.0

x1=4.791 x2=0.209

Ожидание:

Найден вариант, когда программа работает неверно. Ошибка воспроизводится!

Возможные причины:
неверный ввод данных
неверное вычисление дискриминанта
неверное вычисление корней
неверный write(результатов

Слайд 80

Отладочная печать

read(a, b, c);
write(a, ' ', b, ' ', c, нс
D:=b*b-4*a*a;
write('D=', D,

Отладочная печать read(a, b, c); write(a, ' ', b, ' ', c,
нс
...

writeln(a, ' ', b, ' ', c);

writeln('D=', D);

Введите a, b, c: 1 -5 6
1.0 -5.0 6.0
D=21.0

Результат:

D=21.0

Идея: выводить все промежуточные результаты.

Слайд 81

Отладка программы

Тест 1. a = 1, b = 2, c = 1.

x1=-1.0

Отладка программы Тест 1. a = 1, b = 2, c =
x2=-1.0

x1=-1.0 x2=-1.0

Реальность:

Тест 2. a = 1, b = – 5, c = 6.

x1=3.0 x2=2.0

Ожидание:

x1=3.0 x2=2.0

Тест 3. a = 8, b = – 6, c = 1.

x1=0.5 x2=0.25

x1=32.0 x2=16.0

x1:=(-b+sqrt(D))/2*a;
x2:=(-b-sqrt(D))/2*a;

(2*a);

(2*a);

Слайд 82

Задачи

«A»: Загрузите программу, которая должна вычислять сумму цифр трёхзначного числа:
var N, d1,

Задачи «A»: Загрузите программу, которая должна вычислять сумму цифр трёхзначного числа: var
d2, s: integer;
begin
read('N = ');
write(N);
d0:= N mod 10;
d1:= N mod 100;
d2:= N div 100;
d0 + d2 := s
writeln(s);
end.
Выполните отладку программы:
исправьте синтаксические ошибки
определите ситуации, когда она работает неверно
исправьте логические ошибки.

Слайд 83

Задачи

«B»: Доработайте программу из п. А так, чтобы она правильно работала с

Задачи «B»: Доработайте программу из п. А так, чтобы она правильно работала
отрицательными трёхзначными числами: при вводе числа «–123» программа должна выдавать ответ 6.

Слайд 84

Задачи

«С»: Загрузите программу, которая должна вычислять наибольшее из трёх чисел:
var a, b:

Задачи «С»: Загрузите программу, которая должна вычислять наибольшее из трёх чисел: var
integer;
begin
read('a = '); read(a);
write('b = '); write(b);
read('c = '); read(c);
if a > b then M:=a
else M:= b; end;
if c > b then M:= b
else M:= c; end;
writeln(M);
end.
Выполните отладку программы:
исправьте синтаксические ошибки
определите ситуации, когда она работает неверно
исправьте логические ошибки.

Слайд 85

Программирование (Паскаль)

§ 20. Программирование циклических алгоритмов

Программирование (Паскаль) § 20. Программирование циклических алгоритмов

Слайд 86

Зачем нужен цикл?

Задача. Вывести 5 раз «Привет!».

writeln('Привет');
writeln('Привет');
writeln('Привет');
writeln('Привет');
writeln('Привет');

Цикл «N раз»:

{ сделай 5 раз

Зачем нужен цикл? Задача. Вывести 5 раз «Привет!». writeln('Привет'); writeln('Привет'); writeln('Привет'); writeln('Привет');
}
writeln('Привет');

Слайд 87

Как организовать цикл?

{счётчик:= 0 }
{пока счётчик < 5 }
writeln('Привет');
{счётчик:= счётчик

Как организовать цикл? {счётчик:= 0 } {пока счётчик writeln('Привет'); {счётчик:= счётчик +
+ 1}

ещё не делали

сделали ещё раз

var count: integer;
count:= 0;
while count < 5 do begin
writeln('Привет');
count:= count + 1
end;

end;

begin

составной оператор

Слайд 88

Как организовать цикл?

count:= 5;
while count > ??? do begin
writeln('Привет');
count:= count

Как организовать цикл? count:= 5; while count > ??? do begin writeln('Привет');
???
end;

Идея: запоминать, сколько шагов осталось.

0

- 1

Слайд 89

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

условие проверяется при входе в цикл
как только условие становится ложным,

Цикл с предусловием условие проверяется при входе в цикл как только условие
работа цикла заканчивается
если условие ложно в самом начале, цикл не выполняется ни разу

while условие do begin
...
end;

тело цикла

while True do begin
...
end;

бесконечный цикл (зацикливание)

Слайд 90

Сумма цифр числа

Задача. Вычислить сумму цифр введённого числа.
123 → 1 +

Сумма цифр числа Задача. Вычислить сумму цифр введённого числа. 123 → 1
2 + 3 = 6

Выделить последнюю цифру числа в переменной N:

d:= N mod 10;

Отбросить последнюю цифру числа в переменной N:

N:= N div 10;

123 → 3

123 → 12

Добавить к переменной sum значение переменной d:

sum:= sum + d;

sum = 6 → 6 + 4 = 10
d = 4

Слайд 91

Сумма цифр числа

выделяем последнюю цифру числа (mod)
увеличиваем сумму на значение цифры (sum:=sum+d;)
отсекаем

Сумма цифр числа выделяем последнюю цифру числа (mod) увеличиваем сумму на значение
последнюю цифру числа (div)

начальные значения

Слайд 92

Сумма цифр числа

начало

конец

нет

да

N <> 0?

sum:= 0

d:= N mod 10;
sum:= sum + d;
N:=

Сумма цифр числа начало конец нет да N 0? sum:= 0 d:=
N div 10;

обнулить сумму

ввод N

выполнять 'пока N <> 0'

вывод sum

Слайд 93

Сумма цифр числа

program SumDigits;
var N, d, sum: integer;
begin
writeln('Введите целое число');
read(N);

Сумма цифр числа program SumDigits; var N, d, sum: integer; begin writeln('Введите
sum:= 0;
write('Сумма цифр числа ', N, ' равна', sum);
end.

while N<>0 do begin
d:= N mod 10;
sum:= sum + d;
N:= N div 10
end;

N1:= N;

N1,

Слайд 94

Задачи

«A»: Напишите программу, которая получает с клавиатуры количество повторений и выводит столько

Задачи «A»: Напишите программу, которая получает с клавиатуры количество повторений и выводит
же раз какое-нибудь сообщение.
Пример:
Сколько раз повторить? 3
Привет!
Привет!
Привет!
«B»: Напишите программу, которая получает с клавиатуры натуральное число и определяет, сколько раз в его десятичной записи встречается цифра 1.
Пример:
Введите число? 311
Единиц: 2

Слайд 95

Задачи

«C»: Напишите программу, которая получает с клавиатуры натуральное число и находит наибольшую

Задачи «C»: Напишите программу, которая получает с клавиатуры натуральное число и находит
цифру в его десятичной записи.
Пример:
Введите число: 311
Наибольшая цифра: 3
«D»: Напишите программу, которая получает с клавиатуры натуральное число и определяет, есть ли в его десятичной записи одинаковые цифры, стоящие рядом.
Пример:
Введите число: 553 Введите число: 535
Ответ: да. Ответ: нет.

Слайд 96

Алгоритм Евклида

Задача. Найти наибольший общий делитель (НОД) двух натуральных чисел.

Евклид
(365-300 до. н.

Алгоритм Евклида Задача. Найти наибольший общий делитель (НОД) двух натуральных чисел. Евклид
э.)

НОД(a,b)= НОД(a-b, b)
= НОД(a, b-a)

Заменяем большее из двух чисел разностью большего и меньшего до тех пор, пока они не станут равны. Это и есть НОД.

НОД (14, 21) = НОД (14, 21-14) = НОД (14, 7)

НОД (1998, 2) = НОД (1996, 2) = … = 2

Пример:

много шагов при большой разнице чисел:

= НОД (7, 7) = 7

Слайд 97

Алгоритм Евклида

a = b?

да

нет

a > b?

да

a:=a-b

нет

b:=b-a

начало

конец

Алгоритм Евклида a = b? да нет a > b? да a:=a-b нет b:=b-a начало конец

Слайд 98

Алгоритм Евклида

while a <> b do
if a > b then
a:=

Алгоритм Евклида while a b do if a > b then a:=
a - b
else b:= b – a;

Слайд 99

Модифицированный алгоритм Евклида

НОД(a,b)= НОД(mod(a,b), b)
= НОД(a, mod(b,a))

Заменяем большее из двух

Модифицированный алгоритм Евклида НОД(a,b)= НОД(mod(a,b), b) = НОД(a, mod(b,a)) Заменяем большее из
чисел остатком от деления большего на меньшее до тех пор, пока меньшее не станет равно нулю. Тогда большее — это НОД.

НОД (14, 21) = НОД (14, 7) = НОД (0, 7) = 7

Пример:

Слайд 100

Модифицированный алгоритм

while (a <> 0) and (b <> 0) do
if a

Модифицированный алгоритм while (a 0) and (b 0) do if a >
> b then
a:= a mod b
else
b:= b mod a;

if a <> 0 then
write(a)
else
write(b);

write( ??? );

a+b

Слайд 101

В других языках программирования

while a!=0 and b!=0:
if a > b:
a

В других языках программирования while a!=0 and b!=0: if a > b:
= a % b
else:
b = b % a

Python:

С:

while (a!=0 && b!=0)
{
if (a > b)
a = a % b;
else
b = b % a;
}

Слайд 102

Задачи

«A»: Ввести с клавиатуры два натуральных числа и найти их НОД с

Задачи «A»: Ввести с клавиатуры два натуральных числа и найти их НОД
помощью алгоритма Евклида.
Пример:
Введите два числа:
21 14
НОД(21,14)=7

«B»: Ввести с клавиатуры два натуральных числа и найти их НОД с помощью модифицированного алгоритма Евклида. Заполните таблицу:

Слайд 103

Задачи

«C»: Ввести с клавиатуры два натуральных числа и сравнить количество шагов цикла

Задачи «C»: Ввести с клавиатуры два натуральных числа и сравнить количество шагов
для вычисления их НОД с помощью обычного и модифицированного алгоритмов Евклида.
Пример:
Введите два числа:
1998 2
НОД(1998,2)=2
Обычный алгоритм: 998
Модифицированный: 1

Слайд 104

Обработка потока данных

Задача. На вход программы поступает поток данных — последовательность целых

Обработка потока данных Задача. На вход программы поступает поток данных — последовательность
чисел, которая заканчивается нулём. Требуется найти сумму элементов этой последовательности.

while x<>0 do begin
{ добавить x к сумме }
{ x := следующее число }
end;

Слайд 105

Обработка потока данных

var x, sum: integer;
...
sum:= 0;
read(x); { ввести первое число }
while

Обработка потока данных var x, sum: integer; ... sum:= 0; read(x); {
x<>0 do begin
sum:= sum + x;
read(x); { ввести следующее }
end;
write('Сумма ', sum);

Слайд 106

Задачи

«A»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём.

Задачи «A»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается
Определить, сколько получено чисел, которые делятся на 3.
«B»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Определить, сколько получено двузначных чисел, которые заканчиваются на 3.
«C»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Найти максимальное из введённых чётных чисел.

Слайд 107

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

условие проверяется после завершения очередного шага цикла
цикл всегда выполняется хотя

Цикл с постусловием условие проверяется после завершения очередного шага цикла цикл всегда
бы один раз
как только условие становится истинным, работа цикла заканчивается

repeat
write('Введите N>0: ');
read(N);
until N > 0;

условие окончания работы цикла

Слайд 108

Задачи

«A»: Напишите программу, которая предлагает ввести пароль и не переходит к выполнению

Задачи «A»: Напишите программу, которая предлагает ввести пароль и не переходит к
основной части, пока не введён правильный пароль. Основная часть – вывод на экран «секретных сведений».
«B»: Напишите программу, которая получает с клавиатуры натуральное число, которое больше 1, и определяет, простое оно или нет. Для этого нужно делить число на все натуральные числа, начиная с 2, пока не получится деление без остатка.
«C»: Напишите программу, которая получает с клавиатуры два целых числа и вычисляет их произведение, используя только операции сложения.

Слайд 109

Задачи

«D»: Напишите программу, которая получает с клавиатуры натуральное число и вычисляет целый

Задачи «D»: Напишите программу, которая получает с клавиатуры натуральное число и вычисляет
квадратный корень из него – наибольшее число, квадрат которого не больше данного числа.

Слайд 110

Цикл по переменной

Задача. Вывести на экран степени числа 2 от 21 до

Цикл по переменной Задача. Вывести на экран степени числа 2 от 21
210.

k:= 1;
N:= 2;
while k <= 10 do
begin
write(N);
N:= N*2;
k:= k + 1
end;

Идея: собрать всё вместе.

N:= 2;
for k:=1 to 10 do
begin
writeln(N);
N:= N*2
end;

k:=1 to 10

Слайд 111

Цикл по переменной

Задача. Найти сумму чисел от 1 до 1000.

var sum, i:

Цикл по переменной Задача. Найти сумму чисел от 1 до 1000. var
integer;
...
sum:= 0;
for i:=1 to 1000 do
sum:= sum + i;

Задача. Вывести квадраты чисел от 10 до 1 по убыванию.

for k:=10 downto 1 do
writeln(k*k);

шаг «–1»

downto

Слайд 112

Цикл по переменной

Задача. Найти сумму чётных чисел от 2 до 1000.

sum:= 0;
for

Цикл по переменной Задача. Найти сумму чётных чисел от 2 до 1000.
i:=1 to 1000 do
if i mod 2 = 0 then
sum:= sum + i;

sum:= 0;
k:= 2;
for i:=1 to 500 do begin
sum:= sum + k;
k:= k + 2
end;

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

всего 500 чисел

2, 4, 6, …

Слайд 113

В других языках программирования

Sum = 0
for i in range(1, 1001):
Sum +=

В других языках программирования Sum = 0 for i in range(1, 1001):
i

Python:

С:

int sum, i;
sum = 0;
for (i=1; i<=1000; i++)
sum += i;

диапазон [1;1001)

i=i+1;

sum=sum+i;

Слайд 114

Задачи

«A»: Ипполит задумал трёхзначное число, которое при делении на 15 даёт в

Задачи «A»: Ипполит задумал трёхзначное число, которое при делении на 15 даёт
остатке 11, а при делении на 11 даёт в остатке 9. Напишите программу, которая находит все такие числа.
«B»: С клавиатуры вводится натуральное число N. Программа должна найти факториал этого числа (обозначается как N!) – произведение всех натуральных чисел от 1 до N. Например,
5! = 1 • 2 • 3 • 4 • 5 = 120.
«C»: Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных в N-ную степень (где N – количество цифр в числе) равна самому числу. Например, 153 = 13 + 53 + 33. Найдите все трёхзначные Армстронга.

Слайд 115

Программирование (Паскаль)

§ 21. Массивы

Программирование (Паскаль) § 21. Массивы

Слайд 116

Что такое массив?

Массив – это группа переменных одного типа, расположенных в памяти

Что такое массив? Массив – это группа переменных одного типа, расположенных в
рядом (в соседних ячейках) и имеющих общее имя.

Надо:

выделять память
записывать данные в нужную ячейку
читать данные из ячейки

Слайд 117

Выделение памяти (объявление)

var A: array[1..5] of integer;
V: array[0..5] of real;

минимальный

Выделение памяти (объявление) var A: array[1..5] of integer; V: array[0..5] of real;
индекс

максимальный индекс

const N = 10;
var A: array[1..N] of integer;

Индекс элемента — это значение, которое указывает на конкретный элемент массива.

Слайд 118

Что неправильно?

var A: array[10..1] of integer;
...
A[5] := 4.5;

[1..10]

var A: array[1..10] of integer;
...
A[15]

Что неправильно? var A: array[10..1] of integer; ... A[5] := 4.5; [1..10]
:= 'a';

Слайд 119

Обращение к элементу массива

A

массив

3

15

НОМЕР элемента массива
(ИНДЕКС)

A[1]

A[2]

A[3]

A[4]

A[5]

ЗНАЧЕНИЕ элемента массива

A[2]

НОМЕР (ИНДЕКС) элемента массива: 2

ЗНАЧЕНИЕ

Обращение к элементу массива A массив 3 15 НОМЕР элемента массива (ИНДЕКС)
элемента массива: 10

Слайд 120

Обращение к элементу массива

var i: integer;
i:= 2;
A[3]:= A[i] + 2*A[i-1] + A[2*i];
writeln(

Обращение к элементу массива var i: integer; i:= 2; A[3]:= A[i] +
A[3]+A[5] );

A[3]:= A[2] + 2*A[1] + A[4];
writeln( A[3]+A[5] );

101

152

Слайд 121

Что неверно?

var A: array[1..5] of integer;
x: integer;
...
x:= 2;
writeln( A[x-3] );
A[x+4]:=A[x-1]+A[2*x];

writeln( A[-1] );
A[6]:=A[1]+A[4];

Выход

Что неверно? var A: array[1..5] of integer; x: integer; ... x:= 2;
за границы массива — это обращение к элементу с индексом, который не существует в массиве.

Слайд 122

Перебор элементов массива

Перебор элементов: просматриваем все элементы массива и, если нужно, выполняем

Перебор элементов массива Перебор элементов: просматриваем все элементы массива и, если нужно,
с каждым из них некоторую операцию.

const N = 10;
var A: array[1..N] of integer;

for i:=1 to N do begin
{ здесь работаем с A[i] }
end;

Слайд 123

Заполнение массива

for i:=1 to N do
A[i]:= i;

В развёрнутом виде

A[1]:= 1;
A[2]:= 2;
A[3]:=

Заполнение массива for i:=1 to N do A[i]:= i; В развёрнутом виде
3;
...
A[N]:= N;

1

2

3

N

Слайд 124

X:= N;

Заполнение массива в обратном порядке

A[1]:= N;
A[2]:= N-1;
A[3]:= N-2;
...
A[N]:= 1;

for i:=1 to

X:= N; Заполнение массива в обратном порядке A[1]:= N; A[2]:= N-1; A[3]:=
N do begin
A[i]:= X;
end;

X:= X - 1
end;

X = N, N-1, …, 2, 1

начальное значение

уменьшение на 1

Слайд 125

Заполнение массива в обратном порядке

A[i]:= X;

–1

+1

i + X = N

Заполнение массива в обратном порядке A[i]:= X; –1 +1 i + X
+ 1

X = N + 1 - i

for i:=1 to N do
A[i]:= N + 1 – i
end;

Слайд 126

Вывод массива на экран

for i:=1 to N do
write( A[i] );

,

Вывод массива на экран for i:=1 to N do write( A[i] );
' ');

или так:

for i:=1 to N do
writeln( A[i] );

интервал между значениями

в столбик

или так:

write( '[' );
for i:=1 to N do
write( A[i], ',' );
writeln( ']' );

[1,2,3,4,5,]

Слайд 127

Ввод с клавиатуры

for i:=1 to N do begin
write( 'A[',i,']=' );
read(

Ввод с клавиатуры for i:=1 to N do begin write( 'A[',i,']=' );
A[i] )
end;

A[1] =
A[2] =
A[3] =
A[4] =
A[5] =

5
12
34
56
13

for i:=1 to N do
read( A[i] );

С подсказкой для ввода:

Слайд 128

В других языках программирования

С++:

int A[N], i;
for (i = 0; i < N;

В других языках программирования С++: int A[N], i; for (i = 0;
i++)
A[i] = i + 1;
for (i = 0; i < N; i++)
cout << A[i] << " ";

A = [0]*N
for i in range(N):
A[i] = i + 1
print(A)

Python:

Слайд 129

Задачи

«A»: а) Заполните все элементы массива из 10 элементов значением X ,

Задачи «A»: а) Заполните все элементы массива из 10 элементов значением X
введённым с клавиатуры.
б) Заполните массив из 10 элементов последовательными натуральными числами, начиная с X (значение X введите с клавиатуры).

«B»: а) Заполните массив из 10 элементов натуральными числами в порядке убывания. Значение X вводится с клавиатуры. Последний элемент должен быть равен X, предпоследний равен X+1 и т.д.
б) Заполните массив из 10 элементов степенями числа 2 (от 21 до 2N), так чтобы первый элемент был равен 2, второй – 4, третий – 8 и т.д.

Слайд 130

Задачи

«C»: а) Заполните массив из 10 элементов степенями числа 2, начиная с

Задачи «C»: а) Заполните массив из 10 элементов степенями числа 2, начиная
конца, так чтобы последний элемент массива был равен 1, а каждый предыдущий был в 2 раза больше следующего.
б) С клавиатуры вводится целое число X. Заполните массив из 11 элементов целыми числами, так чтобы средний элемент массива был равен X, слева от него элементы стояли по возрастанию, а справа – по убыванию. Соседние элементы отличаются на единицу. Например, при X = 3 массив из 5 элементов заполняется так: 1 2 3 2 1.

Слайд 131

Заполнение случайными числами

for i:=1 to N do begin
A[i]:=20+random(81);
write(A[i], ' ')
end;

сразу

Заполнение случайными числами for i:=1 to N do begin A[i]:=20+random(81); write(A[i], '
вывод на экран

Слайд 132

Задачи-2

«A»: Напишите программу, которая заполняет массив из 10 элементов случайными числами в

Задачи-2 «A»: Напишите программу, которая заполняет массив из 10 элементов случайными числами
диапазоне [0,10], выводит его на экран, а затем выводит на экран квадраты всех элементов массива.
Пример:
Массив: 5 6 2 3 1 4 8 7
Квадраты: 25 36 4 9 1 16 64 49

«B»: Напишите программу, которая заполняет массив из 10 элементов случайными числами в диапазоне [100,300] и выводит его на экран. После этого на экран выводятся средние цифры (число десятков) всех чисел, записанных в массив.
Пример:
Массив: 142 224 135 257 167 295 126 223 138 270
Число десятков: 4 2 3 5 6 9 2 2 3 7

Слайд 133

Задачи-2

«C»: Напишите программу, которая заполняет массив из 10 элементов случайными числами в

Задачи-2 «C»: Напишите программу, которая заполняет массив из 10 элементов случайными числами
диапазоне [100,500] и выводит его на экран. После этого на экран выводятся суммы цифр всех чисел, записанных в массив.
Пример:
Массив: 162 425 340 128 278 195 326 414 312 177
Суммы цифр: 9 11 7 11 17 15 11 9 6 15

Слайд 134

Программирование (Паскаль)

§ 22. Алгоритмы обработки массивов

Программирование (Паскаль) § 22. Алгоритмы обработки массивов

Слайд 135

Сумма элементов массива

sum:= 0;
for i:=1 to N do
sum:= sum + A[i];
writeln(

Сумма элементов массива sum:= 0; for i:=1 to N do sum:= sum
sum );

const N = 10;
var A: array[1..N] of integer;

Задача. Найти сумму элементов массива.

1

5

2

7

3

15

4

18

5

19

Слайд 136

Сумма не всех элементов массива

sum:= 0;
for i:=1 to N do
sum:= sum

Сумма не всех элементов массива sum:= 0; for i:=1 to N do
+ A[i];
writeln( sum );

Задача. Найти сумму чётных элементов массива.

if A[i] mod 2 = 0 then
sum:= sum + A[i];
writeln( sum );

if A[i] mod 2 = 0 then

Слайд 137

Задачи

«A»: Напишите программу, которая заполняет массив из 10 элементов случайными числами на

Задачи «A»: Напишите программу, которая заполняет массив из 10 элементов случайными числами
отрезке [–5; 5] и находит сумму положительных элементов.

«B»: Напишите программу, которая заполняет массив из 10 элементов случайными числами на отрезке [–2; 2] и находит произведение ненулевых элементов.

«C»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [100; 1000] и находит отдельно сумму элементов в первой и во второй половинах массива.

Слайд 138

Подсчёт элементов по условию

Задача. Найти количество чётных элементов массива.

var count: integer;
count:= 0;
for

Подсчёт элементов по условию Задача. Найти количество чётных элементов массива. var count:
i:=1 to N do
if A[i] mod 2 = 0 then
count:= count + 1;
writeln( count );

переменная-счётчик

Слайд 139

Среднее арифметическое

Задача. Найти среднее арифметическое элементов массива, которые больше 180 (рост в

Среднее арифметическое Задача. Найти среднее арифметическое элементов массива, которые больше 180 (рост
см).

sum:= 0;
for i:=1 to N do
if A[i]>180 then
sum:= sum + A[i];
writeln( sum/N );

Слайд 140

Среднее арифметическое

Задача. Найти среднее арифметическое элементов массива, которые больше 180 (рост в

Среднее арифметическое Задача. Найти среднее арифметическое элементов массива, которые больше 180 (рост
см).

sum:= 0;
count:= 0;
for i:=1 to N do
if A[i]>180 then begin
count:= count + 1;
sum:= sum + A[i];
end;
writeln( sum/count )

Слайд 141

Задачи

«A»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на

Задачи «A»: Напишите программу, которая заполняет массив из 20 элементов случайными числами
отрезке [0; 200] и считает число элементов, которые делятся на 10.

«B»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [0; 200] и считает число двузначных чисел в массиве.

«C»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [10; 100] и считает число пар соседних элементов, сумма которых делится на 3.

Слайд 142

Обработка потока данных

Задача. С клавиатуры вводятся числа, ввод завершается числом 0. Определить,

Обработка потока данных Задача. С клавиатуры вводятся числа, ввод завершается числом 0.
сколько было введено положительных чисел.

счётчик = 0
пока не введён 0:
если введено число > 0 то
счётчик:= счётчик + 1

нужен счётчик
счётчик увеличивается если число > 0
нужен цикл
это цикл с условием (число шагов неизвестно)

Слайд 143

Обработка потока данных

var x, count: integer;
count: = 0;
read( x );
while x <>

Обработка потока данных var x, count: integer; count: = 0; read( x
0 do begin
if x > 0 then
count:= count + 1;
read( x );
end;
writeln( count );

откуда взять x?

Слайд 144

Найди ошибку!

var x, count: integer;
count: = 0;
read( x );
while x <> 0

Найди ошибку! var x, count: integer; count: = 0; read( x );
do begin
if x > 0 then
count:= count + 1;
read( x );

end;
writeln( count );

read( x );

Слайд 145

Найди ошибку!

var x, count: integer;
count: = 0;

read( x );
while x = 0

Найди ошибку! var x, count: integer; count: = 0; read( x );
do begin
if x > 0 then
count:= count + 1;
read( x );
end;
writeln( count );

count: = 0;

<>

Слайд 146

Обработка потока данных

Задача. С клавиатуры вводятся числа, ввод завершается числом 0. Найти

Обработка потока данных Задача. С клавиатуры вводятся числа, ввод завершается числом 0.
сумму введённых чисел, оканчивающихся на цифру "5".

сумма: = 0
пока не введён 0:
если число оканчивается на "5" то
сумма:= сумма + число

нужна переменная для суммы
число добавляется к сумме, если оно заканчивается на "5"
нужен цикл с условием

if x mod 10 = 5 then

Слайд 147

Обработка потока данных

Задача. С клавиатуры вводятся числа, ввод завершается числом 0. Найти

Обработка потока данных Задача. С клавиатуры вводятся числа, ввод завершается числом 0.
сумму введённых чисел, оканчивающихся на цифру "5".

var x, sum: integer;
sum: = 0;
read( x );
while x <> 0 do begin
if x mod 10 = 5 then
sum:= sum + x;
read( x )
end;
writeln( sum );

Слайд 148

Найди ошибку!

var x, sum: integer;
sum: = 0;
read( x );

while x <> 0

Найди ошибку! var x, sum: integer; sum: = 0; read( x );
do begin
if x mod 10 = 5 then
sum:= sum + x;
read( x )
end;
writeln( sum );

read( x );

Слайд 149

Задачи

«A»: На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулём.

Задачи «A»: На вход программы поступает неизвестное количество целых чисел, ввод заканчивается
Определить, сколько получено чисел, которые делятся на 3.
«B»: На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулём. Определить, сколько получено двузначных чисел, которые заканчиваются на 3.

Слайд 150

Задачи

«C»: На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулём.

Задачи «C»: На вход программы поступает неизвестное количество целых чисел, ввод заканчивается
Найти среднее арифметическое всех двузначных чисел, которые делятся на 7.
«D»: На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулём. Найти максимальное из введённых чётных чисел.

Слайд 151

Перестановка элементов массива

с:= a;
a:= b;
b:= c;

элементы массива:

с:= A[i];
A[i]:= A[k];
A[k]:= c;

Перестановка элементов массива с:= a; a:= b; b:= c; элементы массива: с:=

Слайд 152

Перестановка пар соседних элементов

Задача. Массив A содержит чётное количество элементов N. Нужно

Перестановка пар соседних элементов Задача. Массив A содержит чётное количество элементов N.
поменять местами пары соседних элементов: первый со вторым, третий — с четвёртым и т. д.

Слайд 153

Перестановка пар соседних элементов

for i:=1 to N do begin
поменять местами A[i]

Перестановка пар соседних элементов for i:=1 to N do begin поменять местами
и A[i+1]
end;

?

выход за границы массива

Слайд 154

Перестановка пар соседних элементов

i:= 1;
while i < N do begin
{

Перестановка пар соседних элементов i:= 1; while i { переставляем A[i] и
переставляем A[i] и A[i+1] }
с:= A[i];
A[i]:= A[i+1];
A[i+1]:= c;
i:= i + 2 { к следующей паре }
end;

не выходим за границу

A[1]↔A[2], A[3]↔A[4], …, A[N-1]↔A[N]

i:= i + 2

Слайд 155

Реверс массива

Задача. Переставить элементы массива в обратном порядке (выполнить реверс).

A[1]↔A[N]
A[2]↔A[N-1]
A[i]↔A[N+1-i]
A[N]↔A[1]

1+N =

Реверс массива Задача. Переставить элементы массива в обратном порядке (выполнить реверс). A[1]↔A[N]
N+1
2+N-1 = N+1
i+??? = N+1
N+1 = N+1

Слайд 156

Реверс массива

for i:=1 to N do begin
поменять местами A[i] и A[N+1-i]
end;

i=1

i=2

i=3

i=4

do

Реверс массива for i:=1 to N do begin поменять местами A[i] и
begin

N div 2

Слайд 157

Конец фильма

ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г. Санкт-Петербург
kpolyakov@mail.ru
ЕРЕМИН

Конец фильма ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики ГБОУ СОШ № 163,
Евгений Александрович
к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь
eremin@pspu.ac.ru