- •Содержание
- •Введение Общие положения
- •Основные сведения об алгоритмах
- •Язык Паскаль и интегрированные среды разработки программ
- •Турбо-Паскаль
- •Отладка и выполнение программы
- •Порядок выполнения лабораторных работ
- •Лабораторная работа № 1. Программирование формул
- •Лабораторная работа № 2. Ветвящиеся алгоритмы
- •Лабораторная работа № 3. Циклы с известным числом повторений
- •Лабораторная работа № 4. Циклы с заранее неизвестным числом повторений
- •Лабораторная работа № 5. Средства вывода. Таблицы
- •Лабораторная работа № 6. Двойные и кратные циклы
- •Лабораторная работа № 7. Сортировка массивов
- •Сортировка простыми включениями
- •Сортировка бинарными включениями
- •Сортировка простым выбором
- •Сортировка методом пузырька
- •Метод шейкер - сортировки
- •Лабораторная работа № 8. Подпрограммы – функции
- •Лабораторная работа № 9. Подпрограммы – процедуры
- •Лабораторная работа № 10. Работа с файлами и строками
- •Задание
- •Лабораторная работа № 11. Динамические переменные. Списки
- •Типы списков.
- •Задание.
- •Лабораторная работа № 12. Графический режим монитора. Построение графиков
- •Приложение а. Основные стандартные функции
- •Приложение б. Отличия языка иср PascalAbc.Net от Delphi Добавлено
- •Изменено
- •Отсутствует
- •Литература
Лабораторная работа № 9. Подпрограммы – процедуры
В тех случаях, когда подпрограмма не возвращает никакого конкретного значения, воспользоваться подпрограммой – функцией нельзя. Обычно не используют ее и когда несколько результатов, например, при преобразованиях массивов.
При обращении к подпрограмме – процедуре просто указывается ее имя со списком фактических параметров. Примером стандартных процедур могут быть подпрограммы ввода - вывода writeln, readln и другие.
Написать программу с использованием подпрограммы-процедуры, вычисляющую три вектора или матрицы X, Y, Z, являющиеся комбинацией трех векторов по два:
,
если заданы исходные вектора:
A = {3; 0; -1; 5; 7}
B = {8; 4.2; 8.8; 5.5}
C = {-1; 6; -1.8; 6.7}
D = {0.7; -1.1; 5.1; 6}
E = {-0.09; 10; 2.2; 4.5}
F = {5.5; 3.1; 2.4; 7} .
В вариантах приводится одна формула для вычисления трех массивов X, Y, Z:
,
где соответственно k = 1, 1, 2 и l = 2, 3, 3.
Например,
формула
с используемыми векторами A, B,
C, приводит к трем матрицам (разные
индексы i и j ):
Во всех вариантах i и j изменяются от 1 до 4.
Варианты заданий приведены в табл.12.1.
Таблица 12.1. Варианты заданий
№ вар. |
|
Используемые вектора |
1 |
|
А, B, C |
2 |
|
D, E, F |
3 |
|
A, C, E |
4 |
|
B, D, F |
5 |
|
B, C, D |
6 |
|
C, D, E |
7 |
|
A, B, C |
8 |
|
D, E, F |
9 |
|
B, C, D |
10 |
|
C, D, E |
№ вар. |
|
Используемые вектора |
11 |
|
A, C, E |
12 |
|
B, D, F |
13 |
|
A, B, C |
14 |
|
D, E, F |
15 |
|
B, C, D |
16 |
|
C, D, E |
17 |
|
A, C, E |
18 |
|
B, D, F |
19 |
|
A, B, C |
20 |
|
D, E, F |
№ вар. |
|
Используемые вектора |
21 |
|
B, C, D |
22 |
|
C, D, E |
23 |
|
A, C, E |
24 |
|
B, D, F |
25 |
|
F, B, C |
26 |
|
D, E, F |
27 |
|
B, C, D |
28 |
|
C, D, E |
29 |
|
A, C, E |
30 |
|
B, D, F |
Лабораторная работа № 10. Работа с файлами и строками
Целью работы является приобретение навыков работы с файловыми структурами при работе с модулем System (для Pascal ABC – PABCSystem). Модуль Dos в данной лабораторной работе не рассматривается. А так же изучаются операции работы со строками.
Прежде, чем использовать файлы, им надо поставить в соответствие файловые переменные процедурой Assign. Например:
Assign (f,’D:/student/002175/myfile.dat’);
Assign (f,’myfile.dat’);
Во втором случае файл находится в текущем каталоге. Это единственная структура, которая подчиняется непосредственно операционной системе, всё остальное (кроме комментариев) в тексте программы принадлежит правилам языка Паскаль.
Эта процедура должна стоять первой при начале работы с файлом. Сама же файловая переменная описывается в разделе описания переменных строкой вида
Var <список_файловых_переменных>: FILE OF <тип_компонент>
Так как строки являются особенными структурами данных, то для их хранения используется специальное описание файловых переменных:
Var < имя_файловой_переменной >: text;
Например:
Var File, OutF: text;
По большому счету все файлы можно либо создавать, либо читать. В первом случае используется процедура открытия файла для записи Rewrite, во втором – открытие файла для чтения Reset.
В дальнейшем в первом случае в них можно записывать обычной процедурой Write, во втором – читать процедурой Read. Если же используются текстовые файлы, то так же можно использовать процедуры WriteLn и ReadLn.
Для процедур Write/ WriteLn и Read/ ReadLn консоль является стандартным устройством ввода-вывода, поэтому имена файлов для клавиатуры и экрана монитора можно не указывать. Во всех остальных случаях в строке ввода-вывода на первом месте должна стоять файловая переменная. Например:
WriteLn(OutF,’Я помню чудное мгновенье’);
Над символьными массивами разрешены только операции сравнения. Над строками разрешено гораздо больше операций. Они могут быть оформлены не только в виде знаков, таких как + (конкатенация), но и в форме процедур или функций.
Например, функция Copy (<строка>, <номер первого символа>, <количество символов>) позволяет копировать или выделять фрагмент строки.
Функция Pos (<искомая подстрока>, <строка>) позволяет произвести поиск определенного фрагмента в некоторой строке и определить номер символа, с которого начинается вхождение подстроки.
Функция Length (<строка>) позволяет определить не предельную, а фактическую длину строки. Результат – целое число.
Процедура Delete (<строка>, <номер первого удаляемого символа>, <количество символов>) удаляет в исходной строке фрагмент определенной длины.
Прочие функции (но не процедуры) приведены в Приложении А.
Более того, можно получить доступ к любому символу строки, указав ее в виде элемента массива с индексом. В описании строки можно указывать предельное значение количества символов, но можно и не указывать:
Var st,at: string;
St1,st2:string[20];
Если длина не задана, то по умолчанию (автоматически) принимается максимально возможная – 255 символов.
