- •Система Pascal abc
- •Редактор
- •Горячие клавиши
- •Окно вывода
- •Окно ввода
- •Запуск и остановка программы
- •Программа прервана пользователем
- •Пошаговое выполнение программы
- •Окно отладки
- •Pascal abc Язык Pascal abc Структура программы
- •Идентификаторы и служебные слова
- •Выражения и операции
- •Арифметические операции
- •Операция @
- •Операции с указателями
- •Операции с множествами
- •Приоритет операций
- •Описание переменных и констант
- •Описание типов
- •Обзор типов
- •Все порядковые типы, а также типы boolean, real и complex называются простыми типами. Порядковые типы
- •Типы boolean, real и complex
- •Строковый тип
- •Массивы
- •Множества
- •Указатели
- •Процедурный тип
- •Эквивалентность типов
- •Неявное приведение типов
- •Явное приведение типов
- •Область действия идентификатора
- •Ввод и вывод. Форматы вывода
- •Оператор присваивания
- •Условный оператор
- •Составной и пустой операторы
- •Оператор выбора
- •Оператор цикла for
- •Оператор цикла repeat
- •Оператор вызова процедуры
- •Операторы break, continue и exit
- •Оператор with
- •Оператор безусловного перехода goto
- •Оператор try ... Except
- •Оператор try ... Finally
- •Оператор raise
- •Описание процедур и функций
- •Параметры процедур и функций
- •Локальные и глобальные переменные
- •Общие стандартные процедуры и функции
- •Стандартные процедуры и функции для работы со строками
- •Стандартные процедуры и функции для работы с файлами
- •Стандартные процедуры и функции для работы с памятью
- •Системные процедуры и функции
- •Стандартные константы
- •Обзор классов и объектов
- •Конструкторы и деструкторы
- •Свойства
- •Переменная Self
- •Наследование
- •Видимость членов класса
- •Переопределение методов
- •Приведение типов объектов
- •Операции is и as
- •Виртуальные методы и полиморфизм
- •Модуль crt
- •Модуль Timers
- •Модуль Sounds
- •Модуль Utils
- •Модуль PointRect
- •Модуль GraphAbc
- •Графические примитивы
- •Цветовые константы и функции для работы с цветом
- •Действия с пером
- •Действия с кистью
- •Действия со шрифтом
- •Действия с рисунками
- •Действия с графическим окном
- •Задание режимов вывода
- •Класс Picture
- •Описатели рисунков и класс Picture
- •Исполнитель Робот
- •Алгоритмизация
- •Алгоритм и его свойства
- •Способы описания алгоритмов
- •Линейные алгоритмы
- •Разветвляющиеся алгоритмы
- •Алгоритмы циклической структуры
- •Подчиненные алгоритмы
- •Системы программирования
- •Лабораторная работа № 1 Программирование линейных алгоритмов
- •Лабораторная работа № 2 Программирование разветвляющихся алгоритмов
- •Лабораторная работа № 4 Одномерные массивы - вектора
- •Литература Основная литература:
- •Дополнительная литература:
- •Лабораторная работа № 3 Программирование циклических алгоритмов
Лабораторная работа № 1 Программирование линейных алгоритмов
Ц ель работы: уметь программировать линейные алгоритмы, записывать выражения на языке Паскаль с использованием стандартных функций.
Линейным называется алгоритм, в котором результат получается путем однократного выполнения заданной последовательности действий при любых значениях исходных данных. Согласно линейному алгоритму, прогон программы начинается с ее первого выполняемого оператора. Операторы будут задействованы последовательно, один за другим, в соответствии с их расположением в тексте программы.
Задание 1. Определить площадь треугольника по формуле Герона
где а, b, с - длины сторон;
р = (а + b + с)/2 - полупериметр треугольника.
Для того чтобы рассчитать S, необходимо иметь численные значения р, а, b, с. Мы можем рассчитать р по формуле, а вот значения а, b, с должны быть заданы заранее.
Составить программу вычисления площади треугольника по формуле Герона для исходных данных трем сторонам a, b, c.
Программа на языке Pascal
program Geron; {заголовок программы}
var a, b, c, p, s : real; {описание переменных вещественного типа}
begin {начало раздела операторов}
readln(a, b, c); {вычисление исходных данных – сторон треугольника}
p := (a + b + c) / 2; {вычисление полупериметра}
s := sqrt(p * (p – a) * (p – b) * (p – c)); {вычисление площади}
write (‘ Площадь S=’,s:8:3); {вывод результирующей площади}
end. {завершение программы}
Как уже говорилось ранее, совершенно не обязательно записывать каждый оператор на новой строке. Верной была бы и следующая запись: program Geron; var a, b, c, p, s : real; begin readln(a, b, c); p := (a + b + c) / 2; s := sqrt(p * (p – a) * (p – b) * (p – c)); write (s); end.
Задание 2. Операции с переменными целого типа
Program Action;
Var A,B,C: integer;
begin
A:=17; B:=3;
C:=A*B; {Операция умножения} writeln(‘17*3=’,C);
C=A div B ; {Деление нацело} writeln(‘17 div 3=’,C );
C:=A mod B ; { Вычисление остатка от деления: } writeln(‘17 mod 3=’,C);
C:= A+B; { Сложение : } writeln(‘17 mod 3=’,C);
C=A-B; {Вычитание: } writeln(‘17 mod 3=’,C);
end.
При запуске программы вывод на экран :
17*3=51
17 div 3=5
17 mod 3= 5
17 + 3=20
17 - 3=14
Пример 1. Вычислить значение арифметического выражения следующего вида:
Программа на языке Паскаль выглядит следующим образом:
program myprog;
var a,b,c,d,v:real;
begin
a:=1.5;
b:=4.301:c:=10:
d:=7.11;
v:=(a*sqrt(abs(sin(b*c+a)))-exp(-a*c))/sqrt(abs(s*b+d)):
write(‘ V = ‘,v):
end.
Лабораторная работа № 2 Программирование разветвляющихся алгоритмов
Цель работы: уметь программировать ветвления с помощью условного оператора IF и оператора выбора Case.
Алгоритм называется разветвляющимся, если он содержит несколько ветвей, отличающихся друг от друга содержанием вычислений. Выход вычислительного процесса на ту или иную ветвь алгоритма определяется исходными данными задачи в зависимости от значения условия, которое представляет собой логическое выражение. Ветвление изменяет направление вычислительного процесса. Развилка реализуется условным оператором IF условие THEN оператор1 ELSE оператор2.
Пример 1. Вычислите корни квадратного уравнения ax2+bx+c.
Количество корней уравнения и способ их вычисления зависит от дискриминанта, который находится по формуле D=b2-4ac. Если D положительный, тогда существуют 2 корня . Если D =0, тогда существует 1 корень . Выбор способа нахождения корней уравнения осуществляется условным оператором в зависимости от значения дискриминанта D. На Рис.13 изображен алгоритм вычисления корней квадратного уравнения, по которому написана программа.
Program Quad;
var
A,B,C: real; {переменные для хранения коэффициентов}
D, x,x1,x2: real; { переменные дискриминанта и корней}
begin
writeln (' Ввод коэффициентов'); writeln (A,B,C);
D:=Sgr(B) -4*A*C; { вычисление дискриминанта}
if D<0 then writeln('Уравнение не имеет вещественных корней ')
else if D=0 then begin x:=-B / (2*A); {вычисление корня}
{вывод корней} writeln (‘Уравнения имеет один корень x=’,x:6:2);
end {перед ELSE знак ; не ставится}
else begin
x1:= (-B+Sqrt(D)) /(2*A); {вычисление корней}
x2:=(-B-Sqrt(D))/(2*A);
writeln ('Уравнения два корня: x1=', x1:6:2, ' x2=', x2:6:2); {вывод корней}
end;
end.
Рис.13. Блок –схема алгоритма нахождения корней квадратного уравнения
Пример 2. Определите номер квартала по введенному номеру месяца.
Выбор осуществляется оператором CASE селектором Dig, значения которого определяются скалярными типами перечисление и диапазон.
Program Digit;
Var Dig: integer;
begin
writeln (‘ Ввод номера месяца ‘); readln (Dig); {ввод селектора месяца }
case Dig of {выбор селектором номера месяца Dig }
1, 2, 3 : writeln(‘ первый квартал’);
4, 5, 6 : writeln(‘ второй квартал’);
7..9 : writeln(‘ третий квартал’);
{ диапазон 7..9 - интервал чисел от 7 до 9; тоже самое, что перечисление 7,8,9.}
10..12: writeln(‘ четвертый канал’);
end;
end.
Пример 3. Разработать программу для вычисления вида:
если
program mypr;
var
a,b,d:real;
begin
writeln(‘Введите исходные данные a,b= ‘);
readln(a,b);
if a*b<0 then d:=Ln(SQR(a*b)) {вычисляется d для отрицательного a*b }
else if a*b>0 then d:=Ln(a*b) {вычисляется d для положительного a*b }
else d:=0; {вычисляется d для нулевого произведения a*b}
writeln(‘ D = ‘,d:10:4); {вывод значения функции d=f(a,b) }
end;
end.