- •Структура описания лабораторной работы
- •Выполнение работы
- •Форма отчета
- •Основные сведения
- •Установка и запуск системы
- •Интерфейс системы
- •Меню и команды
- •Пункт File
- •Пункт Edit
- •Пункт Search
- •Пункт Run
- •Пункт Compile
- •Пункт Debug
- •Пункт Options
- •Пункт Window
- •Пункт Help
- •Страница Compiler Options окна свойств проекта
- •Страница Directories окна свойств проекта
- •Страница Preferences окна свойств проекта
- •Файлы проекта
- •Основные приемы работы в СП Borland Pascal
- •Создание новой программы
- •Работа с уже созданной программой
- •Использование средств отладки
- •Пошаговое выполнение программы
- •Просмотр значений переменных
- •Использование точек останова
- •Порядок выполнения работы
- •Контрольные вопросы
- •Основные сведения
- •Оператор присваивания
- •Составной оператор
- •Условный оператор
- •Оператор варианта
- •Ввод данных с клавиатуры
- •Вывод данных на экран
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 3. Программы с циклами
- •Основные сведения
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с возрастающим параметром
- •Оператор цикла с убывающим параметром
- •Оператор прерывания цикла
- •Оператор продолжения цикла
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 4. Использование массивов
- •Основные сведения
- •Описание массива
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 5. Обработка символьных строк
- •Основные сведения
- •Описание строковых переменных
- •Операции над данными типа string :
- •Стандартные функции для обработки строк
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 6. Использование процедур
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 7. Использование функций
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 8. Работа с текстовыми файлами
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 10. Использование данных ссылочного типа
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 11. Создание и использование модулей
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Литература
– 20 –
5.Какова фактическая длина пустой строки ?
6.Какие операции допустимы над данными строкового типа ?
Лабораторная работа 6. Использование процедур
Основные сведения
Описание процедуры
procedure имя_процедуры(параметр1;параметр2;...); тело_процедуры;
Описание процедуры располагается непосредственно перед разделом операторов основной программы или вызывающей подпрограммы (процедуры или функции).
Параметры процедуры могут быть двух видов:
•параметры-значения: параметр1, параметр2, ... : тип ;
•параметры-переменные: var параметр1, параметр2, ... : тип .
Параметр-значение передается в процедуру по значению, т.е. копируется, и его изменение внутри процедуры не влияет на значение подставляемого на его место при вызове фактического параметра. Параметры-значения могут рассматриваться только как входные параметры.
Параметр-переменная передается в процедуру по адресу, его изменение внутри процедуры влечет за собой изменение подставляемого на его место при вызове фактического параметра. Параметры-переменные могут рассматриваться как входные, так и выходные параметры.
Тело процедуры подобно телу основной программы. Оно может содержать разделы описания констант, типов, переменных, и обязательно содержит блок исполняемых операторов.
Вызов процедуры
имя_процедуры( фактический_параметр1, фактический_параметр2,...)
Типы фактических параметров-значений, передаваемых в процедуру при вызове, должны совпадать или быть совместимыми по присваиванию с типами формальных параметров, заданных в заголовке процедуры. Типы фактических параметров-переменных должны строго совпадать с типами формальных параметров-переменных.
Связь по данным между вызывающей программой и процедурой может осуществляться одним из двух способов:
•через параметры процедуры;
•через глобальные переменные, описанные в вызывающей программе и доступные в процедуре.
Пример выполнения
Ввести массив из 20 чисел, найти среднее арифметическое положительных чисел массива, упорядочить его по возрастанию элементов и вывести упорядоченный массив. Ввод, вывод массива, подсчет среднего арифметического и упорядочение оформить в виде процедур:
program PRIMER; const N=20;
type Data = array [1..N] of real; var arM : Data;
{***** VVOD *****}
procedure VVOD( var arA : Data );
{
Действие:
Ввод со стандартного ввода элементов массива. Параметры:
– 21 –
массив arA. Возвращает:
массив arA. Замечания: -
}
var I:integer; begin
writeln('Ввод массива'); for I:=1 to N do begin
write('Введите A[',I,']'); readln(arA[I])
end end;{ VVOD }
{***** VIVOD *****}
procedure VIVOD( var arA : Data );
{
Действие:
Вывод на стандартный вывода элементов массива. Параметры:
массив A. Возвращает: - Замечания: -
}
var I:integer; begin
writeln('Отсортированный массив');
for I:=1 to N do writeln('A[',I,']=', arA[I]); end;{ VIVOD }
{***** SREDAR *****}
procedure SREDAR( var arA : Data );
{
Действие:
Подсчет и вывод среднего арифметического положительных элементов массива. Параметры:
массив arA. Возвращает:
Печать среднего арифметического Замечания: -
}
var rS:real; I,J :integer; begin
rS:=0;
J:=0;
for I:=1 to N do
if arA[I]>0 then begin rS:=rS+arA[I]; J:=J+1
end;
if J=0 then writeln('Положительных чисел нет') else writeln('Среднее арифметическое=',rS/J)
end;{ SREDAR }
{***** SORT *****}
procedure SORT( var arA : Data );
{
Действие:
– 22 –
Сортировка массива методом простого выбора. Параметры:
массив arA. Возвращает:
массив arA. Замечания: -
}
var I,J,K:integer; rMIN,rR:real; begin
for I:=1 to N-1 do begin K :=I;
rMIN:=arA[K]; for J:=I to N do
if A[J]<rMIN then begin rMIN:=arA[J];
K :=J end;
rR :=arA[I]; arA[I]:=rMIN; arA[K]:=rR
end end;{ SORT }
{*****MAIN *****}
begin
VVOD( arM ); SREDAR( arM ); SORT( arM ); VIVOD( arM )
end.
Варианты заданий
Во всех вариантах заданий обрабатывается таблица розыгрыша лотереи, которая представляет собой тройки чисел вида: «серия-номер-выигрыш».
1.Ввести таблицу розыгрыша, упорядочить ее по убыванию серии, вывести упорядоченную таблицу на экран, циклически запрашивать серию и для указанной пользователем серии выдавать все имеющиеся в таблице тройки «серия-номер-выигрыш». Ввод, вывод, упорядочение таблицы и вывод троек для заданной серии организовать в виде процедур.
2.Ввести таблицу розыгрыша, упорядочить ее по возрастанию совокупности полей «выигрыш» и «серия», вывести упорядоченную таблицу на экран, циклически спрашивать две пары «выигрыш-серия» и выводить на экран данные о выигрышных билетах, не попавших во введенный пользователем интервал. Ввод, вывод, упорядочение таблицы и вывод данных о билетах, не попадающих во введенный отрезок, оформить в виде процедур.
3.Ввести таблицу розыгрыша, упорядочить ее по возрастанию серии, вывести упорядоченную таблицу на экран, циклически запрашивать серию и номер билета и выдавать сообщение, есть ли выигрыш и какой. Ввод, вывод, упорядочение и поиск по таблице оформить в виде процедур.
4.Ввести таблицу розыгрыша, упорядочить ее по возрастанию выигрыша, вывести упорядоченную таблицу на экран, подсчитать общую сумму выигрыша, приходящуюся на следующие категории выигрыша: 1…500, 501…1000, 1001…5000, 5001 и выше. Ввод, вывод, упорядочение таблицы и подсчет суммы, приходящейся на одну из категорий выигрыша, оформить в виде процедур.
5.Ввести таблицу розыгрыша, упорядочить ее по возрастанию номеров, вывести упорядоченную таблицу на экран, циклически запрашивать номер билета и выдавать серию и выигрыш, если номер совпадает, или ближайшие тройки «серию-номер-выигрыш», имеющиеся в таблице, если номер не совпадает. Ввод, вывод, упорядочение и поиск по таблице оформить в