
- •Министерство образования украины
- •Введение
- •Порядок выполнения контрольной работы
- •Cодержание пояснительной записки
- •Контрольная работа № 1 вычисление арифметических выражений
- •Варианты
- •Контрольныe вопросы
- •Контрольная работа № 2 организация разветвлений
- •Варианты
- •Контрольныe вопросы
- •Контрольная работа № 3 организация циклов и работа с одномерными массивами
- •Варианты
- •Контрольныe вопросы
- •Список использованной и рекомендуемой литературы
- •Приложение 1
- •Описание программы
- •InputN(k)
- •InputMatrix(k,a)
- •Список использованной литературы
- •Приложение листинг программыWork4.Pas
- •{Главная программа}
- •Алгоритм вычисления знаменателя следующий:
- •Алгоритм вычисления значения выражения:
- •Алгоритм работы процедуры InputC:
- •Алгоритм выполнения главной программы:
- •Приложение 3 пример выполнения контрольной работы № 2 листинг программыWork2.Pas
- •Алгоритм выполнения функции f
- •Алгоритм выполнения процедуры Input
- •Описание главной программы
- •Приложение 4 пример выполнения контрольной работы № 3 листинг программыWork3.Pas
- •{Главная программа}
- •Описание процедуры Input
- •Описание процедурыInputVector
- •Описание процедурыOutputVector
- •Описание функции Summa
- •Описание главной программы
- •Приложение 5 пример выполнения контрольной работы № 4
- •Описание процедуры InputN
- •Описание процедуры InputMatrix.
- •Описание процедуры OutputMatrix.
- •Описание процедуры Evaluate.
- •Описание главной программы
- •Приложение 6 Основные функции среды турбо паскаль
- •Функциональные клавиши
- •Назначения функциональных клавиш:
- •Текстовый редактор среды
- •Команды текстового редактора.
- •Счет и отладка программы
- •Справочная система
- •Приложение 9 Модуль crt
- •Константы
- •© Голубь н.Г., Кириленко е.Г. Основы программирования на языке Pascal, часть 1
Алгоритм выполнения функции f
Сначала функции Fприсваивается значениеTRUEи проверяется b>a.
Если условие выполняется, тогда вычисляется значениеx1:=b/4.0*a.
Иначепроверяется b=a.
Еслида, то х1:=-55.
Еслиже это условие не выполняется , то остается условиеb<a, в котором надо проверить на ноль знаменательa выражения(b-5)/a.
Еслиэто условие(a=0) выполняется(знаменатель в выражении(b-5)/aравен нулю), вычисляется составной оператор послеTHEN, заключенный в скобки - begin...end:
В этом случае строковая переменная s1:=inv1+inv2будет равна:
‘Деление наноль!!!!!!! Повторите ввод’.
Это сообщение выводится на экран.
Функция Fпринимает значениеFALSEи управление передается поEXITв основную программу.
В случае, еслизнаменатель не равен нулю, вычисляется значение x1:=(b-5.0)/a.
Далеепроверяется, входит ли значение х1в допустимый диапазон (для переменных типаINTEGER).
Если да, то целая переменная получает значениех:=trunc(x1).
Еслизначениех1выходит за допустимый диапазон, то:
s1:=inv3+inv4(‘Результат выходит за диапазон [-3268...32767]!!!!’);
значение S1выводится на экран - Writeln(s1);
выводится на экран полученное значение Х1 - Writeln(x1);
и новое приглашение - Writeln(Inv1) (‘Повторите ввод’).
Функция Fпринимает значениеFALSE и управление поEXIT передается в главную программу.
Далее описана процедура ввода исходного значения переменной Ас проверкой на область допустимых значений. Имя процедуры - Input. В заголовке описаны формальные параметры A:integer и inv:string (имя переменной). В теле процедуры используются локальные переменныеal:realиs1:string, в поле описания меток определена меткаL.
Алгоритм выполнения процедуры Input
На экран сообщаем о вводе переменной А - Write(‘Введите значение ’+ inv,'===>'). При выполнении этого оператора на экране появляется сообщение: Введите значение А===>.
Вводим с клавиатуры ее значение - READLN(aL).
Проверяем входит ли это значение в допустимый диапазон:
если да, то A:=TRUNC(aL),
если нет , то переменная s1получает значениеs1:=inv5+inv4
(‘Вводимое значение выходит за диапазон [-32768...32767]!!!’).
На экран выводится значение inv1(‘Повторите ввод’).
Управление передается на метку Lдля повторного ввода значения А.
Эта процедура может быть использована для ввода и контроля диапазона любой целочисленной переменнойтипаINTEGER.
Описание главной программы
В цикле REPEAT ... UNTILочищается экран (ClrScr), выводится на экран вид исходного задания, через процедуруINPUT вводятся переменныеa и b, через функциюFвычисляется искомое значениеx.
Еслизначение функции F равноFalse, управление передается на меткуL1для повторного ввода переменныха и b.
Еслизначение функцииF равноTRUE, -выводится результат (переменнаях).
На экране появляется ‘Опять? (Y/N)’.
Переменной ch:=ReadKeyи в зависимости от ответа управление передается на начало цикла (ch:=’Y’) или программа заканчивает выполнение(ch:= ‘N’).
Приложение 4 пример выполнения контрольной работы № 3 листинг программыWork3.Pas
program Work3;
{$N+,E+}
{ Вариант 60 - элементы массива типа LONGINT.
Найти сумму первых K отрицательных элементов массива A.
}
UsesCRT;
ConstNN=20; {Максимальная длина вектора}
invN=' N';
invK=' K';
inv1='Повторите ввод';
inv4='выходит за диапазон [-2147483648..2147483647]!!!!';
inv5='Вводимое значение ';
TypeArrayA=Array [1..NN] of LongInt;
Vark,N:integer;
A:ArrayA;
ch:char;
{Ввод значения N, 1<=N<=NN}
Procedure Input(inv:String; NN:Integer; Var N:integer);
Begin
Repeat
Write('Введите значение'+inv,'=====>');
Readln(N);
Until (N<=NN) and (N>=1);
End;
{Ввод Nзначений компонент вектора A[i], -2147483648<=A[i]<= 2147483647}
Procedure InputVector(N:integer;Var A:arrayA);
Label L;
Var i :integer;
Ra:Real;
s1:String;
Begin
for i:=1 to N do
Begin
L:
Write('Введите значение элемента вектора A[',i,']=====>');
Readln(Ra);
if (Ra>=-2147483648.0)and(Ra<=2147483647.0) then A[i]:=trunc(Ra)
else
Begin
s1:=inv5+inv4;
Writeln(s1);
Writeln(inv1);
goto L;
End
End;
End;
{Вывод значений компонент вектора Aпострочно}
Procedure OutputVector(N:integer; A:arrayA);
Var i :integer;
Begin
Writeln(' ------- Исходный вектор -------');
for i:=1 to N do
Write(A[i]:11,' ');
Writeln;
End;
{Нахождение суммы первых Kотрицательных элементов массиваAдлинойN}
Function Summa(k,N:Integer; A:ArrayA):Extended;
Var i,Kk:integer;
S:Extended;
Begin
Kk:=1; {Счетчик отрицательных элементов массива}
S:=0;
for i:=1 to N do
if (A[i]<0) and (Kk<=k) then
Begin
S:=S+A[i];
Kk:=Kk+1
End;
Summa:=S
End;