- •Министерство образования Российской Федерации Ярославский государственный педагогический университет имени к.Д. Ушинского Лабораторный практикум по языку программирования Pascal Ярославль 2004
- •Оглавление
- •Лабораторные работы Лабораторная работа №1Знакомство с клавиатурой. Организация работы в среде Турбопаскаль.
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Лабораторная работа №2Команды присваивания, ввода и вывода. Составление простейших программ на языке Турбопаскаль.
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Лабораторная работа №3Команды ветвления и выбора на языке Турбопаскаль
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Лабораторная работа №4Команды ветвления и повторения на языке Паскаль
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 3
- •Задание 4
- •Задание 5
- •Лабораторная работа №6Циклы
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Дополнительные задания
- •Лабораторная работа №7Одномерные массивы
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Дополнительные задачи.
- •Лабораторная работа №8Двумерные массивы
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Дополнительные задачи.
- •Лабораторная работа №9Работа со строковыми величинами
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Дополнительные задания
- •Лабораторная работа №10Обработка литерных величин на языке Турбопаскаль
- •Дополнительные задания
- •Задание 5
- •Лабораторная работа №12Работа с одномерными и двумерными массивами
- •Задание 1
- •Задание 2
- •Лабораторная работа №13Многочлены
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Лабораторная работа №14Линейная комбинация векторов
- •Задание 1
- •Задания повышенной трудности
- •Лабораторная работа №15Скалярное произведение векторов.
- •Лабораторная работа №16 Простейшие графические операторы
- •Задание 5
- •Задание 6
- •Дополнительные задания.
- •Лабораторная работа n 19 Работа с множествами Задание 1
- •Задание 2-3
- •Задание 4
- •Задание 5
- •Лабораторная работа № 20 Работа с записями
- •Дополнительные залания
- •Задание 3
- •Задание 5
- •Задание 6 (дополнительный балл)
- •Дополнительное задание (до 3 баллов)
- •Задание 5
- •Примерные вопросы к собеседованиям Величина. Команды присваивания, ветвления и выбора.
- •Массивы
- •Литерные переменные
- •Процедуры и функции
- •Графика
- •Датчик случайных величин
- •Множества
- •Динамическая память
- •Деревья
- •Тексты программ для выполнения лабораторных работ Файл primer1.Pas
- •Файл lab10.Pas
- •Файл lab11.Pas
- •Файл List1.Pas
- •Файл List2.Pas
- •Файл lab5.Pas
- •Файл lab6.Pas
- •Примерный список индивидуальных задач
Процедуры и функции
В каком месте программы и в каком порядке располагаются функции и процедуры? Сравните с алгоритмическим языком.
Что такое локальные и глобальные переменные и как они различаются на языке Паскаль? Сравните с алгоритмическим языком.
Как выглядит заголовок процедуры на языке Паскаль?
Как выглядит заголовок функции на языке Паскаль?
Что собой представляет содержательная часть процедуры на языке Паскаль?
Что собой представляет содержательная часть функции на языке Паскаль?
Как различить по заголовку процедуры на языке Паскаль аргументы, результаты и промежуточные величины?
Сравните правила записи процедур на Паскале и на школьном алгоритмическом языке.
Сравните правила записи функций на Паскале и на школьном алгоритмическом языке.
Сформулируйте правила обращения к функции и к процедуре.
Что такое формальные и фактические параметры?
Какая взаимосвязь существует между формальными и фактическими параметрами?
Какие виды параметров могут быть указаны при описании процедуры или функции в ее заголовке?
Для чего используются параметры-значения?
Для чего используются параметры-переменные?
Найдите синтаксические ошибки в следующих командах:
-
Procedure (var a:real, b,s:char; var d:real);
Procedure(b[1]+b[2],b[2]+b[3],b[3]+b[1],b[2]);
Procedure str(a;b;c:integer; var s:real);
...
str(k[1],k[2],k[3],k[4]);
4.procedure prim(k:real; var p,integer) ...
prim(a+b,a-b);
5.function r(a:real;var b;t:real);
...
k:=r(A[3],A,r);
6.function g(var a,b:integer):integer; ...
a:=g(a[i],g);
Перечислите, какие переменные в следующей процедуре являются локальными, глобальными, аргументами, результатами.
procedure multiply(d:stroka;var P:real);
var i:integer;
begin
P:=1;
For i:=1 to n do
if d[i]<>0
then P:=P*d[i];
end;
procedure quantity(n:integer;var k:integer);
var i:integer;
begin
k:=0;
for i:=1 to n do if d[i]<0 then k:=k+1;
end;
procedure poisk(n:integer;var k:char);
var i:integer;
begin
k:='н';
for i:=1 to n do if d[i]=13 then k:='д';
end;
procedure summa(n:integer;var s:real);
var i:integer;
begin
s:=0;
for i:=1 to n do s:=s+d[i];
end;
procedure maximum(d:stroka;var max:real);
var i:integer;
begin
max:=d[1];
for i:=2 to n do
if d[i]>max then max:=d[i];
end;
procedure maxmod(d:vector);
var i:integer;
begin
max:=abs(d[1]);
for i:=2 to n do
if abs(d[i])>max then max:=d[i];
end;
Написать заголовок следующих процедур и функций:
delete, insert, chr, ord, val, str, copy, length, concat, pos.
Перепишите процедуры из пункта 17 в виде функций.
Изучите программу PR1 и ответьте на следующие вопросы: 1) назовите переменные, локальные для процедуры pr3 и недоступные для процедуры pr2 и основной программы; 2) назовите переменные, являющиеся глобальными для процедуры pr3, недоступные в основной программе, но локальные для процедуры pr2; 3) назовите переменные, являющиеся глобальными как для процедуры pr2, так и для процедуры pr3. program PR1; var A, B, C: real; procedure pr2; var X, Y, Z: real; procedure pr3; var i, j, k: real; begin … end; begin … end; begin … end.
Изучите программу PR и ответьте на следующие вопросы: 1) какие переменные, являясь одна локальной, а другая глобальной, имеют одно и то же имя? 2) будет ли переменная L иметь одно и то же значение в основной программе и в процедуре pr3? 3) доступна ли переменная L, описанная в основной программе, в процедурах pr3 и pr4? 4) окажет ли влияние на переменную L, описанную в основной программе, изменение значения переменной L, описанной в процедуре pr3? program PR; var L, D, F: real; procedure pr2; var M, N: integer; begin … end; procedure pr3; var L, L4: integer; procedure pr4; var L5: integer; begin … end; begin … end; begin … end.
Какой смысл имеет величина k в следующей серии команд
k:=0;
for i:=1 to n do
begin
g:=summamod(a[i]);
if g=0 then k:=k+1
end;
k:=0;
for i:=1 to n do
begin
g:=summamod(a[i]);
maximummod(a[i],l,ma);
if g=ma then k:=k+1 end;
k:=0;
for i:=1 to n do begin
g:=summamod(a[i]);
d:=summa(a[i]);
if g=d then k:=k+1;
end;
k:=0;
for i:=1 to n do begin
maximum(a[i],g,ma);
if ma<0 then k:=k+1
end;
k:=0; k:=0;
for i:=1 to n do begin
maximum(a[i],g,ma);
maximummod(a[i],l,mam);
if mam<>ma then k:=k+1;
end;
k:=0;
for i:=1 to n do
begin g:=summamod(a[i]);
d:=summa(a[i]);
if g<>abs(d) then k:=k+1;
end;
Составьте процедуры для:
ввода одномерного числового массива,
вывода одномерного числового массива,
ввода двумерного числового массива,
вывода двумерного числового массива,
нахождения суммы элементов одномерного массива,
нахождения суммы элементов двумерного массива,
нахождения произведения элементов одномерного массива,
нахождения номера максимального элемента одномерного массива,
нахождения номеров максимального элемента двумерного массива,
нахождения номера последнего отрицательного элемента массива,
нахождения номера первого нулевого элемента одномерного массива,
подсчета в данном слове количества вхождений заданной буквы,
определения, есть ли в данном слове две одинаковые буквы подряд.