Глава 3
ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
§ 9. Среда программирования Pascal ABC
Коротко о главном:
Program ;
;
Begin
;
End.
Для вызова среды Pascal ABC необходимо запустить на выполнение файл Pascal ABC.exe.
Для запуска программы на выполнение в среде Pascal ABC необходимо выполнить команду Программа – Выполнить или нажать клавишу F9.
Упражнение 1
дату Дня Республики Беларусь.
Begin
Write (‘3 июля – День Республики Беларусь’);
End.
Упражнение 2
Напишите программу, которая выводит на экран фразу «Моя Родина – Беларусь».
Begin
Write (‘Моя Родина – Беларусь’);
End.
§ 10. Основные понятия языка программирования.
Коротко о главном:
Переменная – это величина, значение которой изменяется в процессе выполнения программы.
Правила записи имён переменных: имя переменной всегда должно начинаться с латинской буквы или знака подчёркивания, в имени переменной не должно быть пробелов, имя переменной не должно совпадать с именем программы.
Типы числовых данных, изучаемых в данном курсе: целый тип Integer (описывает диапазон значений целых чисел от -2 147 483 648 до +2 147 483 648) и вещественный тип Real (описывает диапазон значений дробных чисел, которые могут включать 16 десятичных цифр).
Описать переменную – это значит указать после зарезервированного слова Var имя и тип переменной.
§ 11. Организация ввода и вывода данных.
Коротко о главном:
Для ввода данных используют команды ввода Read или Readln (пример: Read(a,b) или Readln(a,b)).
Для вывода данных используют команды вывода Write или (пример: Write (‘Введите число ‘);).
Команда Writeln отличается от команды Write тем, что после вывода информации переводит курсор на следующую строку, а команда Write оставляет его сразу после вывода.
Команда Read отличается от команды Readln тем, что после ввода необходимого количества данных осуществляется переход курсора на следующую строку.
Упражнение 1
Что будет выведено на экран в результате выполнения следующей программы:
Begin
Writeln (‘Привет, это я, умный компьютер! ‘);
Writeln (‘Я знаю, что 6*5= ‘, 6*5);
End.
Ответ:
Привет, это я, умный компьютер!
Я знаю, что 6*5=30
Упражнение 2
Составьте программу, в которой осуществляется ввод целого числа с клавиатуры и вывод на экран монитора значения этого числа, увеличенного в 5 раз.
Var х: integer;
Begin
Readln (x);
Write (‘Если вы умножите это число на пять, то получится ‘, 5*x);
End.
Упражнение 3
Составьте программу, в которой осуществляется ввод целого числа с клавиатуры и вывод на экран монитора значения этого числа, увеличенного на 10.
Var х: integer;
Begin
Write (‘Введите число ‘);
Readln (x);
Write (‘Если вы увеличите это число на десять, то получится ‘, 10+x);
End.
Упражнение 4
Составьте программу, в которой осуществляется ввод трёх целых чисел с клавиатуры и вывод на экран монитора значения их суммы.
Var a, b, c: integer;
Begin
Writeln (‘Введите три числа ‘);
Readln (a, b, c);
Write (‘Если вы сложите эти числа, то значение их суммы будет ', a+b+c);
End.
Упражнение 5
Составьте программу, в которой осуществляется ввод двух целых чисел с клавиатуры и вывод на экран монитора значения их произведения.
Var a, b: integer;
Begin
Writeln (‘Введите два числа ‘);
Readln (a, b);
Write (‘Произведение этих чисел равно ‘, a*b);
End.
§ 12. Команда присваивания. Арифметические операции и выражения. Стандартные функции.
Коротко о главном:
+ (сложение),
- (вычитание),
* (умножение),
/ (деление),
div (целочисленное деление),
mod (остаток, полученный при целочисленном делении).
trunc(x) вычисляет целую часть вещественного числа х,
round(x) округляет вещественное число х до целого,
frac(x) вычисляет дробную часть вещественного числа х,
abs(x) вычисляет модуль числа х,
sqr(x) вычисляет квадрат числа х.
Упражнение 1
Определите тип результата в выражениях:
4 +
Ответ: тип результата real;
4 + 3 · 1,5
Ответ: тип результата real;
2 +
Ответ: тип результата real;
(6 – 4) · 2 + 5
Ответ: тип результата integer.
Упражнение 2
Найдите ошибки в следующих программах:
Var a ,x : integer;
b, c: real;
Begin
a:=10;
b:=5.2;
x:=b div 2;
c:= round(x);
End.
Ответ:
1) переменная b не может участвовать в целочисленном делении (x:=b div 2;),
так как она имеет тип real;
2) переменная с должна иметь тип integer (c:= round(x);) , так как результат выполнения функции round(x) должен быть целого типа (integer).
Var a ,с : integer;
b, d: real;
Begin
a:=25;
b:=a/2;
c:= sqr(a);
d:=a mod 10;
End.
Ответ:
1) переменная с должна иметь тип real (c:= sqr(a);) , так как результат выполнения функции sqr(a) должен быть вещественного типа (real);
2) переменная d должна иметь тип integer (d:=a mod 10;) , так как результат выполнения операции a mod 10должен быть целого типа (integer).
Упражнение 3
Напишите программу, которая вычисляет частное от целочисленного деления двух заданных чисел и выводит на экран монитора результат.
Var a, b, c: integer;
Begin
Writeln (‘Введите 2 числа ‘);
Readln (a, b);
C:= a div b;
Write (a , ‘div ‘ , b , ‘ = ‘ , c);
End.
Упражнение 4
Дано целое число. Напишите программу, которая уменьшает это число в 2 раза и выводит на экран монитора результат.
Var х: integer;
d: real;
Begin
Write (‘Введите число ‘);
Readln (x);
d:= x/2;
Write ( x ,‘ разделить на 2 равно ‘, d);
End.
Упражнение 5
Дано целое число с. Напишите программу, которая возводит в квадрат частное от целочисленного деления числа с на 5 и выводит на экран монитора результат.
Var c, d: integer;
Begin
Write (‘Введите число ‘);
Readln (c);
d:= sqr ( c div 5 );
Write (‘ sqr ( c div 5 ) = ‘, d);
End.
Упражнение 6
Дано целое число с. Напишите программу, которая возводит в квадрат остаток от целочисленного деления числа с на 10 и выводит на экран монитора результат.
Var c, d: integer;
Begin
Write (‘Введите число ‘);
Readln (c);
d:= sqr ( c mod 10 );
Write (‘ sqr ( c mod 10 ) = ‘, d);
End.
Упражнение 7
Дано вещественное число х. Напишите программу, которая вычисляет целую часть числа х, округлённую до ближайшего целого, и выводит на экран монитора результат.
Var х: real;
d: integer;
Begin
Write (‘Введите число ‘);
Readln (x);
d:= round(x);
Write (‘ round ( ‘, x , ‘)= ’ , d);
End.
Упражнение 8
Дано вещественное число х. Напишите программу, которая уменьшает в 2 раза целую часть числа х и выводит на экран монитора результат.
Var х ,d: real;
Begin
Write (‘Введите число ‘);
Readln (x);
d:= trunc(x) /2;
Write (‘ trunc( ‘, x , ‘)/2= ’ , d);
End.
§ 13. Составление линейных программ для решения задач.
Упражнение 1
Даны целые числа а и в. Напишите программу, которая находит значение выражения
и выводит на экран монитора результат.
Var a, b: integer;
c: real;
Begin
Writeln (‘Введите 2 числа ‘);
Readln (a,b);
c:=((sqr(a)+b)*a)/b;
Writeln ( ‘ результат выражения равен ‘,с);
End.
Упражнение 2
Даны целые числа х, у, с. Напишите программу, которая находит значение выражения
и выводит на экран монитора результат.
Var x, y, c: integer;
d: real;
Begin
Writeln (‘Введите 3 числа ‘);
Readln (x,y,c);
d:=(x+y)/(2*c);
Write ( ‘ результат выражения равен ‘,d);
End.
Упражнение 3
Дано целое число. Напишите программу, которая уменьшает на 2 модуль этого числах и выводит на экран монитора результат.
Var c, d: integer;
Begin
Write (‘Введите число ‘);
Readln (c);
d:=abs(c)-2;
Write ( ‘ результат выражения равен ‘,d);
End.
Упражнение 4
Дано вещественное число. Напишите программу, которая возводит в квадрат целую часть данного числа и выводит на экран монитора результат.
Var a : real;
b: integer;
Begin
Write (‘Введите число ‘);
Readln (a);
b:=sqr(trunk(a));
Write ( ‘ результат выражения равен ‘,b);
End.
Упражнение 5
Дано двузначное целое число. Напишите программу, которая выводит на экран монитора его первую цифру.
Var c, d: integer;
Begin
Write (‘Введите двузначное число ‘);
Readln (c);
d:=с div 10;
Write ( ‘ первая цифра равна ‘,d);
End.
Упражнение 6
Дано целое число. Напишите программу, которая выводит на экран последнюю цифру данного числа, затем возводит её в квадрат и выводит на экран монитора результат.
Var c, d: integer;
Begin
Write (‘Введите любое целое число ‘);
Readln (c);
d:= с mod 10;
Write ( ‘последняя цифра этого числа равна ‘,d);
d:= sqr(с);
Write ( ‘последняя цифра этого числа, возведённая в квадрат, равна ‘,d);
End.
Упражнение 7
Напишите программу, которая вычисляет расстояние, пройденное автомобилем за время t при движении со скоростью v км/ч, и выводит на экран монитора результат.
Var v, t, s: integer;
Begin
Write (‘Введите время движения автомобиля ‘);
Readln (t);
Write (‘Введите скорость движения автомобиля ‘);
Readln (v);
S:=v*t;
Write ( ‘расстояние, которое прошёл автомобиль, равно ‘,s);
End.
Упражнение 8
Дан рост трёх друзей. Напишите программу, которая определяет их средний рост и выводит на экран монитора результат
Var a, b, c: integer; d: real;
Begin
Write (‘Введите рост первого друга ‘);
Readln (a);
Write (‘Введите рост второго друга ‘);
Readln (b);
Write (‘Введите рост третьего друга ‘);
Readln (с);
d:=(a+b+c)/3;
Write ( ‘средний рост друзей ‘,d);
End.
§ 14. Графические возможности языка программирования
Коротко о главном:
Изображение можно создать из следующих геометрических фигур: точек, линий, прямоугольников и окружностей.
Минимальным элементом графического изображения является пиксель (точка).
Координаты точки на экране задаются следующим образом: началом отсчёта является верхний левый угол; значения координаты х отсчитываются слева направо, а значения координаты у – сверху вниз.
Линию рисует команда Line (X1,Y1,X2,Y2), где (X1,Y1) – координата начала отрезка, а (X2,Y2) – координата конца отрезка.
Прямоугольник рисует команда Rectangle(X1,Y1,X2,Y2), где (X1,Y1) и (X2,Y2) – координаты противоположных вершин.
Окружность рисует команда Circle (X,Y,R), где (X,Y) – координата центра окружности, а R – её радиус.
Упражнение 1
Что будет выведено на экран монитора в результате выполнения следующих программ:
Uses GraphAbc;
Begin
SetPenWidth (10);
SetPenColor (clRed);
Line (100,100,270,90);
End.
Ответ: рисование отрезка красного цвета толщиной 10 пикселей от точки с координатами (100,100) до точки с координатами (270,90).
Uses GraphAbc;
Begin
SetPenWidth (8);
SetPenColor (clBlue);
Circle (200,150,50);
End.
Ответ: рисование окружности голубого цвета толщиной 8 пикселей с центром в точке с координатами (200,150) и радиусом (50).
Упражнение 2
С помощью известных Вам графических команд напишите программу, которая изобразит на экране монитора:
Жёлтый квадрат на зелёном фоне;
Технология создания: 1) закрашиваем фон; 2) рисуем квадрат.
Uses GraphAbc;
Begin
SetWindowSize(640,480);
ClearWindow(clGreen);
SetBrushColor (clYellow);
Rectangle(100,100,300,300);
End.
б) зелёный ромб на голубом фоне;
Технология создания: 1) закрашиваем фон; 2) рисуем ромб с помощью линий; 3) закрашиваем ромб зелёным цветом.
Uses GraphAbc;
Begin
SetWindowSize(640,480);
ClearWindow(clBlue);
SetPenColor (clGreen);
Line (200,250,300,400);
Line (300,400,400,250);
Line (400,250,300,100);
Line (300,100,200,250);
FloodFill (300,200,clGreen);
End.
в) избушку на курьих ножках;
Технология создания: 1)рисуем контур избушки коричневым цветом; 2) рисуем крышу; 3) рисуем первую ножку; 4) рисуем вторую ножку.
Uses GraphAbc;
Begin
SetWindowSize(640,480);
ClearWindow; {Очистка графического окна белым цветом}
SetPenColor (clBrown); {Установка коричневого цвета пера}
Rectangle(400,150,100,300); {Рисование корпуса избушки}
Line (100,150,250,50); {Рисование крыши}
Line (250,50,400,150);
Rectangle(200,250,300,200); {Рисование окна}
Line (250,200,250,250);
Line (150,300,150,400); {Рисование первой ножки}
Line (150,350,100,400);
Line (150,350,200,400);
Line (350,300,350,400); {Рисование второй ножки}
Line (350,350,300,400);
Line (350,350,400,400);
End.
г) лодку с парусом;
Технология создания: 1)рисуем контур лодки голубым цветом; 2) рисуем парус.
Uses GraphAbc;
Begin
SetWindowSize(640,480);
ClearWindow; {Очистка графического окна белым цветом}
SetPenColor (clBlue); {Установка голубого цвета пера}
Line (150,400,100,300); {Рисование лодки}
Line (100,300,450,300);
Line (450,300,400,400);
Line (400,400,150,400);
Line (300,300,300,100); {Рисование паруса}
Line (300,100,400,200);
Line (400,200,300,300);
End.
Упражнение 3
Используя известные Вам команды рисования геометрических фигур, нарисуйте картинки:
Флаг

Технология создания: 1)рисуем прямоугольник красного цвета; 2) рисуем прямоугольник зелёного цвета
Uses GraphAbc;
Begin
SetWindowSize(640,480);
ClearWindow;
SetPenColor (clRed);
SetBrushColor (clRed);
Rectangle (100,350,600,150);
SetPenColor (clGreen);
SetBrushColor (clGreen);
Rectangle(100,450,600,350);
End.
Ель

Технология создания: 1)рисуем контур ели чёрным цветом; 2) Закрашиваем контур ели зелёным цветом.
Uses GraphAbc;
Begin
SetWindowSize(640,480);
ClearWindow;
SetPenColor (clBlack); {Установка чёрного цвета пера}
Line (250,400,250,350); {Рисование контура ели чёрным цветом}
Line (250,350,50,350);
Line (50,350,250,250);
Line (250,250,150,250);
Line (150,250,250,150);
Line (250,150,200,150);
Line (200,150,275,50);
Line (275,50,350,150);
Line (350,150,300,150);
Line (300,150,400,250);
Line (400,250,300,250);
Line (300,250,500,350);
Line (500,350,300,350);
Line (300,350,300,400);
Line (300,400,250,400);
FloodFill (300,200,clGreen); {Закрашивание ели зелёным цветом}
End.
Пирамида

Технология создания: 1)рисуем контур пирамиды с помощью чёрных линий; 2) рисуем линии внутри пирамиды; 3) Закрашиваем части пирамиды разными цветами.
Uses GraphAbc;
Begin
SetWindowSize(640,480);
ClearWindow;
SetPenColor (clBlack);
Line (100,300,300,100); {Рисование контура пирамиды}
Line (300,100,500,300);
Line (500,300,100,300);
Line (150,250,450,250); {Рисование линий внутри пирамиды}
Line (200,200,400,200);
Line (250,150,350,150);
FloodFill (300,275,clOlive); {Закрашивание части пирамиды оливковым цветом }
FloodFill (300,125,clYellow); {Закрашивание части пирамиды жёлтым цветом }
FloodFill (300,175,clPurple); {Закрашивание части пирамиды фиолетовым цветом }
FloodFill (300,225,clYellow); {Закрашивание части пирамиды жёлтым цветом }
End.
Снеговик

Технология создания: 1)рисуем окружности синего цвета (тело снеговика); 2) закрашиваем окружности серым цветом; 3) рисуем руки; 3) рисуем ведро; 4) рисуем глаза; 5) рисуем нос; 6)рисуем метлу .
Uses GraphAbc;
Begin
SetWindowSize(640,480);
ClearWindow;
SetPenColor (clNavy); {Рисование окружности синего цвета}
SetPenWidth(3);
Circle (200,300,75);
Circle (200,175,50);
Circle (200,100,25);
FloodFill (200,100,clGray); {Закрашивание окружности серым цветом }
FloodFill (200,175,clGray);
FloodFill (200,300,clGray);
SetPenColor (clBlack); {Рисование рук}
SetPenWidth(5);
Line (125,225,175,175);
Line (250,175,300,175);
SetPenColor (clNavy); {Рисование ведра}
SetPenWidth(2);
Ellipse (175,90,225,80);
FloodFill (200,85,clGray);
Line (175,85,185,50);
Line (185,50,215,50);
Line (215,50,225,85);
FloodFill (200,55,clNavy);
FloodFill (200,77,clNavy);
SetPenColor (clBrown); {Рисование глаз}
Circle (190,95,4);
FloodFill (190,95,clBrown);
Circle (210,95,4);
FloodFill (210,95,clBrown);
Line (205,100,220,120); {Рисование носа}
Line (220,120,195,100);
Line (195,100,205,100);
FloodFill (205,105,clBrown);
SetPenWidth(10); {Рисование метлы}
Line (300,150,300,375);
SetPenWidth(5);
Line (300,150,280,100);
Line (300,150,290,100);
Line (300,150,310,100);
Line (300,150,320,100);
Line (300,150,300,100);
End.
Дом

Технология создания: 1)рисуем корпус дома (прямоугольник красного цвета); 2)рисуем крышу дома; 3) рисуем прямоугольные окна и закрашиваем их жёлтым цветом; 4) рисуем и закрашиваем круглое окно; 5)закрашиваем корпус дома зелёным цветом; 6) закрашиваем крышу дома ярко-зелёным цветом.
Uses GraphAbc;
Begin
SetWindowSize(640,480);
ClearWindow;
SetPenColor (clRed); {Рисование корпуса дома}
SetPenWidth(3);
Rectangle(50,400,450,175);
Line (50,175,250,50); {Рисование крыши дома}
Line (250,50,450,175);
Rectangle(150,300,200,225); {Рисование и закрашивание жёлтым цветом прямоугольных окон }
FloodFill (175,250,clYellow);
Line (175,300,175,225);
Line (150,250,175,250);
Rectangle(300,300,350,225);
FloodFill (325,250,clYellow);
Line (325,300,325,225);
Line (300,250,325,250);
Circle (250,125,25); {Рисование и закрашивание круглого окна}
FloodFill (250,125,clYellow);
FloodFill (250,250,clGreen); {Закрашивание корпуса дома зелёным цветом }
FloodFill (200,100,clLime); {Закрашивание крыши дома ярко-зелёным цветом }
End.
Светофор

Технология создания: 1)рисуем и закрашиваем корпус светофора; 2)рисуем и закрашиваем лампы светофора; 3) рисуем прямоугольные линии (выноску для подписи текста); 4) делаем надпись.
Program svetofor;
Uses GraphAbc;
Begin
SetWindowSize(640,480);
ClearWindow;
SetPenColor (clBlack); {Рисование корпуса светофора}
SetPenWidth(3);
Rectangle (250,350,350,100);
FloodFill (300,200,clGray); {Закрашивание корпуса светофора }
Circle (300,150,25); {Рисование и закрашивание ламп светофора}
FloodFill (300,150,clGreen);
Circle (300,225,25);
FloodFill (300,225,clYellow);
Circle (300,300,25);
FloodFill (300,300,clRed);
Line (300,100,300,75); {Рисование выноски для текста}
Line (300,75,150,75);
SetFontColor (clRed); { Размещение надписи}
TextOut (125,50,'Красный свет - дороги нет');
End.