Программирование на языке Паскаль
Программирование на языке Паскаль
Что такое алгоритм?
Свойства алгоритма
Как работает алгоритм?
Способы записи алгоритмов
Способы записи алгоритмов
Программирование на языке Паскаль
Простейшая программа
Вывод на экран
Задания
Сложение чисел
Сумма: псевдокод
Переменные
Имена переменных
Объявление переменных
Тип переменной
Ввод значения в переменную
Ввод значений переменной
Изменение значений переменной
Вывод данных
Сложение чисел: простое решение
Сложение чисел: полное решение
Снова про оператор вывода
Программирование на языке Паскаль
Типы данных
Арифметические выражения
Деление, div, mod
div и mod для отрицательных чисел
Вещественные числа
Стандартные функции
Случайные числа
Случайные числа на компьютере
Линейный конгруэнтный генератор
Генератор случайных чисел
Другой интервал
Задачи
1.45M
Category: programmingprogramming

Программирование на языке Паскаль

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

1
Программирование
на языке Паскаль
§ 54. Алгоритм и его свойства
§ 55. Простейшие программы
§ 56. Вычисления
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

2. Программирование на языке Паскаль

2
Программирование
на языке Паскаль
§ 54. Алгоритм и его
свойства
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

3. Что такое алгоритм?

Алгоритмизация и программирование, Паскаль, 10 класс
3
Что такое алгоритм?
Алгоритм — это точное описание
порядка действий, которые должен
выполнить исполнитель для решения
задачи за конечное время.
Исполнитель – это устройство или
одушёвленное существо (человек),
способное понять и выполнить
команды, составляющие алгоритм.
Мухаммед ал-Хорезми
(ок. 783–ок. 850 гг.)
Формальные исполнители: не понимают
(и не могут понять) смысл команд.
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

4. Свойства алгоритма

Алгоритмизация и программирование, Паскаль, 10 класс
4
Свойства алгоритма
Дискретность — алгоритм состоит из отдельных команд,
каждая из которых выполняется за конечное время.
Детерминированность (определённость) — при каждом
запуске алгоритма с одними и теми же исходными
данными получается один и тот же результат.
Понятность — алгоритм содержит только команды,
входящие в систему команд исполнителя.
Конечность (результативность) — для корректного
набора данных алгоритм должен завершаться через
конечное время.
Корректность — для допустимых исходных данных
алгоритм должен приводить к правильному результату.
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

5. Как работает алгоритм?

Алгоритмизация и программирование, Паскаль, 10 класс
5
Как работает алгоритм?
дискретный
объект
1234
алгоритм
2345
шаг 1
5432
шаг 2
шаг 3
дискретный
объект
25 16 9 4
• получает на вход дискретный объект
• в результате строит другой дискретный объект (или
выдаёт сообщение об ошибке)
• обрабатывает объект по шагам
• на каждом шаге получается новый дискретный объект
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

6. Способы записи алгоритмов

Алгоритмизация и программирование, Паскаль, 10 класс
6
Способы записи алгоритмов
• естественный язык
установить соединение
пока не принята команда «стоп»
принять команду
выполнить команду
завершить сеанс связи
• псевдокод
установить соединение
нц
принять команду
выполнить команду
кц_при команда = 'stop'
завершить сеанс связи
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

7. Способы записи алгоритмов

Алгоритмизация и программирование, Паскаль, 10 класс
7
Способы записи алгоритмов
• блок-схема
установить
соединение
принять
команду
выполнить
команду
нет
• программа
setConnection;
repeat
cmd:= getCommand;
executeCommand(cmd);
until cmd = "stop";
closeConnection;
«стоп»?
да
завершить
соединение
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

8. Программирование на языке Паскаль

8
Программирование
на языке Паскаль
§ 55. Простейшие программы
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

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

Алгоритмизация и программирование, Паскаль, 10 класс
9
Простейшая программа
название алгоритма
program
begin {
{
end. {
qq;
начало программы }
тело программы }
конец программы }
комментарии в скобках {}
не обрабатываются
?
Что делает эта программа?
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

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

Алгоритмизация и программирование, Паскаль, 10 класс
10
Вывод на экран
program qq;
begin
write('2+');
{ без перехода }
writeln('2=?'); { на новую строку}
writeln('Ответ: 4');
end.
Протокол:
2+2=?
Ответ: 4
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

11. Задания

Алгоритмизация и программирование, Паскаль, 10 класс
11
Задания
«B»: Вывести на экран текст «лесенкой»
Вася
пошел
гулять
«C»: Вывести на экран рисунок из букв
Ж
ЖЖЖ
ЖЖЖЖЖ
ЖЖЖЖЖЖЖ
HH HH
ZZZZZ
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

12. Сложение чисел

Алгоритмизация и программирование, Паскаль, 10 класс
12
Сложение чисел
Задача. Ввести с клавиатуры два числа и найти их сумму.
Протокол:
Введите два целых числа
25 30
пользователь
25+30=55
компьютер
компьютер считает сам!
?
1.
2.
3.
4.
Как ввести числа в память?
Где хранить введенные числа?
Как вычислить?
Как вывести результат?
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

13. Сумма: псевдокод

Алгоритмизация и программирование, Паскаль, 10 класс
13
Сумма: псевдокод
program qq;
begin
{ ввести два числа }
{ вычислить их сумму }
{ вывести сумму на экран }
end.
Псевдокод: алгоритм на
русском языке с элементами
Паскаля.
!
Компьютер не может исполнить псевдокод!
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

14. Переменные

Алгоритмизация и программирование, Паскаль, 10 класс
14
Переменные
Переменная – это величина, имеющая имя, тип
и значение. Значение переменной можно
изменять во время работы программы.
Значение
Другой тип
данных
Имя
К.Ю. Поляков, Е.А. Ерёмин, 2013
!
?
Поместится?
В переменной хранятся данные
определенного типа!
http://kpolyakov.spb.ru

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

Алгоритмизация и программирование, Паскаль, 10 класс
15
Имена переменных
МОЖНО использовать
• латинские буквы (A-Z)
заглавные и строчные буквы НЕ различаются
• цифры
имя не может начинаться с цифры
• знак подчеркивания _
НЕЛЬЗЯ использовать
• русские буквы
• пробелы
• скобки, знаки +, =, !, ? и др.
Какие имена правильные?
AXby R&B 4Wheel Вася “PesBarbos”
TU154 [QuQu] _ABBA A+B
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

16. Объявление переменных

Алгоритмизация и программирование, Паскаль, 10 класс
16
Объявление переменных
Типы переменных:
• integer
{ целая }
• real
{ вещественная }
• и другие…
выделение
Объявление переменных:
variable – переменная
места в памяти
тип – целые
var a, b, c: integer;
список имен
переменных
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

17. Тип переменной

Алгоритмизация и программирование, Паскаль, 10 класс
17
Тип переменной
• область допустимых значений
• допустимые операции
• объём памяти
• формат хранения данных
• для предотвращения случайных ошибок
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

18. Ввод значения в переменную

Алгоритмизация и программирование, Паскаль, 10 класс
18
Ввод значения в переменную
оператор
ввода
5
read ( a );
!
1. Программа ждет, пока пользователь введет
значение и нажмет Enter.
2. Введенное значение записывается в
переменную a.
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

19. Ввод значений переменной

Алгоритмизация и программирование, Паскаль, 10 класс
19
Ввод значений переменной
Ввод значений двух
переменных (через
пробел или Enter).
read ( a, b );
25 30
25 a
30 b
25
30
25 a
30 b
через пробел:
через Enter:
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

20. Изменение значений переменной

Алгоритмизация и программирование, Паскаль, 10 класс
20
Изменение значений переменной
var a, b: integer;
a
?
5
...
a := 5;
b := a + 2;
a := (a + 2)*(b – 3);
b := b + 1;
5
b
5+2
?
7
a
28
5
7*4
b
7
8
К.Ю. Поляков, Е.А. Ерёмин, 2013
7+1
http://kpolyakov.spb.ru

21. Вывод данных

Алгоритмизация и программирование, Паскаль, 10 класс
21
Вывод данных
write( a );
{ вывод значения
переменной a}
writeln( a ); { вывод значения
переменной a и переход
на новую строку}
writeln( 'Привет!' ); { вывод текста }
writeln( 'Ответ: ', c );
{вывод текста и значения переменной c}
writeln ( a, '+', b, '=', c );
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

22. Сложение чисел: простое решение

Алгоритмизация и программирование, Паскаль, 10 класс
22
Сложение чисел: простое решение
program Sum;
var a, b, c: integer;
begin
read ( a, b );
c := a + b;
Что плохо?
?
writeln ( c );
end.
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

23. Сложение чисел: полное решение

Алгоритмизация и программирование, Паскаль, 10 класс
23
Сложение чисел: полное решение
program Sum;
var a, b, c: integer;
begin
writeln('Введите два целых числа');
read ( a, b );
c := a + b;
writeln ( a, '+', b, '=', c );
end.
Протокол:
компьютер
Введите два целых числа
25 30
пользователь
25+30=55
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

24. Снова про оператор вывода

Алгоритмизация и программирование, Паскаль, 10 класс
24
Снова про оператор вывода
Вычисление выражений:
writeln ( a, '+', b, '=', a+b );
Форматный вывод:
a:= 123;
write( a:5 );
123
5 знаков
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

25. Программирование на языке Паскаль

25
Программирование
на языке Паскаль
§ 56. Вычисления
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

26. Типы данных

Алгоритмизация и программирование, Паскаль, 10 класс
26
Типы данных
• byte
• shortint
• word
• longint
{
{
{
{
целые
целые
целые
целые
0..255 }
-128..127 }
0..65535 }
–2147483648..2147483647 }
• single
• real
• double
• extended
{
4 байта }
Сколько байт в памяти?
? вещественная,
{ вещественная, 6 байта }
{ вещественная, 8 байтов }
{ вещественная, 10 байтов }
• boolean
• char
• string
{ логическая, 1 байт }
{ символ, 1 байт }
{ символьная строка }
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

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

Алгоритмизация и программирование, Паскаль, 10 класс
27
Арифметические выражения
3
1 2
4
5
6
a:= (c + b*5*3 - 1) / 2 * d;
Приоритет (старшинство):
c b 5 3 1
1) скобки
a
d
2
2) умножение и деление
3) сложение и вычитание
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

28. Деление, div, mod

Алгоритмизация и программирование, Паскаль, 10 класс
28
Деление, div, mod
Результат деления «/» – вещественное число:
var a: single;
a:= 2 / 3;
0.6666…
div – деление нацело (остаток отбрасывается)
mod – остаток от деления
var a, b, d: integer;
...
d := 85;
b := d div 10; { 8 }
a := d mod 10; { 5 }
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

29. div и mod для отрицательных чисел

Алгоритмизация и программирование, Паскаль, 10 класс
29
div и mod для отрицательных чисел
write(-7 div 2, ',');
write(-7 mod 2);
-3
-1
-7 = (-3)*2 + (-1)
!
В математике не так!
-7 = (-4)*2 + 1
К.Ю. Поляков, Е.А. Ерёмин, 2013
остаток 0
http://kpolyakov.spb.ru

30. Вещественные числа

Алгоритмизация и программирование, Паскаль, 10 класс
30
Вещественные числа
!
Целая и дробная части числа разделяются
точкой!
var x: double;
...
x:= 123.456;
Форматный вывод:
a:= 1;
write( a/3 );
write( a/3:7:3 );
всего знаков
К.Ю. Поляков, Е.А. Ерёмин, 2013
3,333333 10-1 = 0,3333333
3.333333E-001
0.333
в дробной части
http://kpolyakov.spb.ru

31. Стандартные функции

Алгоритмизация и программирование, Паскаль, 10 класс
31
Стандартные функции
abs(x) —
sqrt(x) —
sin(x) —
cos(x) —
exp(x) —
ln(x)

trunc(x)—
round(x)—
модуль
квадратный корень
синус угла, заданного в радианах
косинус угла, заданного в радианах
экспонента ех
натуральный логарифм
отсечение дробной части
округление до ближайшего целого
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

32. Случайные числа

Алгоритмизация и программирование, Паскаль, 10 класс
32
Случайные числа
Случайно…
• встретить друга на улице
• разбить тарелку
• найти 10 рублей
• выиграть в лотерею
Случайный выбор:
• жеребьевка на
соревнованиях
• выигравшие номера
в лотерее
Как получить случайность?
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

33. Случайные числа на компьютере

Алгоритмизация и программирование, Паскаль, 10 класс
33
Случайные числа на компьютере
Электронный генератор
• нужно специальное устройство
• нельзя воспроизвести результаты
Псевдослучайные числа – обладают свойствами
случайных чисел, но каждое следующее число
вычисляется по заданной формуле.
Метод середины квадрата (Дж. фон Нейман)
зерно
564321
318458191041
458191
в квадрате • малый период
(последовательность
повторяется через 106 чисел)
209938992481
938992
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

34. Линейный конгруэнтный генератор

Алгоритмизация и программирование, Паскаль, 10 класс
34
Линейный конгруэнтный генератор
X := (a*X+b) mod c | интервал от 0 до c-1
X := (X+3) mod 10 | интервал от 0 до 9
X := 0 3 6 9 2 5 8
8 1 4 7 0
зерно
!
зацикливание
Важен правильный выбор параметров
a, b и с!
Компилятор GCC:
a = 1103515245
b = 12345
c = 231
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

35. Генератор случайных чисел

Алгоритмизация и программирование, Паскаль, 10 класс
35
Генератор случайных чисел
Вещественные числа в интервале [0,1):
var X, Y: double;
...
X:= random; { интервал от 0 до 1 (<1) }
Y:= random; { это уже другое число! }
англ. random – случайный
Целые числа в интервале [0,10):
var K, L: integer;
...
K:= random( 10 ) { интервал от 0 до 9 (<10) }
L:= random( 10 ) { это уже другое число! }
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

36. Другой интервал

Алгоритмизация и программирование, Паскаль, 10 класс
36
Другой интервал
Вещественные числа:
var X, a, b: double;
...
X:= random*10; { расширение интервала: [0,10) }
X:= random*10 + 5;
{ расширение и сдвиг: [5,15) }
X:= random*(b-a) + a;
{ расширение и сдвиг: [a,b) }
Целые числа:
var K, a, b: integer;
...
K:= random(10) + 5;
{ [5,14] }
X:= random(b-a+1) + a; { [a,b] }
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru

37. Задачи

Алгоритмизация и программирование, Паскаль, 10 класс
37
Задачи
«A»: Ввести с клавиатуры три целых числа, найти их сумму, произведение и
среднее арифметическое.
Пример:
Введите три целых числа:
5 7 8
5+7+8=20
5*7*8=280
(5+7+8)/3=6.667
«B»: Ввести с клавиатуры координаты двух точек (A и B) на плоскости
(вещественные числа). Вычислить длину отрезка AB.
Пример:
Введите координаты точки A:
5.5 3.5
Введите координаты точки B:
1.5 2
Длина отрезка AB = 4.272
«C»: Получить случайное трехзначное число и вывести через запятую его
отдельные цифры.
Пример:
Получено число 123.
Его цифры 1, 2, 3.
К.Ю. Поляков, Е.А. Ерёмин, 2013
http://kpolyakov.spb.ru
English     Русский Rules