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

Содержание

Слайд 2

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

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

§ 17. Введение

Слайд 3

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

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

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

программисты.

Чем занимаются программисты:

Слайд 4

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

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

Слайд 5

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

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

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

{ конец программы }

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

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

Слайд 6

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

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

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

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

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

write('Привет',

Вася!);

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

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

Слайд 7

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

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

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

ожидание:

реальность:

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

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

решение:

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

Петя!');

и перейти на новую строку

ln

Слайд 8

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

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

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

Транслятор —

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

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

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

Слайд 9

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

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

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

пошаговый

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

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

Слайд 10

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

Задачи

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

экран рисунок из букв
Ж
ЖЖЖ
ЖЖЖЖЖ
ЖЖЖЖЖЖЖ
HH HH
ZZZZZ
Слайд 11

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

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

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

Слайд 12

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

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

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

program Sum;
begin
{

ввести два числа }
{ вычислить их сумму }
{ вывести сумму на экран }
end.

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

Слайд 13

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

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

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

их сумму }
{ вывести сумму на экран }
end.

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

var a, b, c: integer;

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

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

Слайд 14

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

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

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

var a, b, c:

integer;

МОЖНО использовать
латинские буквы (A-Z, a-z)
цифры
знак подчеркивания _

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

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

Слайд 15

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

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

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

a := 5;

:=

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

a := 5;
a :=

18;

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

write(a);

с:= 14;
write(с);

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

14

c

a ← 5

Слайд 16

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

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

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

i:= i + 1;

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

a:= 4;
b:=

7;
a:= 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

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

program Sum;
var a, b, c: integer;
begin
read(a, b); {

ввести два числа }
c:= a + b; { вычислить их сумму }
write(c) { вывести сумму на экран }
end.

ожидание:

реальность:

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

5 7
12

Слайд 20

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

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

5+7=12

значение a

значение с

значение b

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

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

Слайд 21

Программа сложения чисел program Sum; var a, b, c: integer; begin

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

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

');
read(a, b);
c:= a + b;
write(a, '+', b, '=', c)
end.
Слайд 22

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

Задачи

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

4
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 –

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

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

деления

var 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

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

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

n mod 10; { 3 }

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

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

Слайд 28

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

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

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

123

write(a,' ',b,'

',c);

1 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 по умолчанию

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

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

минимально

возможное

вариант:

Слайд 32

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

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

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

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

отличаться
Слайд 33

Операции с вещественными числами x:= 1.6; write(trunc(x)); trunc – целая часть

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

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

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

отбрасывается)
round – округление к ближайшему целому
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

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

1/3 = 0,33333…

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

var x, y,

z: 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»: Оцифровка звука выполняется в режиме стерео с частотой дискретизации

Задачи

«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:=

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

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

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

| отрезок [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:

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

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

var K, L, M: integer;
K:=

random(6); { отрезок [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 >

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

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

if a > b then

M:= a
else
M:= b;
Слайд 48

Вариант 1. Программа program Maximum; var a, b, M: integer; begin

Вариант 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

Вариант 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 M:= a; if b M:= b; if a

Примеры

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

then
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 c = a; a

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

С:

if (a < b) {
c = 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('Введите ваш возраст');

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


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

>= 25 then
if v <= 40 then
write('Подходит!')
else
write('Не подходит.')
else
write('Не подходит.');
end.

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

Слайд 58

Хорошее решение (операция «И») program Work; var v: integer; begin writeln('Введите

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

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

if (v >= 25) and (v <= 40) then
write('Подходит!')
else
write('Не подходит.');
end.

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

Слайд 59

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

Примеры

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

if (10

<= 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) ИЛИ

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

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

1

if

not(a > 2) or (c <> 5) and (b < a) then
...

4

2

3

5

6

Слайд 64

Сложные условия Истинно или ложно при a := 2; b :=

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

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

c := 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»: Напишите программу, которая получает возраст человека (целое число, не

Задачи

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

120) и выводит этот возраст со словом «год», «года» или «лет». Например, «21 год», «22 года», «25 лет».
Пример:
Введите возраст: 18
Вам 18 лет.
Пример:
Введите возраст: 21
Вам 21 год.
Пример:
Введите возраст: 22
Вам 22 года.
Слайд 68

Логические переменные var b: boolean; ... b:= True; { 1 }

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

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

}

только два возможных значения

Пример:

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('Кормит детей молоком? ');
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 =

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

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


не сработает на 'Да'

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

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

Ещё лучше:

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

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

Слайд 76

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

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

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

Слайд 77

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

Виды ошибок

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

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

Логические

ошибки – неверно составленный алгоритм.

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

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

Слайд 78

Пример отладки программы program SqEq; var a, b, c, D, x1,

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

program SqEq;
var a, b, c, D, x1, x2: real;
begin

write('Введите 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. a = 1, b = 2, c = 1.

x1=-1.0

x2=-1.0

x1=-1.0 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, ' ',

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

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

D, нс
...

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. a = 1, b = 2, c =

1.

x1=-1.0 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»: Загрузите программу, которая должна вычислять сумму цифр трёхзначного числа:

Задачи

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

d1, 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: 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('Привет');

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

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

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

Цикл «N раз»:

{ сделай 5

раз }
writeln('Привет');
Слайд 87

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

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

{счётчик:= 0 }
{пока счётчик < 5 }
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

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

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

count ???
end;

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

0

- 1

Слайд 89

Цикл с предусловием условие проверяется при входе в цикл как только

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

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

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

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

тело цикла

while True do begin
...
end;

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

Слайд 90

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

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

Задача. Вычислить сумму цифр введённого числа.
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) увеличиваем сумму на

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

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

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

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

Слайд 92

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

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

начало

конец

нет

да

N <> 0?

sum:= 0

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

d;
N:= N div 10;

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

ввод N

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

вывод sum

Слайд 93

Сумма цифр числа program SumDigits; var N, d, sum: integer; begin

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

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

read(N);
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

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

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 >

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

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

a = 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);

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

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

}
while 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 от

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

Задача. Вывести на экран степени числа 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.

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

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

var sum,

i: 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 до

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

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

sum:=

0;
for 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,

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

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

+= 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

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

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;

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

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

[1..10]

var A: array[1..10] of

integer;
...
A[15] := 'a';
Слайд 119

Обращение к элементу массива A массив 3 15 НОМЕР элемента массива

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

A

массив

3

15

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

A[1]

A[2]

A[3]

A[4]

A[5]

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

A[2]

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

2

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

Слайд 120

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

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

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

A[2*i];
writeln( 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:=

Что неверно?

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];

Выход за границы массива — это обращение к элементу с индексом, который не существует в массиве.

Слайд 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; В развёрнутом

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

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

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

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

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

1

2

3

N

Слайд 124

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

X:= N;

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

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

for i:=1

to 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 +

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

A[i]:= X;

–1

+1

i + X =

N + 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,']='

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

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

read( 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 =

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

С++:

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

N; 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 элементов значением

Задачи

«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],

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

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

')
end;

сразу вывод на экран

Слайд 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:= 0;
for i:=1 to N do
sum:= sum +

A[i];
writeln( 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

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

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

sum + 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

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

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

var count: integer;
count:=

0;
for 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 то
счётчик:= счётчик + 1

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

Слайд 143

Обработка потока данных var x, count: integer; count: = 0; read(

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

var x, count: integer;
count: = 0;
read( x );
while 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

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

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

0 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

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

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

read( x );
while x =

0 do begin
if x > 0 then
count:= count + 1;
read( x );
end;
writeln( count );

count: = 0;

<>

Слайд 146

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

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

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

Найти сумму введённых чисел, оканчивающихся на цифру "5".

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

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

if x mod 10 = 5 then

Слайд 147

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

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

Задача. С клавиатуры вводятся числа, ввод завершается числом 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

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

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 );

read( x );

Слайд 149

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

Задачи

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

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

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

Задачи

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

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

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

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

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

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

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

Слайд 152

Перестановка пар соседних элементов Задача. Массив A содержит чётное количество элементов

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

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

Нужно поменять местами пары соседних элементов: первый со вторым, третий — с четвёртым и т. д.
Слайд 153

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

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

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

A[i] и A[i+1]
end;

?

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

Слайд 154

Перестановка пар соседних элементов i:= 1; while i { переставляем A[i]

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

i:= 1;
while i < N do begin

{ переставляем 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

= N+1
2+N-1 = N+1
i+??? = N+1
N+1 = N+1
Слайд 156

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

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

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

A[N+1-i]
end;

i=1

i=2

i=3

i=4

do begin

N div 2

Слайд 157

Конец фильма ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики ГБОУ СОШ №

Конец фильма

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

ЕРЕМИН Евгений Александрович
к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь
eremin@pspu.ac.ru