- •Лабораторная работа №1 ввод и редактирование программ в интегрированной среде free паскаля
- •1. Этапы разработки программ
- •2. Файл и связанные с ним понятия
- •3. Краткие сведения об интегрированной среде
- •4. Ввод и редактирование текста программы
- •4.1. Ис Free Паскаля и окна.
- •4.2. Работа с исходными файлами в окне редактирования
- •4.2.1. Возможные режимы редактирования
- •4.2.2. Приемы работы с клавиатурой
- •4.3. Работа с блоками
- •4.4. Поиск и замена фрагментов текста
- •5. Работа с файлами
- •5.1. Создание нового исходного файла
- •5.2. Загрузка существующего файла
- •5.3. Сохранение файла
- •5.4. Перезапись файла
- •6. Интерактивная помощь.
- •7. Выполнение работы
- •1.1. Команда Compile
- •1.2. Команда избирательной компиляции Make
- •1.3. Команда общей компиляции Build
- •1.4. Команда назначения первого файла Primary file
- •2.2. Определение места ошибки в программе
- •2.3. Определение причины ошибки
- •3. Порядок выполнения работы
- •4. Контрольные вопросы
- •Лабораторная работа №3 выполнение программ в среде free-паскаль
- •Структура простейших линейных программ
- •Экраны и окна, поддерживаемые ис
- •Режимы выполнения программ в ис и курсор выполнения
- •Команды ис для выполнения программ
- •Дополнительные возможности по прерыванию выполнения программы
- •Использование точек останова
- •Использование клавиш Ctrl-Break
- •Правила ввода исходных данных
- •Порядок выполнения работы
- •Исходный текст программы lab3.Pas
- •Контрольные вопросы.
- •Лабораторная работа № 4 линейные алгоритмы
- •Возведение в степень , соответственно На Паскале: exp(a*ln(X)). Лабораторная работа № 5 работа с двоичными масками
- •I. Требования к выполнению заданий
- •II. Варианты заданий
- •Лабораторная работа № 6 работа со строками
- •I. Требования к выполнению заданий
- •II. Варианты заданий
- •Лабораторная работа № 7 исследование особенностей операций ввода-вывода в паскале
- •7. И сследование различий в работе операторов Read и Readln
- •8. Вывод вещественных значений
- •10. Записать операторы ввода-вывода:
- •Лабораторная работа № 8 оператор выбора. Разветвляющиеся вычислительные процессы
- •1. Теоретический материал
- •If выражение then оператор;
- •2 Порядок выполнения лабораторной работы
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Лабораторная работа №10 последовательности
- •Лабораторная работа № 11 обобщенная формула
- •I. Требования к выполнению заданий
- •II. Варианты заданий
- •Лабораторная работа №13 работа с одномерным массивом
- •Лабораторная работа №14 работа с двухмерными массивами Задания по теме «Двумерные массивы»
- •Лабораторная работа № 15 изучение механизма передачи данных в процудуры
- •I. Требования к выполнения заданий
- •II. Варианты заданий
- •Лабораторная работа № 16 работа с множествами
- •Варианты заданий
- •Лабораторная работа № 17 работа с записями
- •Лабораторная работа №1 работа с файломи
- •Лабораторная работа № 2 указатели и динамические переменные
- •Лабораторная работа № 3 списки
Лабораторная работа №1 работа с файломи
Цель работы:
приобретение навыков представления таблиц в виде массивов записей и файлов;
приобретение навыков в обработке и поиске информации в массивах записей и файлах;
приобретение навыков в работе с файлами разных типов.
Варианты заданий те же, что и в 1-й части по теме «Записи». Только массив записей должен сохраняться и обрабатываться в виде файла. При этом необходимо по указанию преподавателя реализовать следующие способы создания этого файла:
как типизированного файла из записей;
как типизированного файла из символов;
как типизированного файла из строк;
как текстового файла.
При этом необходимо для каждого варианта создания файла, отличного от типизированного файла из записей, придумать способ сборки (в оперативной памяти) записи (в том смысле, как это было в массиве записей) с информацией, используя для сборки тот материал, что хранится в файле.
Лабораторная работа № 2 указатели и динамические переменные
Цель работы:
приобретение навыков в работе с указателями;
приобретение навыков в создании и обработке связанных динамических структур.
Варианты заданий
Задания по теме «Указатели и динамические переменные»
Задание 1. Пусть имеются следующие объявления:
type
rеf = ^integer;
var
p, q : ref;
Пусть переменные р и q имеют значения, показанные на рисунке (ниже). Ответить на следующие вопросы:
что является значением переменной р: ссылка на объект (переменную) целого типа или сам этот объект?
Что обозначает р^:
ссылку на объект целого типа,
сам этот объект
целое 5?
Каковы типы р и p^?
Что будет выдано на печать и какие будут графические представления в памяти в результате выполнения каждого из следующих действий (а), б), в) и г))?
а) P^:= q^;
б) if p = q then p:=nil else if p^ = q^ then q: = p;
в) if p = q then q^ := 4;
г) writeln(p^)
Задание 2. Пусть имеются следующие объявления:
type
D = record
a : boolean;
b, c : ^rеа1
end;
var
r : ^D;
Пусть ссылочная переменная r имеет значение, показанное на рисунке.
Нарисовать, что изменится на рисунке после выполнения каждого из следующих действий (а), б) и в)):
а) if r^.b <> nil
then r^.с:=r^.b;
б) r^.b^:=r^.с^ - 1.4;
в) r^.а:= r^.b = r^.c;
Задание 3. Пусть имеются следующие объявления:
var
p, q : ^integer;
r : ^char;
Есть ли среди следующих операторов неправильные? Если есть, то почему и как их исправить?
p:=q;
q:=r;
p:=nil;
r:=nil;
q:=p^;
p^:=nil;
r^:=p^;
q^=ord(r^);
if r<>nil then r^:=nil^,
if q>nil then q^:=p^;
if q = p then write(q);
if q<>r then read(r^)
Задание 4. Пусть имеется программа
program dynamic;
var
x : ^boolean;
y : boolean;
begin
{A} new(x);
{B} x^:=true; y:=not x^;
{C} dispose(x);
{D} writeln(y)
end.
Ответьте на следующие вопросы:
какие переменные существуют в каждой из точек А, В, С и D и каковы их значения в эти моменты?
Нарисовать графические представления в памяти, соответствующие объявлениям и каждому из действий (A,B,C,D). Пояснить эти графические представления.
почему объекты (переменные), создаваемые процедурой new и уничтожаемые процедурой dispose, называют динамическими? Почему им не дают имена?
можно ли переменной х присвоить ссылку на переменную у? Можно ли с помощью процедуры dispose уничтожить переменные х и у?
Задание 5. Пусть имеются следующие объявления:
type
A = ^char;
В = record
f1 : char;
f2 : A
end;
var
p : ^B;
q : A;
Нарисовать структуру значений (графическое представление) (как в варианте 2) ссылочных переменных р и q после выполнения каждого из следующих операторов:
а) new(q);
б) q^:='7';
в) new(p);
г) p^.fl := succ(q^);
д) p^.f2:=q
Задание 6.
Найти и исправить ошибки в следующей программе (при исправлениях надо стремиться к минимальным изменениям в исходной программе).
Нарисуйте графическое (как в варианте 2) представление в памяти.
program errors;
var
a, b : ^integer;
begin
if a=nil
then read(a);
a^:=5;
b:=nil;
b^:=2;
new(b); read(b^); writeln (b, b^);
new(a); b:=a; dispose(a); b^:=4;
end.
Задание 7.
Какие следующие описания являются недопустимыми? Если такие (недопустимые) есть, то почему и как их исправить? Нарисуйте графическое представление в памяти (как в варианте 2).
type
A = ^0..9;
В =record
p:real;
q:C
end;
C = ^B;
Задание 8.
Описать переменную р (и, если надо, вспомогательные переменные) и выписать операторы, присваивающие ей указанные значения (см. рисунки ниже). Считать, что стрелки указывают на весь узел.
Задание 9.
Допустимы ли в языке Паскаль конструкции
P^[2],
q^ + 2,
q^[2]^,
r^^ ?
Для каждой допустимой конструкции нарисуйте графическое представление в памяти (как в варианте 2) и приведите примеры использования.
Задание 10. Пусть имеются следующие объявления:
type
цепочка =^звено;
звено = record
элем : integer;
след : цепочка
end;
var
р : цепочка;
Необходимо записать последовательности операторов, которые:
а) преобразуют значение переменной р, показанное ниже на рис.а, к значениям, показанным ниже на рис.б);
б) преобразуют значение переменной р, показанное ниже на рис.а), к значениям, показанным ниже на рис.в);
в) преобразуют значение переменной р, показанное ниже на рис.а), к значениям, показанным ниже на рис. г).
Считать, что действия в пунктах а), б) и в) не зависят (не влияют) друг от друга.
Звенья, ставшие ненужными, надо уничтожать.
11. Пусть имеются следующие объявления:
type
chain = ^elem;
elem = record
data : integer;
link : chain
end;
var
p, q : chain;
Нарисовать структуру значения переменной р в памяти (как в варианте 2) после выполнения (независимого) следующих групп операторов:
new(p); p^ data := 4; p^.link := nil;
new(p); p^.data := 7; p^.link := p;
new(q); q^ data := 2; q^.link := nil;
new(p); p^.data := 1; p^.link := q;
new(p); p^.data := 5; new(p^.link); p^.link^ := p.