- •Часть 2
- •220700 – Автоматизация технологических процессов и производств
- •Содержание
- •Предисловие
- •Лабораторная работа № 1 Понятие алгоритма. Схемы алгоритмов.
- •Графические средства ms Word для изображения схем алгоритмов
- •Пример. Схема алгоритма вычисления действительных корней квадратного уравнения
- •2. Изображение схем алгоритмов с помощью программы Microsoft Visio
- •Запуск программы и ее интерфейс
- •Порядок построения схем алгоритмов
- •Лабораторная работа № 2 программирование линейных вычислительных процессов
- •Алгоритм
- •3. Текст программы
- •Целые типы
- •Вещественные типы
- •Описание заголовка программы
- •Описание используемых библиотек
- •Описание меток
- •Описание констант
- •Описание типов
- •Лабораторная работа № 3 программирование процессов с разветвляющейся структурой
- •If ( выражение ) оператор
- •If ( выражение ) оператор else оператор
- •1. Варианты заданий для оператора if.
- •2. Варианты заданий для оператора case
- •Лабораторная работа № 4 Программирование процессов с циклической структурой
- •Лабораторная работа № 5 Обработка одномерных и двумерных массивов.
- •Список литературы
- •Ковтун н.И. Компьютерное обеспечение специальности
Описание используемых библиотек
Формат:
Uses <имя 1>, <имя 2>,…;
Например:
Uses Crt, DOS, MyLib; {подключены 3 библиотеки с соответствующими именами}
С помощью директивы Uses подключаются библиотечные модули из стандартного набора Turbo Pascal или написанные пользователем.
Описание меток
Формат:
Label <имя 1>, <имя 2>,…
Например:
Label Metka1,A,9999;
Перед любым оператором языка Паскаль можно поставить метку, что позволяет выполнить переход на этот оператор с помощью оператора Goto из любого места программы. Метка состоит из имени и следующего за ним двоеточия. Именем может служить идентификатор или цифра (десятичное число от 0 до 9999). Перед употреблением метка должна быть описана, причем каждая не более 1 раза. Если метка описана, но в разделе операторов не используется, то ошибки при этом не возникает.
Описание констант
В этом разделе производится присваивание идентификатором констант постоянных значений.
Формат:
Const <идентификатор>=<значение>;
Например:
One=1;
Limit=-One;
Separator=’******’;
High=-1000;
Будучи определенной в программе, любой идентификатор константы может входить во все конструкции, в которых может присутствовать связанное с ним значение, например: Diar:= (x-High)/2+One;
Не допускаются ситуации, когда идентификатору константы предлагается изменить значение, например: High:= (x+y)*2;
Операндами константного выражения могут быть числа, строки, идентификаторы констант, стандартные функции, например:
Const
Min=0; Max=100;
Center= (Max-Min)/2; Message=’ Out of memory’;
Error_Txt=’Error:’+Message+’.’;
Удачное с точки зрения мнемоники именование констант и использование их в программе вместо записи конкретных значений считается хорошим стилем программирования, т.к. делает программу более читаемой и позволяет быстро вносить в нее корректировку.
Описание типов
Тип данных может быть описан либо в разделе описания типов, либо в разделе описания переменных. Выбор описания типа зависит только от программиста и специфики программы.
Формат:
Type <имя типа>=<значение типа>;
Например:
Type
Positive=word;
Diapason=1..20;
Var
LoopGoup: Positive;
Index: real;
Ind: Diapason;
First_Letter; ‘a’..’z’;
Описание переменных
Каждая встречающаяся в программе переменная должна быть описана. Описание обязательно предшествует использованию переменной.
Формат:
Var <идентификатор,…>;<mun>;
Например:
Var
А,B,C : integer;
Result, Summa: real;
Vxod: boolean;
Описание операторов
Раздел операторов является основным, т.к. именно в нем с предварительно описанными переменными, константами, значениями функций выполняются действия, позволяющие получить результат.
Формат:
Begin
<оператор;>
…
<оператор>
End.
Выражения
Операции в языке Паскаль подразделяются на арифметические, отношения, логические, строковые и др. Выражения соответственно называются арифметические, отношения, логические и т.д.
арифметические операции:
«+» сложение;
«» вычитание;
«*» умножение;
«/» деление;
div целочисленное деление;
mod взятие остатка от целочисленного деления
Например: 9/4=2.25; 9div 4=2; 9 mod 4=1.
Тип результата выражения зависит от типов операндов, участвующих в операции. Операции div и mod допустимы только над значениями целого типа.
операции отношения:
= равно;
<> не равно;
> больше;
< меньше;
>=, => больше или равно;
<=, =< меньше или равно;
in принадлежность.
Например: А in М
Результат всегда имеет булевский тип и принимает одно из двух значений: True – если значение выражения истинно; и False – если значение выражения ложно.
логические операции:
AND (логическое и).
Результат равен True, если аргументы одновременно равны True. В остальных случаях результат выражения будет равен False.
Например: А and В
OR (логическое или).
Результат равен True, если хотя бы один аргумент равен True. В остальных случаях результат выражения будет равен False.
Например: А or В
XOR (исключающее или).
Результат равен True, если аргументы одновременно равны False. В остальных случаях результат выражения будет равен False.
Например: А xor В
NOT (логическое отрицание).
Результат равен True, если аргумент равен False, и результат равен False, если аргумент равен True.
Например: not А
Вычисление выражений производится по следующим правилам:
запись выражения производится в одну строку без каких-либо подстрочных или надстрочных знаков с использованием только круглых скобок;
выполняются операции внутри скобок. Если имеется несколько пар скобок, вычисления начинаются с самых внутренних;
порядок вычислений внутри скобок определяется приоритетом (старшинством) операций:
а) вычисление значений функций;
б) not;
в) возведение в степень;
г) операции типа умножения (*, /, div, mod, and);
д) операции типа сложения (+, - , or, xor);
е) операции отношения.
Операция, имеющая высший приоритет, выполняется первой.
при наличии нескольких операций одного приоритета вычисления выполняются слева направо.
Стандартные арифметические функции
Таблица 5
Название функции |
Обозначение в математике |
Обозначение в Паскале |
Примечание |
Синус |
sin (x) |
SIN (x) |
Аргумент имеет целый или вещественный тип, а результат только вещественный |
Косинус |
cos (x) |
COS (x) |
То же |
Арктангенс |
arctg (x) |
ARCTAN (x) |
То же |
Экспонента |
exp (x)=ex |
EXP (x) |
То же |
Натуральный логарифм |
ln (x) |
LN (x) |
То же |
Десятичный логарифм |
lg (x) |
0.4343*LN (x) |
То же |
Квадратный корень |
√x |
SQRT (x) |
То же |
Возведение в квадрат |
x2 |
SQR (x) |
Результат имеет тот же тип, что и аргумент, который может быть целого или вещественного типа |
Абсолютное значение |
|х| |
ABS (x) |
То же |
Возвращает ближайшее целое число, меньшее или равное х, если х≥0, и большее или равное х, если х<0 |
- |
INT (x) |
Аргумент имеет целый или вещественный тип, а результат только вещественный |
Выделение дробной части х |
- |
FRAC (x) |
То же |
Возвращает ближайшее целое число, меньшее или равное х, если х≥0, и большее или равное х, если х<0 |
- |
TRUNC (x) |
Аргумент и результат могут иметь целый либо вещественный тип |
Возвращает значение х, округленное до ближайшего целого числа |
- |
ROUND (x) |
То же |
Число π |
π |
PI |
Π=3.14 |
Генерация случайного числа с равномерным законом распределения |
- |
RANDOM |
Тип результата вещественный |
Возвращает значение булевского типа, равное True, если х нечетное, и False, если х четное |
- |
ODD (x) |
Аргумент имеет целый или вещественный тип, а результат - булевский |
Возведение в n-ую степень |
xn |
xn=exp(n*LN(x)) |
|
Примеры:
у:= sin (60*pi/100); {y=8.6602540387E-01} y:=int(-1.2); {y= -1}
y:= cos (45*pi/100); {y=5.0000000E-01} y:=int(-1.5); {y= -1}
y:= arctan (180/pi); {y=1.553354}
Оператор присваивания
Формат:
< идентификатор>:=< выражение >;
Предписывает выполнить выражение, заданное в его правой части, и присвоить результат переменной, идентификатор которой расположен в левой части. Переменная и выражение должны иметь один и тот же тип, исключение,когда переменная вещественная, а выражение целочисленное. Пример: Rezalt:=l+sin(A)
Процедуры ввода READ и READLN
Обеспечивают ввод информации с клавиатуры для последующей обработки ее программой.
Формат:
read(x1,x2, ...,xn);
readln(х1, х2, .. хn);
где x1,x2,. .,Хn - имена переменных, значения которых вводятся .
Значения переменных набираются минимум через 1 пробел на клавиатуре. После набора данных для одной процедуры read или readln нажимается клавиша -«.Enter». Значения, вводимые с клавиатуры, должны иметь тот же тип, что и соответствующие им переменные, указанные в процедуре read или readln. Если соответствие нарушено, возникает ошибка ввода-вывода.
Пример 8:
Var
I : real ; J : integer; B : char;
Begin
Read( I ,J , B);
END.
Так, правильный набор данных с клавиатуры для данной процедуры read будет выглядеть, например:
235.98 100 ‘G’
а неправильный набор, например:
‘G’ 235.98 100
Процедуры read и readln аналогичны, их единственное отличие в следующем:
read (X,Y); readln (X,Y);
read (A, В); readIn (A, B);
ввод данных: ввод данных:
5 10 <Enter> 15 20 <Enter> 5 10 <Enter> 15 20 <Enter>
Данные для нескольких процедур read набираются на одной строке, т.к. после нажатия клавиши <Enter> перехода к началу следующей строки не происходит.
Данные для нескольких процедур readln набираются на разных строках, т.к. после набора данных для одной процедуры readln и нажатия клавиши <Enter> курсор переходит к началу новой строки, где набираются данные для следующей процедуры readln.
Процедура readln, записанная без параметров, вызывает перевод строки.
Процедуры вывода WRITE и WRITELN
Производят вывод информации на экран монитора.
Формат:
write (У1,у2,…,yn);
writeln (y1,y2,…,yn);
где y1,у2,...,Уn-имена переменных, значения которых выводятся.
Процедуры write и writeln аналогичны, их единственное отличие заключается в следующем:
write(X, Y); write(A, B) ; вывод данных: 5 10 15 20 |
writeln(X,Y); writeln(A, B) ; вывод данных: 5 10 15 20 |
Данные для нескольких процедур write выводятся в одну строку, а данные для нескольких процедур writeln выводятся в разных строках.
Процедура writeln, записанная без параметров, вызывает перевод строки.
В процедурах вывода можно записывать комментарий, например:
write ('А=',А,' В=',В,' результат вычислений=',А*В/25);
На экране увидим следующее сообщение:
А=5 B=20 результат вычислений=1
Основные форматы вывода
В процедурах вывода write и writeln имеется возможность записи выражения, определяющего ширину поля вывода.
В приведенных ниже форматах используются следующие обозначения:
I -целочисленное выражение;
р -целочисленное выражение;
g -целочисленное выражение;
R -выражение вещественного типа;
В -выражение булевского типа;
Сh -выражение символьного типа;
S -выражение строкового типа;
# -цифра;
* -знак "+" или "-";
- - пробел.
I - выводится десятичное представление величины I, начиная с позиции расположения курсора.
Значение I |
Выражение |
Результат |
134 |
write(I); |
134 |
5671 |
write(I); |
5671 |
287 |
write(I,I,I); |
287287287 |
I:р - выводится десятичное представление величины I в крайние правые позиции поля шириной р.
Значение I |
Выражение |
Результат |
134 |
write(I:6); |
__134 |
1 |
write(I:10); |
__________1 |
312 |
write(I+I:7); |
_____624 |
R - в поле шириной 18 символов выводится десятичное представление величины R в формате с плавающей точкой. Если R > 0.0, ипользуется формат _#.######### Если R < 0.0, формат имеет вид _- #.#########E*##
Значение R |
Выражение |
Результат |
715. 432 |
write(R); |
__7 1543800000E+02 |
-1.919Е+01 |
write(R); |
_-1.9190000000E+01 |
567.986 |
write(R/2); |
_2.8399300000E+02 |
Пример 9. Вычислить и вывести на экран значения переменных y и d, используя расчетные формулы:
;
;
где a=3.2; b=17.5; x=-4.8.
Блок-схема алгоритма решения.
Текст программы:
Program Lab1;
Var
a,b,x,y,d: real;
Begin
Writeln ('Введите a, b, x');
Read (a, b, x);
y:=b*sqr(sin(x)/cos(x))-a/sqr(sin(x/a));
d:=a*exp(-a*x)*cos(b*x/a);
Writeln ('y=',y:8:3, 'd=',d:8:3);
End.
Результаты выполнения программы:
y(3.2;17.5;-4.8)=2265.051
d(3.2;17.5;-4.8)=6569529.085
ПРИМЕР ВЫПОЛНЕНИЯ Лабораторной РАБОТЫ
Вычислить на ЭВМ значения у и р, используя расчетные формулы-
у=а
3x2+
p=ln(a+x2)+sin2
при значениях а=0,59, z=-4.8, х=2,1
Схема алгоритма решения представлена на рис. 3. В блоке 2 вводятся исходные данные а, х, z. В блоке 3 вычисляется значение тангенса. В блоках 4 и 5 вычисляются значения функций у и р. а в блоке 6 осуществляется вывод вычисленных значений.
Program lab_1(input,output);
{ лабораторная работа №2}
{СТУДЕНТА ГРУППЫ ___ ИВАНОВА И.И.}
var
a,x,z,y,p,c: real;
begin
writeln(‘введите a,x,z’);
read(a,x,z);
c:=sin(x*x)/cos(x*x);
y:=a*c*c*c*sqr(sin(z*z/(a*a+x*x)));
p:=ln(a+x*x)+sqr(sin(z/a));
writeln(‘y=’,y:8:3,’p=’,p:8:3);
end.
Если сравнивать язык Си с языком Pascal, то можно сделать вывод, что Си дает большую свободу действиям программиста. С другой стороны Си позволяет совершить ошибки, которые в Pascal совершить невозможно.
Методические рекомендации к выполнению лабораторной работы
Отчет к лабораторной работе должен содержать:
Постановка задачи
Список входных данных
Список выходных данных
Список промежуточных переменных
Разработка алгоритма решения задач
Разработка блок-схемы решения задачи.
Список функций
3. Разработка программного кода к алгоритму.
4. Проверка алгоритма (листинг)
Рассмотрение всех не стандартных ситуаций
Ограничения и допущения, если имеются
5. Ответы на контрольные вопросы.
Задание к лабораторной работе
Разработать алгоритм решения задачи (по вариантам) и написать программы на языках Си и ТР.
Вариант задания |
Расчетные формулы |
Значения исходных данных |
1 |
a=2cos(x-/6)/2+sin2y b=1+z/3+z2/5 |
x=1.426 y=-1.220 z=3.5 |
2 |
b=
xy/x g=(y-x)(y-z /(y-x)) /1+(y-x)2
|
x=1.825 y=18.225 z=-3.298 |
3 |
Y=e-btsin(at+b)- S=bsin(at2cos2t)-1 |
a=-0.5 b=1.7 t=0.44 |
4 |
W= Y=cos2x3-x |
a=1.5 b=15.5 x=-2.9 |
5 |
S=x3tg2(x+b)2+a/ Q=bx2-a/eax-1 |
a=16.5 b=3.4 x=0.61 |
6 |
R=x2(x+1)/b-sin2(x+a) S= |
a=0.7 b=0.05 x=0.5 |
7 |
Y=sin3(x2+a)2- Z= |
a=1,1 b=0,004 x=0,2 |
8 |
F= Z=m cos (bt sin t)+c |
m=2 c=-1 t=1,2 b=0,7 |
9 |
y=b
tg2x- d=ae-axcos(bx/a) |
a=3,2 b=17,5 x=-4,8 |
10 |
f=ln(a+x2)+sin2(x/b) z=e-cx |
a=10,2 b=9,2 x=2,2 c=0,5 |
11 |
y= r= -b2sin3(x+a)/x |
a=0,3 b=0,9 x=0,61 |
12 |
Z=cos2
x 3
-x/ |
a=0,5 b=3,1 x=1,4 |
13 |
U= F=e2x ln (a+x) -b3xln(b-x)
|
a=0,5 b=2,9 x=0,3 |
14 |
Z= S
=e-ax |
m=0,7 c=2,1 x=1,7 a=0,5 b=1,08 |
15 |
M= H
=sin k2-e-nk |
n=3,8 k=0.9 1=0,78 |
16 |
S= M=cos2t3-x/ |
v=1,72 t=-1,5 w=0.3 |
Контрольные вопросы
Опишите особенности линейной алгоритмической конструкции.
В чем сходства и различия языков Си/С++ и Turbo Pascal?
Сравните структуры программ, названия основных типов данных, описание раздела подключения библиотек, раздел описания переменных, функции ввода-вывода данных. Оформите в таблице сравнений:
|
Си |
Turbo Pascal |
Структура программы |
|
|
Основные типы данных: Целый Вещественный…. |
|
|
