- •Предисловие
- •Содержание курсов "информатика" и "основы алгоритмизации и языки программирования"
- •2.1. Лекционные занятия
- •Тема 9. Разработка и отладка программ с использованием подпрограмм-
- •Тема 10. Разработка и отладка программ с использованием данных
- •Тема 11. Разработка и отладка программ с использованием
- •Приложение
- •2.2. Лабораторные и практические занятия
- •2.3. Рекомендации к бюджету времени при изучении курсов
- •Внимание!
- •Введение Начальные сведения о компьютере ibm pc
- •Клавиатура
- •Особые комбинации клавиш
- •Файлы данных
- •Операционная система ms dos
- •Составные части dos
- •Загрузка и перезагрузка пк
- •Работа с файлами, каталогами и командами
- •Внутренние команды dos
- •Программная оболочка Norton Commander
- •Функциональные клавиши nc
- •Некоторые комбинации клавиш nc
- •Особенности работы интегрированной среды (ide) Турбо Паскаль (Тurbo Рascal)
- •Команды работы с блоками
- •Программирование на языке турбо паскаль Тема № 1 Разработка и отладка программ линейного вычислительного процесса
- •Приоритет выполнения операций
- •Примеры
- •Варианты заданий
- •Тема № 2 Разработка и отладка программ разветвляющегося вычислительного процесса. Логический условный оператор
- •Тема № 3 Разработка и отладка программ разветвляющегося вычислительного процесса. Оператор выбора варианта
- •Варианты заданий
- •15. Введите символ с клавиатуры компьютера и определите, является ли он символом английского алфавита, символом русского алфавита или знаком препинания.
- •16. Введите цифру и распечатайте соответствующий ей знак зодиака. Например единице, соответствует знак зодиака "водолей". Если такой цифры нет, то сделайте сообщение.
- •Тема № 4 Разработка и отладка программ циклического вычислительного процесса. Оператор цикла с параметром
- •Примеры
- •Варианты заданий
- •Тема № 5 Разработка и отладка программ циклического вычислительного процесса. Операторы цикла с постусловием и предусловием
- •Оператор цикла с предварительным условием (предусловием) имеет вид:
- •Тема № 6 Разработка и отладка программ с использованием структурированных типов данных – одномерных массивов
- •Тема № 7 Разработка и отладка программ с использованием структурированных типов данных – двухмерных массивов
- •Тема № 8 Разработка и отладка программ с использованием подпрограмм-функций
- •Подпрограмма-функция Структура функции
- •Примеры
- •11. Даны три массива а(10), в(8), с(12). Подсчитайте для каждого массива среднее арифметическое его положительных элементов, для чего используйте подпрограмму-функцию.
- •13. Составьте подпрограмму-функцию вычисления элементов нового массива на основании элементов массивов а и в по правилу
- •20. Вычислите суммы элементов каждой строки матрицы в(8,8), определите наибольшее значение этих сумм и номер соответствующей строки. Для подсчета сумм и наименьшего значения напишите функции.
- •Тема № 9 Разработка и отладка программ с использованием подпрограмм-процедур
- •Подпрограмма-процедура
- •Структура процедуры
- •Примеры
- •Составьте программу с подпрограммой определения максимальной и минимальной оценок, а также среднего балла, данных девятью судьями каждой из пяти фигуристок.
- •Тема № 10 Разработка и отладка программ с использованием данных символьного и строкового типов
- •Операции над символами
- •Операции над строками
- •Строковые процедуры
- •Строковые функции
- •Варианты заданий
- •Тема № 11 Разработка и отладка программ с использованием структурированных типов данных - файлов
- •Var имя : file of базовый тип;
- •Var имя : имя типа;
- •4.Массив к данных вещественного типа записать в типизированный файл, а затем считать из него средний элемент.
- •Варианты заданий
- •9. Имеется файл с данными целого типа. Считайте эти значения в исходной программе в массив, упорядочьте элементы массива в порядке возрастания (убывания) и запишите его в новый файл.
- •18. Имеется массив температур т[30]. Напишите подпрограмму, находящую среднюю температуру за дни с к1 по к2. Определите самую теплую неделю месяца. Результат запишите в файл.
- •23. Имеется массив температур т[30]. Определите среднюю температуру за месяц, самую теплую и самую холодную температуры в течение месяца. Результаты запишите в файл.
- •Приложения
- •Типы Простые Порядковые Целые
- •Процедурные Файлы
- •Длинные и короткие вещественные типы
- •В) Таблица п.3 Кодировка символов в соответствии с таблицей кодов ascii
- •I. Модуль system
- •II. Модуль dos
- •III. Модуль crt
- •IV. Модуль graph
- •V. Модуль printer
- •VI. Модуль overlay
- •Основные термины
- •Учебная литература по курсу
Тема № 8 Разработка и отладка программ с использованием подпрограмм-функций
Тема посвящена организации вычислительных процессов и программ с использованием важнейшего средства структурного и модульного программирования – подпрограмм (функций).
При программировании с использованием языка Паскаль, как и при написании программ на других алгоритмических языках, часто возникает необходимость выделять неоднократно выполняемые вычисления при различных исходных данных в отдельные программные единицы, называемые подпрограммами. В некоторых случаях для уменьшения
размера программы целесообразно выделять вычисления в отдельную программную единицу, работающую с формальными параметрами. В основной программе в нужных местах осуществляется обращение к этой программной единице при заданных значениях фактических параметров. Помимо этого подпрограммы часто используют при создании больших программных комплексов группой разработчиков для разбивки комплекса на отдельные связанные друг с другом модули. Подпрограммы имеют четко обозначенные вход и выход. В алгоритмическом языке Паскаль имеются два вида подпрограмм: процедура (PROCEDURE) и функция (FUNCTION).
Процедуры и функции описываются в разделе описаний до основного слова BEGIN. Подпрограмма может содержать и другие подпрограммы. Важно помнить о следующем: любая программная единица перед использованием должна быть предварительно описана.
Подпрограмма-функция Структура функции
FUNCTION имя (список формальных параметров с указанием типов): тип функции (результата);
Раздел описаний ;
BEGIN
Последовательность операторов ;
имя:=выражение (результата);
END ;
Отличие подпрограммы-функции от подпрограммы-процедуры состоит в том, что она имеет только один выходной параметр или результат, и он должен быть присвоен переменной с именем подпрограммы-функции и передан в основную программу. Если такой оператор присваивания отсутствует, то значение, вычисляемое с помощью функции, будет не определено.
Вызов подпрограммы-функции в основной программе осуществляется аналогично вызову любой встроенной функции Паскаля, например математических функций. Имя функции с реальными аргументами либо используется в выражениях, либо оно присваивается переменной, совпадающей по типу с типом функции. Количество, тип и порядок следования реальных и формальных параметров функции должны совпадать. Каждый формальный параметр указывается со своим типом; реальный же - без типа.
Пример подпрограммы-функции
FUNCTION SUM(A:MAS;N:INTEGER):REAL;
VAR S:REAL;
I:INTEGER;
BEGIN
S:=0;
FOR I:+1 TO N DO S:=S+A[I];
SUM:=S;{Результат присваивается переменной SUM или имени функции}
END;
Примеры
Вычислите функцию Z
Z = a/4!+ b/10!- c/8! ,
где a = max Xi; b = max Yj; c = max Fk; 4! =1234 ("четыре факториал");
i=1,10 J=1,12 K=1,15
Xi, Yj, Fk - элементы одномерных массивов {X1,X2,...,X10}, {Y1,Y2,...,Y10}, {F1,F2,...,F15}. Используйте две подпрограммы-функции: вычисления факториала и максимального элемента массива.
PROGRAM PODPR;
TYPE MAS = ARRAY [1..15] OF REAL;
VAR XMAX, YMAX, FMAX, Z : REAL;
J : INTEGER;
X, Y, F : MAS;
{ Функция вычисления факториала }
FUNCTION FAC ( N : INTEGER ) : REAL;
VAR P : REAL; I : INTEGER;
BEGIN P := 1;
FOR I := 1 TO N DO P := P*I;
WRITELN ( ’P=’, P:10:4 );
FAC:= P;
END;
{ Процедура вычисления максимального элемента }
FUNCTION MAX(K:INTEGER; S:MAS): REAL;
VAR SMAX:REAL;
I: INTEGER;
BEGIN SMAX := S[1];
FOR I:=1 TO K DO
IF S[I]> SMAX THEN SMAX:= S[I];
WRITELN (’MAX=’, SMAX );
MAX:=SMAX;
END;
{ Основная программа }
BEGIN
FOR J:=1 TO 10 DO READ (X[J]);
FOR J:=1 TO 12 DO READ (Y[J]);
FOR J:=1 TO 15 DO READ (F[J]);
MAX (10, X, XMAX); MAX (12, Y, YMAX);
MAX (15, F, FMAX);
Z:= MAX (10, X) /FAC(4) + MAX (12, Y)/FAC(10) - MAX (15, F)/FAC(8);
WRITELN (’Z=’, Z); END.
2. Даны действительные числа s, t. Вычислите
f(t, -2*s, 1.17)+f(2.2, t, s-t), где f(a, b, c)=(2a-b-sin(c))/(5+c).
PROGRAM F;
USES CRT;
VAR S, T, P:REAL;
FUNСTION FN(A,B,C:REAL):REAL;
BEGIN
FN:=(2*A-B*SIN(C))/(5+ABS(C));
END;
BEGIN
CLRSCR;
WRITELN(‘ S,T’);
READLN(S,T);
P:=FN(T, -2*S, 1.17)+FN(2.2, T, S-T);
WRITELN(‘P=‘,P:7:3);
END.
Варианты заданий
Составьте программу вычисления Z = , где xmax и xmin – наибольший и наименьший элементы вещественного массива X(10), а ymax и ymin – наибольший и наименьший элементы вещественного массива Y(8). Нахождение наибольшего и наименьшего элемента массива выполните в подпрограмме-функции.
Даны три массива А(10), В(8), С(9). Вычислите с помощью подпрограмм-функций Х1= /10!; Х2= /8!; Х3= /9! .
Вычислите координаты центра тяжести системы N материальных точек с массами М1, М2, …, МN и координатами (x1, y1, z1), (x2, y2, z2),…, (xn,yn, zn) по следующим выражениям:
X= ; Y = ; Z = .
Вычисление сумм оформите в виде подпрограмм-функций.
Вычислите средние значения m и среднеквадратичные отклонения s при
m = , s =
для трех выборок (массивов) данных. Здесь n – количество элементов для каждого массива, аi – элемент массива.
Даны два вещественных числа x и y. Вычислите
z = (sign(x) +sign(y)) sign(x+y),
где sign(a) =
При решении задачи опишите и используйте подпрограмму-функцию sign.
Пусть функция спроса на товар представляет собой зависимость QD = a - bХ, где QD - объем спроса на товар или его количество в тысячах единиц в определенный период времени (неделю), а Х - цена за единицу товара. Задайте подпрограммы-функции спроса на данный товар в четырех округах города (т.е. задайте коэффициенты а, b) и определите рыночный спрос на этот товар в городе как сумму функций спроса в его округах. Каков будет рыночный спрос при заданных максимальной и минимальной, а также средней ценах за товар?
7. Пусть функция предложения товара представляет собой зависимость QS = a + bХ, где QS - предложение товара в определенный период времени (неделю), а Х - цена за единицу товара. Задайте подпрограммы-функции предложения товара четырьмя фирмами города (т.е. задайте коэффициенты а и b) и определите рыночное предложение на данный товар в городе как сумму функций предложения всех фирм. Каково будет рыночное предложение при заданных максимальной и минимальной, а также средней ценах за товар?
8. Пусть функция спроса имеет вид QD = a1 - b1Х, а функция предложения - QS = a2 + b2Х. Определите точку рыночного равновесия, т.е. точку пересечения этих двух функций; выведите на печать величины равновесного объема рынка и равновесной цены. Если цена на товар понизится (повысится), то что будет наблюдаться на рынке - избыток товара или его дефицит? Используйте в работе подпрограммы-функции спроса и предложения.
9. Рассчитайте текущую дисконтированную стоимость (RD) оборудования при следующих условиях:
а) i = 10 %, R1 = 200;
б) i = 20 %, R1 = 200, R2 = 400, R3 = 600;
в) i = 5 %, R1 = 100, R2 = 200, R3 = 400, R4 = 500, R5 = 600;
г) i = 10 %, R1 = 100, R2 = 200, R3 = 400, R4 = 500, R5 = 1000,
где Rt - годовой доход в t-м году, тыс. рублей; i - процентная ставка банка на заем для покупки данного оборудования, а дисконтированная стоимость
RD = .
10. Дано вещественное число z. Вычислите
Y = sh(z) *tg(z+1) –tg2 (2+sh (z-1)).
При решении задачи определите и используйте функции тангенса и гиперболического синуса sh (x) = (ex – e-x)/2.