Программирование на языке Паскаль
Алгоритм
Алгоритм – это четко определенный план действий для исполнителя.
Свойства алгоритма
- дискретность : состоит из отдельных шагов (команд) понятность : должен включать только команды, известные исполнителю (входящие в СКИ) определенность : при одинаковых исходных данных всегда выдает один и тот же результат конечность : заканчивается за конечное число шагов массовость : может применяться многократно при различных исходных данных корректность : дает верное решение при любых допустимых исходных данных
- дискретность : состоит из отдельных шагов (команд)
- понятность : должен включать только команды, известные исполнителю (входящие в СКИ)
- определенность : при одинаковых исходных данных всегда выдает один и тот же результат
- конечность : заканчивается за конечное число шагов
- массовость : может применяться многократно при различных исходных данных
- корректность : дает верное решение при любых допустимых исходных данных
Программа
Программа – это
- алгоритм, записанный на каком-либо языке программирования набор команд для компьютера
- алгоритм, записанный на каком-либо языке программирования
- набор команд для компьютера
Команда – это описание действий, которые должен выполнить компьютер.
- откуда взять исходные данные? что нужно с ними сделать?
- откуда взять исходные данные?
- что нужно с ними сделать?
Оператор – это команда языка программирования высокого уровня.
1970 – язык Паскаль (Н. Вирт)
Простейшая программа
название программы
program qq;
begin { начало программы }
end. { конец программы }
комментарии в фигурных скобках не обрабатываются
?
Что делает эта программа?
5
Вывод текста на экран
program qq;
begin
write('2+'); { без перехода }
write ln ('2=?'); { на новую строку}
write ln ('Ответ: 4');
end.
Протокол :
2+2=?
Ответ: 4
5
5
Задания
«4»: Вывести на экран текст "лесенкой"
Вася
пошел
гулять
«5»: Вывести на экран рисунок из букв
Ж
ЖЖЖ
ЖЖЖЖЖ
ЖЖЖЖЖЖЖ
HH HH
ZZZZZ
5
5
Переменные
Задача. Ввести с клавиатуры два числа и найти их сумму.
Протокол :
Введите два целых числа
25 30
25+30=55
компьютер
пользователь
компьютер считает сам!
?
- Как ввести числа в память?
- Где хранить введенные числа?
- Как вычислить?
- Как вывести результат?
5
8
Программа
program qq;
begin
{ ввести два числа }
{ вычислить их сумму }
{ вывести сумму на экран }
end.
Псевдокод: алгоритм на русском языке с элементами Паскаля.
!
Компьютер не может исполнить псевдокод!
8
9
a
Переменные
Переменная – это величина, имеющая имя, тип и значение. Значение переменной можно изменять во время работы программы.
Значение
Другой тип данных
?
Поместится?
!
В переменной хранятся данные определенного типа!
Имя
9
10
Имена переменных
В именах МОЖНО использовать
- латинские буквы (A-Z)
- латинские буквы (A-Z)
- знак подчеркивания _
- знак подчеркивания _
заглавные и строчные буквы не различаются
имя не может начинаться с цифры
В именах НЕЛЬЗЯ использовать
- русские буквы пробелы скобки, знаки +, =, !, ? и др.
- русские буквы
- пробелы
- скобки, знаки +, =, !, ? и др.
Какие имена правильные??
AXby R&B 4Wheel Вася “PesBarbos” TU154 [QuQu] _ABBA A+B
10
10
Переменные
Типы переменных:
- integer { целая } real { вещественная } и другие…
- integer { целая }
- real { вещественная }
- и другие…
Выделение места в памяти
Объявление переменных:
variable – переменная
тип – целые
var a, b, c: integer;
список имен переменных
10
10
Как записать значение в переменную?
Оператор присваивания
!
При записи нового значения старое стирается!
5
a := 5;
Оператор – это команда языка программирова-ния (инструкция).
Оператор присваивания – это команда для записи нового значения в переменную.
10
13
Блок-схема линейного алгоритма
начало
блок «начало»
ввод a , b
блок «ввод»
c := a + b;
блок «процесс»
вывод c
блок «вывод»
конец
блок «конец»
13
13
Как ввести значение с клавиатуры
Оператор ввода
5
read ( a );
!
- Программа ждет, пока пользователь введет значение и нажмет Enter .
- Введенное значение записывается в переменную a .
13
15
Ввод значений двух переменных
Ввод значений двух переменных (через пробел или Enter ).
read ( a, b );
через пробел:
25 30
через Enter :
25
30
a
25
b
30
a
25
b
30
15
16
Оператор вывода
{ вывод значения переменной a}
write( a );
{ вывод значения переменной a и переход на новую строчку }
write ln ( a );
{ вывод текста }
writeln( 'Привет!' );
writeln( 'Ответ: ', c );
{вывод текста и значения переменной c}
writeln ( a, '+', b, '=', c );
16
16
Сложение двух чисел
Задача. Ввести два целых числа и вывести на экран их сумму.
Простейшее решение:
program qq;
var a, b, c: integer;
begin
read ( a, b );
c := a + b;
writeln ( c );
end.
?
Что плохо?
16
18
Полное решение
program qq;
var a, b, c: integer;
begin
writeln('Введите два целых числа');
read ( a, b );
c := a + b;
writeln ( a, '+', b, '=', c );
end.
компьютер
Протокол :
Введите два целых числа
25 30
25+30=55
пользователь
18
18
Как изменить значение переменной?
Пример:
program qq;
var a, b: integer;
begin
a := 5;
b := a + 2;
a := (a + 2)*(b – 3);
b := b + 1;
end.
a
5
?
5
b
7
5+2
?
a
5
7*4
28
b
8
7
7+1
18
18
Арифметические операции
+ сложение – вычитание
* умножение / деление
div деление нацело (остаток отбрасывается)
mod остаток от деления
var a, b: integer;
begin
a := 7*3 - 4; { 17 }
a := a * 5; { 85 }
b := a div 10; { 8 }
a := a mod 10; { 5 }
end.
18
18
Какие операторы неправильные?
program qq;
var a, b: integer;
x, y: real;
begin
a := 5;
10 := x;
y := 7,8;
b := 2.5;
x := 2*(a + y);
a := b + x;
end.
имя переменной должно быть слева от знака :=
целая и дробная часть отделяются точкой
нельзя записывать вещественное значение в целую переменную
18
18
Порядок выполнения операций
- вычисление выражений в скобках умножение, деление, div , mod слева направо сложение и вычитание слева направо
- вычисление выражений в скобках
- умножение, деление, div , mod слева направо
- сложение и вычитание слева направо
1 2 4 5 3 6
z := (5*a+c)/a*(b-c)/ b;
2 3 5 4 1 10 6 9 8 7
x:=(5*c*c-d*(a+b))/((c+d)*(d-2*a));
18
18
Ручная прокрутка программы
program qq;
var a, b: integer;
begin
a := 5;
b := a + 2;
a := (a + 2)*(b – 3);
b := a div 5;
a := a mod b;
a := a + 1;
b := (a + 14) mod 7;
end.
a
?
b
?
5
7
28
5
3
4
4
18
Вывод целых чисел
program qq;
var a, b: integer;
begin
a := 15;
b := 45;
writeln ( a, b );
writeln ( a:4, b:4 );
end.
1545
15 45
символов
на число
Вывод вещественных чисел
program qq;
var x: real;
begin
x := 12.345678;
writeln ( x );
writeln ( x:10 );
writeln ( x:7:2 );
end.
всего символов
1,234568∙10 1
1.234568E+001
1.23E+001
12.35
всего символов
в дробной части
Задания
«4»: Ввести три числа, найти их сумму и произведение.
Пример:
Введите три числа:
4 5 7
4+5+7=16
4*5*7=140
«5»: Ввести три числа, найти их сумму, произведение и среднее арифметическое.
Пример:
Введите три числа:
4 5 7
4+5+7=16
4*5*7=140
(4+5+7)/3=5.33