Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Краткий курс программирования на языке Pascal ABC для студентов специальности 1-36 01 02 Материаловедение в машиностроении

.pdf
Скачиваний:
1
Добавлен:
24.11.2025
Размер:
1.07 Mб
Скачать

левой части, получает вычисленное значение. При этом тип выражения должен быть совместим по присваиванию с типом переменной. Тип выражения определяется типом операндов, входящих в него, и зависит от операций,

выполняемых над ними.

Для операций сложения, вычитания, умножения и деления тип результата в зависимости от типа операнда будет таким:

Операнд 1

Операнд 2

Результат сложения,

Результат

 

 

вычитания, умножения

деления

 

 

 

 

Integer

Integer

Integer

Real

 

 

 

 

Integer

Real

Real

Real

 

 

 

 

Real

Integer

Real

Real

 

 

 

 

Real

Real

Real

Real

 

 

 

 

В Pascal существуют арифметические операции: +(сложение), -(вычитание), *(умножение), /(деление), DIV (целочисленное деление), MOD (остаток от

деления).

Пример: X := (Y + Z) / (2 + Z * 10) - 1/3;

Пример. При выполнении целочисленного деления (операция DIV) остаток от деления отбрасывается: 15 div 3 = 5; 18 div 5 = 3; 7 div 10 = 0.

Пример. С помощью операции MOD можно найти остаток от деления одного целого числа на другое: 15 mod 3 = 0;18 mod 5 = 3; 7 mod 10 = 7.

Пример. Программа с использованием операций с целочисленными переменными.

Program summa;

Var a,b,s,с,р: integer; {раздел описания переменных}

Begin

{начало тела программы}

a:=12;

{команда присваивания записывает в переменную a число 12}

b:=5;

{команда присваивания записывает в переменную b число 5}

 

11

имена переменных;
знаки математических операций;

{переменные A и B являются исходными данными}

s:=a+b; {команда присваивания вычисляет сумму значений переменных a и b и записывает результат в переменную s}

Writeln('a + b=',s) {вывод значения переменной s на экран - вывод результата} c:=a div b; {деление нацело (вычисление целой части от деления а на b)} writeln('a div b=',c); {вывод на экран частного от деления нацело а на b}

р:=a mod b; {вычисление остатка от деления а на b}

Writeln ('a mod b=',р); {вывод на экран остатка от деления а на b} End. {конец программы}

После выполнения программы в окне вывода результата появится: a + b=17

a div b=2 a mod b=2

Логический операнд - это конструкция, которая задает правило для вычисления одного из двух возможных значений: True или False. Чаще всего логические выражения используют в операторах присваивания или для записи условия, чтобы на некоторый вопрос получить ответ “ДА” или “НЕТ”.

Составными частями логических выражений могут быть: логические значения

(True, False); логические переменные; отношения, операции: Not(НЕ), And(И), Or(ИЛИ), Xor(исключающее ИЛИ).

Пример. 1) Y:=True; 2) LogPer:=A > B; 3) Log1:=(A = B) And (C <= D).

Арифметические выражения - это конструкции результатом, которых является число. В состав арифметического выражения на языке Паскаль могут входить:

числовые константы;

12

математические функции и функции, возвращающие число;

открывающиеся и закрывающиеся круглые скобки.

При составлении выражений могут быть использованы следующие

арифметические функции:

Имя

Математическое значение

Тип результата

функции

 

 

 

 

 

 

 

 

 

abs (a)

|a|- модуль числа

Совпадает с типом аргумента

 

 

 

 

 

sqr (a)

a2 возведение в квадрат

Совпадает с типом аргумента

 

 

 

 

 

sqrt (a)

 

 

 

Вещественное

 

а - квадратный корень

 

 

 

sin (a)

sin a - синус x радиан

Вещественное

 

 

 

cos (a)

cos a - косинус x радиан

Вещественное

 

 

 

arctan (a)

arctg a - арктангенс числа x

Вещественное

 

 

 

ln (a)

ln a- натуральный логарифм x

Вещественное

 

 

 

exp (a)

ea значение e в степени x

Вещественное

 

 

 

trunc(x)

[x] - целая часть числа x

Целое

 

 

 

frac(x)

{x} - дробная часть числа х

Вещественное

 

 

 

Pi

- число

Вещественное

 

 

 

Round (x)

Округление до ближайшего

Целое

 

целого

 

 

 

 

Int (x)

[x] целая часть числа

Вещественное

 

 

 

 

 

Порядок действий при вычислении значения выражения:

1)вычисляются значения в скобках;

2)вычисляются значения функций;

3)выполняется операции смена знака, возведение в степень;

4)выполняются операции умножения и деления (в том числе целочисленного деления и нахождения остатка от деления);

5)выполняются операции сложения и вычитания.

13

Пример. Программа с использованием стандартных арифметических функций.

Program fun;

Var a, c :integer; {раздел описания переменных целого типа}

b,:real; {раздел описания переменных вещественного типа}

Begin

{начало тела программы}

a:=16;

{исходные данные}

b:= sqrt (a); {функция sqrt извлекает квадратный корень из числа a и

присваивает его значение переменной b - тип результата вещественный} writeln('b=’,b);{вывод на экран значения переменной b}

c:=sqr (а); {функция sqr возводит в квадрат значение переменной а и

присваивает его переменной c - тип результата целый}

writeln(‘c=’,c); {вывод на экран монитора значения переменной c}

Еnd.

Аргументы функции всегда пишутся в скобках, операцию умножения опускать

нельзя.

Нельзя писать выражения в виде обыкновенных дробей.

Примеры записи математических выражений:

Математическая запись

Запись на Pascal

 

 

1. x2 - 7,2x + 6

Sqr(x) - 7.2 * x + 6

 

 

 

(Abs(x) - Abs(y)) / (1 + Abs(x *

2.

y))

 

 

4. Организация ввода и вывода данных

Обмен информацией с компьютером предполагает использование

определенных средств ввода-вывода. Основным средством ввода является

клавиатура, вывода - дисплея. Процедура, которая в режиме диалога с

14

клавиатуры присваивает значение для переменной величины, называется процедурой ввода. В языке Pascal эта команда выглядит следующим образом:

Read(список переменных);

ReadLn(список переменных);

Разница между работой процедур Read и Readln состоит в следующем: после выполнения Read значение следующего данного считывается с этой же строчки,

а после выполнения Readln - с новой строки.

Выполнение операторов ввода происходит так: ход программы приостанавливается, на экран выводится курсор, компьютер ожидает от пользователя набора данных для переменных, имена которых указаны в списке ввода. Пользователь с клавиатуры вводит необходимые значения в том порядке,

в котором они требуются списком ввода, нажимает Enter. После этого набранные данные попадают в соответствующие им переменные и выполнение программы продолжается.

Пример.

Var A : real; B : integer; C : char;

Begin

Read(A, B, C)

End.

Процедура, которая выводит содержимое переменных на экран, называется процедурой вывода на экран. В Pascal эта команда выглядит следующим образом:

Write (список констант и/или переменных, разделенных запятой)

WriteLn(список констант и/или переменных, разделенных запятой)

Различие между двумя операторами вывода: после выполнения оператора

Writeln происходит переход на новую строчку, а после выполнения инструкции

Write, переход на новую строчку не происходит. При вызове оператора Writeln

без параметров просто происходит переход на новую строчку.

Пример. Write(A, B, C);

15

WriteLn('Корнем уравнения является ', X);

Для управления размещением выводимых значений процедуры Write и

WriteLn используются форматный вывода. Под форматом данных понимается расположение и порядок отдельных полей данных.

Процедура вывода с форматом для целого типа имеет вид:

WriteLn(A:N); где N - выражение целого типа, задающие длину поля вывода

значений.

При выводе вещественных значений без указания формата - выводится вещественное число длиной 18 символов в форме с плавающей запятой. Для

десятичного представления значения применяется оператор с форматами вида:

WriteLn(R:N:M); где N - выражение целого типа, задающие длину поля

вывода значений, М- количество знаков в дробной части.

Пример:

A:=25; Write (A); результат 25

 

A:=25.367; Write (A:6:3); результат

25.367

Write (A:6:2); результат

25.37

A:=-7.4385 Write (A); результат -7.438500E+00

S:=7; Write (S,’=’,5+2); - результат 7=7

Write (‘S=5+2’); - вывод текста S=5+2, заключенного в апострофы.

5. Реализация линейных алгоритмов

Алгоритм, в котором команды выполняются последовательно друг за другом, называется линейным.

Пример: Ввод трех целых чисел, вычисление и вывод их среднего арифметического и среднего геометрического значения.

16

Program Z;

Var a1,a2,a3:integer; sa,sg:real;

Begin

Writeln('Введи 3 целых числа:'); {Печать на экране просьбы о вводе}

Read(a1,a2,a3);{Ввод данных}

sa:=(a1 + a2 + a3) / 3; {Вычисление среднего арифметического} sg:=sqrt(abs(a1*a2*a3)); {Вычисление среднего геометрического} Writeln ('Cр.арифм.=',sa:8:2);

Writeln ('Cр.геом.=',sg:8:2) {Вывод данных}

End.

Пример: Вычисления площади круга. Программа запрашивает у пользователя значение радиуса круга, обеспечивает возможность ввести его значение,

рассчитывает и выводит на экран величину площади круга с введенным радиусом. Таким образом, появляется возможность, не внося изменений в программу, вводить различные значения радиуса и получать, соответствующие им значения площади круга. Для этого достаточно несколько раз запустить программу.

Program Inteface;

Var R,S: Real;

Begin

Write('Введите радиус круга '); {Печать на экране просьбы о вводе}

Readln(R); {Ввод значения R}

S:=Pi*SQR(R); {Вычисление площади руга}

Writeln('Площадь круга радиусом ',R:5:2,' равна ',S:8:4)

End.

17

Пример. Скорость первого автомобиля v1 км/ч, второго - v2 км/ч, расстояние между ними s км. Какое расстояние будет между ними через t ч, если автомобили движутся в разные стороны?

Согласно условию задачи искомое расстояние s1=s+(v1+v2)t (если автомобили изначально двигались в противоположные стороны) или s2=|(v1+v2)t- s| (если автомобили первоначально двигались навстречу друг другу).

Program Car;

Var V1, V2, T, S, S1, S2 : Real;

Begin

Write('Введите скорости автомобилей, расстояние между ними и время движения:');

ReadLn(V1, V2, S, T);

S1 := S + (V1 + V2) * T;

S2 := Abs((V1 + V2) * T - S);

WriteLn('Расстояние будет равно ', S1:7:4, ' км или ', S2:7:4, ' км')

End.

Пример. Найти сумму цифр двухзначного натурального числа.

Program Did;

Var A,S1,S2:integer;

Begin

Write ('введите двухзначное число: ');

ReadLn (А); {ввод с клавиатуры числа}

S1:=a div 10; {нахождение первой цифры числа}

S2:=a mod 10; {нахождение последней цифры числа}

WriteLn ('сумма цифр числа ',а, '=', S1+ S2) {вывод результата}

End.

Пример.Дано: c, m, S - часы, минуты, секунды. Найти общее количество секунд

с начала суток.

18

Формула: Sec=c*3600+m*60+s Program Second;

Var c, m, s : Byte ; Sec: LongInt ;

Begin

Write ('Сколько часов прошло от начала суток? '); Readln (c);

Write ('Сколько минут? '); Readln (m);

Write ('Сколько секунд? '); Readln (s);

Sec :=c*3600+m*60+s;

Writeln ('С начала суток прошло секунд: ', Sec)

End.

Пример. Дано: координаты точки (Х,У). Получить сообщение TRUE, если точка принадлежит первой четверти окружности с радиусом 1, или сообщение FALSE,

если точка не принадлежит области.

Формула: точка с координатами (Х,У) принадлежит первой четверти окружности с радиусом 1 если одновременно выполняются условия: Х>0, Y>0, X2+Y2<=1

Program FH;

Var X,Y : Real;

Begin

Writeln (‘введи координаты точки: X, Y:’); Readln (X,Y); Writeln ((X1>=0) AND (Y1>=0) AND (SQR(X)+SQR(Y)<=1));

End.

Задания для практической работы по теме линейные алгоритмы.

Составить программы на языке Pascal.

1.Даны два числа. Найти сумму и произведение этих чисел.

2.Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей.

19

3. Вычислить значение выражения

, где х и y - целые числа.

4.Периметр прямоугольника равен р, одна из сторон равна а. Найти его площадь.

5.Гипотенуза прямоугольного треугольника равна с, острый угол а градусов.

6.Найдите площадь квадрата, если две его противоположные вершины заданы координатами (х1,у2) ,(х2,у2).

7.Определить сколько времени (t) затрачено на путь (s ) со скоростью (v).

8.Вершины треугольника заданы точками (х1,у2) ,(х2,у2), (х3,у3). Используя формулу Герона, найдите его площадь.(АВ=Sqrt((х1-х2)2+(у1-у2)2).

9.Сумма вклада S руб., ее вкладывают в банк под C % годовых на N лет. Какая прибыль будет на вкладе.

10.Подсчитать стоимость поездки на S км. : расход бензина на 100 км.-L литров,

стоимость 1 литра бензина K руб.

11.Вычислить стоимость покупки со скидкой : покупка А руб., скидка С %.

12.Даны координаты трех вершин треугольника (x1, y1), (x2, y2), (x3, y3). Найти его периметр и площадь.

13.Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T1 ч, а по реке (против течения) - T2 ч.

Определить путь S, пройденный лодкой.

14.Найти периметр и площадь прямоугольного треугольника, если даны длины его катетов a и b.

15.Дано целое четырехзначное число. Используя операции div и mod, найти сумму его цифр.

16.Дано целое четырехзначное число. Используя операции div и mod, найти произведение его цифр.

17.Длительность некоторого физического эксперимента измеряется в секундах;

определить количество часов(полных), минут и секунд.

20