§ 17. Введение
§ 1 8. Линейные программы
§ 19. Ветвления
§ 2 0. Программирование циклических алгоритмов
§ 21 . Массивы
§ 22 . Алгоритмы обработки массивов
§ 17. Введение
Что такое программирование?
Программирование — это создание программ для компьютеров. Этим занимаются программисты .
Чем занимаются программисты:
анализ задачи (выделение исходных данных, связей между ними, этапов решения задачи)
написание и отладка программ
Направления в программировании
операционные системы, утилиты, драйверы
прикладные программы, в т.ч. для мобильных устройств
программист баз данных
системы управления базами данных
program qq ;
Что делает эта программа ?
Вывод на экран
program Hello ;
write( ‘ Привет! ‘ );
Оператор — это команда языка программирования.
write( ‘ Привет ‘ , Вася !);
write( ‘ Привет , Вася !’ );
вся строка в апострофах
Переход на новую строку
write( ‘ Привет , Петя !’ );
Привет , Вася ! Привет , Петя !
writeln( ‘ Привет , Вася !’ );
writeln( ‘ Привет , Петя !’ );
и перейти на новую строку
Системы программирования — это средства для создания новых программ.
Транслятор — это программа, которая переводит тексты программ, написанных программистом, в машинные коды (команды процессора).
write( ‘ Привет! ‘ ) ;
Отладчик — это программа для поиска ошибок в других программах.
Среда программирования ( IDE ) :
« B »: Вывести на экран текст «лесенкой»
« C »: Вывести на экран рисунок из букв
§ 18. Линейные программы
Задача . Ввести два числа и вычислить их сумму.
p rogram Sum ;
Псевдокод – алгоритм на русском языке с элементами языка программирования.
Компьютер не может исполнить псевдокод!
Зачем нужны переменные?
Переменная — это величина, которая имеет имя, тип и значение. Значение переменной может изменяться во время выполнения программы.
var a, b, c : integer ;
Идентификатор — это имя программы или переменной.
заглавные и строчные буквы НЕ различаются
МОЖНО использовать
Имя не может начинаться с цифры!
Какие имена правильные?
Работа с переменными
Присваивание (запись значения)
a := 5 ;
a := 18 ;
Что будет храниться в a ?
write( a );
В чём разница?
с:= 14 ;
write( с );
write( ‘ с ‘ );
увеличить на 1
i:= i + 1 ;
a:= 4 ;
b:= 7 ;
a:= a + 1 ;
b:= b + 1 ;
a:= a + b;
b:= b + a;
a:= a + 2 ;
b:= b + a;
Ввод с клавиатуры
Цель – изменить исходные данные, не меняя программу.
read( a );
через Enter :
Программа сложения чисел
program Sum ;
var a, b, c: integer ;
Введите два числа: 5 7
Как улучшить диалог?
write( данных с текстом
write ( ‘+’ );
write ( ‘=’ );
write (a , ‘+’ , b , ‘=’ , c);
write( ‘ Введите два числа: ‘ );
c:= a + b;
write(a, ‘+’ , b, ‘=’ , c)
Как переделать для 3-х чисел?
« A »: Ввести три числа, найти их сумму.
Введите три числа:
« B »: Ввести три числа, найти их сумму и произведение.
« C »: Ввести три числа, найти их сумму, произведение и среднее арифметическое.
(4+5+7) / 3 =5.33 3333
Линейная запись (в одну строку):
a:=(c+b- 1 )/ 2 *d ;
* – умножение
/ – деление
** – возведение в степень ( x 2 x**2 )
var x, a, b: integer ;
x:= a / b;
var x: real ;
Порядок выполнения операций
a := c + (1 – 2 * b) / 2 * d ;
Частное и остаток
div – деление нацело (остаток отбрасывается)
mod – остаток от деления
175 сек = 2 мин 55 сек
Как получить 2 и 55?
var t, m, s: integer ;
t:= 17 5 ;
При делении на 10 нацело отбрасывается последняя цифра числа.
Остаток от деления на 10 – это последняя цифра числа.
a:= 1 ; b:= 2 ; c:= 3 ;
write (a, b, c);
1 2 3
write (a, ‘ ‘ ,b, ‘ ‘ ,c ) ;
write ( a, b: 3 , c: 5 ) ;
количество знаков на вывод числа
Сколько знаков для вывода a ?
« A »: Ввести число, обозначающее количество секунд. Вывести то же самое время в минутах и секундах.
Введите число секунд: 175
2 мин. 55 с.
« B »: Ввести число, обозначающее количество секунд. Вывести то же самое время в часах, минутах и секундах.
Введите число секунд: 8325
2 ч. 18 мин. 45 с
«С»: Занятия в школе начинаются в 8-30. Урок длится 45 минут, перерывы между уроками – 10 минут. Ввести номер урока и вывести время его окончания.
Введите номер урока: 6
var x: real ;
x: = 12.34567891234 ;
write ( x );
12 . 3 45679
write ( x : 10 : 3 );
12 . 3 46
в дробной части
всего на число
write ( x : 8 : 2 );
write ( x : 2 : 2 );
write ( x : 0 : 1 );
Научный формат чисел
x: = 123456789 ;
1 . 23 4568 e+008
1,23 4568 10 8
x: = 0.0000 123456789 ;
1 . 23 4568 e-005
1,23 4568 10 –5
количество знаков может отличаться
Операции с вещественными числами
trunc – целая часть числа ( дробная часть отбрасывается)
round – округление к ближайшему целому
frac – дробная часть
x : = 1 . 6 ;
write ( trunc ( x ));
write ( round ( x ));
write ( frac ( x ));
sqrt – квадратный корень
x : = 2 . 2 5 ;
write ( sqrt ( x ));
бесконечно много знаков
Большинство вещественных чисел хранятся в памяти компьютера с ошибкой!
var x , y, z: real ;
x:= 1 / 2 ;
y:= 1 / 3 ;
write ( x +y-z);
« A »: Ввести число, обозначающее размер одной фотографии в Мбайтах. Определить, сколько фотографий поместится на флэш-карту объёмом 2 Гбайта.
Размер фотографии в Мбайтах: 6.3
Поместится фотографий: 325.
« B »: Оцифровка звука выполняется в режиме стерео с частотой дискретизации 44,1 кГц и глубиной кодирования 24 бита. Ввести время записи в минутах и определить, сколько Мбайт нужно выделить для хранения полученного файла (округлить результат в большую сторону).
Введите время записи в минутах: 10
Размер файла 152 Мбайт
«С»: Разведчики-математики для того, чтобы опознать своих, используют числовые пароли. Услышав число-пароль, разведчик должен возвести его в квадрат и сказать в ответ первую цифры дробной части полученного числа. Напишите программу, которая по полученному паролю (вещественному числу) вычисляет число-ответ.
Введите пароль: 1.92
Случайные и псевдослучайные числа
Случайные числа — это последовательность чисел, в которой невозможно предсказать следующее число, даже зная все предыдущие.
Псевдослучайные числа — похожи на случайные, но строятся по формуле.
X = 0
Датчик случайных чисел
Целые числа на отрезке:
цел K , L
англ. integer – целый
random – случайный
Вещественные числа в полуинтервале:
цел x , y
var K, L, M: integer ;
var x , y, z, w: real ;
« A »: В игре «Русское лото» из мешка случайным образом выбираются бочонки, на каждом из которых написано число от 1 до 90. Напишите программу, которая выводит наугад первые 5 выигрышных номеров.
« B »: + Доработайте программу «Русское лото» так, чтобы все 5 значений гарантированно были бы разными (используйте разные диапазоны).
«С»: + Игральный кубик бросается три раза (выпадает три случайных значения). Из этих чисел составляется целое число, программа должна найти его квадрат.
Его квадрат 15129
« D »: + Получить случайное трёхзначное число и вывести в столбик его отдельные цифры.
Получено число 123
§ 19. Ветвления
b then M:= a else M:= b ; a b? M:= a M:= b вывод M ? Если a = b? конец ” width=”640″
Выбор наибольшего из двух чисел
полная форма ветвления
ввод a , b
if a b then
b then else write ln( ‘Наибольшее число ‘ , M); end. полная форма условного оператора M:= a ! Перед else не ставится точка с запятой! M:= b; 48 ” width=”640″
Вариант 1. Программа
program Maximum ; var a, b, M: integer ; begin
write ln( ‘Введите два целых числа’ );
read( a, b); if a b then else write ln( ‘Наибольшее число ‘ , M); end.
a? M:= b вывод M конец ” width=”640″
Выбор наибольшего из двух чисел-2
неполная форма ветвления
b a?
a then M:= b; write ln( ‘Наибольшее число ‘, M); end. неполная форма условного оператора ” width=”640″
Вариант 2. Программа
program Maximum2 ;
begin write ln( ‘Введите два целых числа’ ); read( a, b);
M:= a; if b a then M:= b; write ln( ‘Наибольшее число ‘, M); end.
Поиск минимального :
M:= a ;
if b a then
Что плохо ?
Когда работает неверно ?
c := a ;
Перед end можно не ставить точку с запятой!
В других языках программирования
c = a ;
a = b;
b = c;
if a b :
b then write ln( ‘Андрей старше’ ) else write ln( ‘Борис старше’ ); else относится к ближайшему if ” width=”640″