Выполнение программы.

Запуск Turbo Pascal.

Перейдите в директорию, где расположен файл turbo.exe (поиск файла - Alt+F7), выделите его указателем и нажмите Enter для запуска программы.

Создание первой программы.

После загрузки Turbo Pascal нажмите F10, чтобы войти в полосу меню, затем F (File) и N (New). В результате этого на экране появится новое окно. Теперь можно приступить к вводу текста программы, нажимая Enter в конц каждой строки:

program MyFirst;

begin

Write('Hello, World!');

Write('Press <Enter>...');

Readln; end.

Не забывайте про точку с запятой, а за последним end поставьте точку. Для удаления используйте Backspace, а для передвижения внутри окна редактора используйте клавиши со стрелками.

Сохранение программы.

После ввода текста программы необходимо сохранить ее на диске. Для этого выберите команду Save из меню File, нажав F10, затем F для появлени меню File и S для выбора команды Save. Более простой способ проделать тож самое - нажать F2. После этого появится диалоговое окно в котором необходимо указать название программы(не более 8 символов, исключая пробелы), например можете набрать "myfirst".

Компиляция программы.

Компиляция представляет собой процесс, который преобразует исходный текст программы в машинный код инструкций для процессора. После компиляции программа готова к выполнению. Для компиляции своей программы нажмите Alt-F9. Еще одной задачей компилятора является выявление СИНТАКСИЧЕСКИХ ошибок, которые появляются при написании программы. Наиболее вероятно ошибкой для начинающего программиста на языке Паскаль будет: ';' expected (ожидается ';'). Другой частой ошибкой является несоответствие пар begin..end.

Если во время компиляции не произошло никаких ошибок, то в окне центре экрана появится сообщение "Compilation successful: press any key (компиляция успешна: нажмите любую клавишу). Окно остается на экране до те пор, пока Вы не нажмете клавишу. Если во время компиляции в текст программы найдена ошибка, Turbo Pascal останавливается, устанавливает курсор на ошибку в тексте программы и показывает сообщение об ошибке.

Выполнение программы.

После исправления ошибок нажмите Ctrl-F9. На экране появится сообщение:

Hello, World!

Press <Enter>...

и программа будет ждать нажатия клавиши Enter.

Когда Ваша программа закончит выполнение, Вы вернетесь в то мест программы, с которого начинали. Теперь Вы если хотите можете модифицировать программу.

 

3. ЗАДАНИЕ

1) Написать и выполнить приведенную выше программу.

2) Изучить возможности справочной системы Turbo Pascal и возможности текстового редактора IDE.

3) Ответить на контрольные вопросы.

 

4. ОФОРМЛЕНИЕ ОТЧЕТА

1) Название лабораторной работы.

2) Написать основные команды текстового редактора IDE.

3) Написать ответы на контрольные вопросы.

 

5. КОНТРОЛЬНЫЕ ВОПРОСЫ

1) Как вы понимаете слово "интерфейс" (interface)?

2) Из каких основных частей состоит интерфейс интегрированной среды Turbo Pascal? Объясните назначение каждой из них.

3) Какую информацию можно найти в справочной системе Turbo Pascal?

4) Каким образом можно сохранить файл myfirst.pas под другим именем, используя возможности IDE?

5) С помощью какой команды IDE можно посмотреть результаты выполнения вашей программы?


Лабораторная работа N1-3.

ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ. ИНСТРУКЦИЯ ПРИСВАИВАНИЯ.

ВЫВОД И ВВОД ПЕРЕМЕННЫХ. ПРОГРАММЫ С ЛИНЕЙНОЙ СТРУКТУРОЙ.

1.ЦЕЛЬ РАБОТЫ:

Целью работы является изучение приемов создания простой программы и ее отладки.

 

2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

 

Объявление переменных:

- каждая переменная программы должна быть объявлена;

- объявления переменных помещают в раздел, который начинается словом VAR (var);

- инструкция объявления переменной:

Имя Переменной : Тип;

- в имени переменной можно использовать буквы латинского алфавита и цифры (первым символом должна быть буква);

- основными числовыми типами языка Turbo Pascal являются:

integer (целый), real (дробный);

- после инструкции объявления переменной рекомендуется указывать назначение переменной.

 

Инструкция присваивания:

- инструкция присваивания используется для изменения значений переменных, в том числе для вычислений по формулам;

- тип выражения, находящегося в правой части инструкции присваивания, должен соответствовать типу переменной, имя которой стоит слева от символа инструкции присваивания (при нарушении соответствия типа переменной и выражения компилятор выводит сообщение об ошибке Type miss match – несоответствие типов).

 

Вывод переменных:

- инструкции write и writeln предназначены для вывода на экран монитора сообщений и значений переменных;

- одна инструкция write (writeln) может вывести на экран значения нескольких переменных и (или) несколько сообщений;

- инструкция writeln без параметров переводит курсор в начало следующей строки экрана;

- в текст программы можно включить директиву uses crt; для использования процедур:

ClrScr; Очищает экран и помещает курсор в верхний левый угол;

GotoXY(*,*); Позиционирует курсор. Х - горизонтальная позиция и Y - вертикальная позиция;

Repeat Until KeyPressed; Активизирует экран пользователя до нажатия любой клавиши.

TextBackground(*); Устанавливает цвет фона.

TextColor(*); Устанавливает цвет символов.

 

Следующие константы используются в процедурах TextColor и TextBackground (именованной или целой константой):

----------------------------------

Константа Значение

----------------------------------

Black 0

Blue 1

Green 2

Cyan 3

Red 4

Magenta 5

Brown 6

LightGray 7

DarkGray 8

LightBlue 9

LightGreen 10

LightCyan 11

LightRed 12

LightMagenta 13

Yellow 14

White 15

Blink 128

----------------------------------

 

Ввод переменных:

- для ввода с клавиатуры во время работы программы исходных данных (значений переменных) предназначена инструкция read (readln);

- инструкция read (readln) позволяет считывать с клавиатуры значения нескольких переменных;

- тип данных, вводимых во время работы программы должен соответствовать типу переменной, указанной в инструкции ввода (в случае несоответствия программа завершает работу и на экран выводится сообщение об ошибке: Error 106: Invalid numeric format).

 

Программы с линейной структурой:

- предназначены для реализации обычных вычислений по формулам;

- инструкции выполняются последовательно, одна за другой;

- алгоритм:

 

3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. Ознакомиться с теоретическими сведениями данной работы.

2. Выполнить свой вариант задания.

3. Ответить на контрольные вопросы.

 

4. ОФОРМЛЕНИЕ ОТЧЕТА

Отчет о работе должен содержать номер, название и цель работы, текст программы и ответы на контрольные вопросы.

 

5. КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Основные числовые типы языка Turbo Pascal?

2. Раздел объявления переменных языка Turbo Pascal?

3. Инструкции, предназначенные для вывода на экран монитора сообщений и значений переменных?

4. Использования процедуры ClrScr.

5. Инструкции, предназначенные для ввода с клавиатуры значений переменных?

 

6. ВАРИАНТЫ ЗАДАНИЙ

 

№ по списку
№ задания

 

1. Вычисление стоимости покупки нескольких тетрадей и такого же количества обложек:

- цена тетради,

- цена обложки,

- количество комплектов,

- стоимость покупки.

 

2. Вычисление площади квадрата:

- сторона,

- площадь квадрата.

 

3. Вычисление сопротивления электрической цепи, состоящей из двух последовательно соединенных сопротивлений:

- величина первого сопротивления,

- величина второго сопротивления,

- сопротивление цепи.

 

4. Вычисление объема куба:

- сторона,

- объем куба.

 

5. Вычисление расстояния между населенными пунктами, изображенными на карте:

- масштаб карты,

- расстояние по карте,

- расстояния между населенными пунктами.

 

6. Вычисление площади прямоугольника:

- длина,

- ширина,

- площадь прямоугольника.

 

7. Вычисление стоимости покупки яблок:

- цена 1 кг,

- вес,

- стоимость покупки.

 

8. Вычисление периметра квадрата:

- сторона,

- периметр квадрата.

 

9. Вычисление сопротивления электрической цепи, состоящей из двух параллельно соединенных сопротивлений:

- величина первого сопротивления,

- величина второго сопротивления,

- сопротивление цепи.

 

10. Вычисление длины окружности:

- радиус,

- длина окружности.

 

11. Вычисление силы тока в электрической цепи:

- напряжение,

- сопротивление,

- сила тока.

 

12. Вычисление объема параллелепипеда:

- длина,

- ширина,

- высота,

- объем параллелепипеда.

 

13. Вычисление площади круга:

- радиус,

- площадь круга.

 

14. Вычисление напряжения в электрической цепи:

- сила тока,

- сопротивление,

- напряжение.

 

15. Вычисление периметра прямоугольника:

- длина,

- ширина,

- периметр прямоугольника.


Лабораторная работа N1-4.

УСЛОВНЫЕ ОПЕРАТОРЫ. ОПЕРАТОР ВАРИАНТА.

ОПЕРАТОР БЕЗУСЛОВНОГО ПЕРЕХОДА.

ПРОГРАММИРОВАНИЕ ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ С ВЕТВЛЕНИЕМ.

1.ЦЕЛЬ РАБОТЫ:

Целью работы является изучение приемов программирования вычислительных задач с ветвлением.

 

2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

 

IF - THEN - ELSE

 

Разветвления в программах возникают при необходимости выбора одного из нескольких путей решения задачи, в зависимости от выполнения одного или нескольких условий. Для организации разветвлений в Pascal-программах используют условный оператор: IF - THEN - ELSE или оператор выбора: CASE.

Условный оператор имеет два вида записи:

1) IF b THEN a;

2) IF b THEN a1 ELSE a2;

где b - логическое выражение; a,a1,a2 - операторы простые или составные.

Для первого вида записи если логическое выражение "b" истинно, выполняется оператор "a" , в противном случае следующий за условным оператором оператор.

Для второго вида записи если логическое выражение "b" истинно, выполняется оператор "a1" , в противном случае - оператор "a2".

Примером простейших логических выражений является сравнение переменных или констант: a > b , c <= d , 5 > 3.2.

Переменные должны быть определены до выполнения операции сравнения.

Использование составных операторов расширяет действие условного оператора. Составной оператор представляет собой последовательность операторов, заключенных в операторные скобки (ключевые слова begin и end ) и рассматриваются транслятором как один оператор.

 

begin

оператор A;

оператор B;

........

оператор S

end;

Условный оператор IF - THEN - ELSE применяют в тех случаях, когда вычисления могут пойти различным путем, в зависимости от выполнения определенных условий.

 

Рассмотрим пример использования условного оператора.

Задание:

Составить программу, вычисляющую сумму или разность двух чисел, в зависимости от соотношения этих чисел. Если первое число больше второго, то нужно вычислить их сумму, в противном случае - их разность.

 

Паскаль программа имеет вид:

 

(файл prim41.pas)

 

program prim;

var x,y,z:real ;

Begin

writeln('введите число x '); readln(x);

writeln('введите число y '); readln(y);

IF x>y THEN z:=x+y ELSE z:=x-y;

writeln('число z = ',z:8:2 );

readln

End.

 

Алгоритм:

 

В этой задаче можно рассматривать переменную z как функцию, меняющую свое значение в зависимости от значения аргументов x и y и их соотношения.

 

- инструкция IF - THEN – ELSE используется для выбора одного из двух направлений дальнейшего хода программы (последовательности инструкций, которые должны быть выполнены);

- выбор последовательности инструкций осуществляется во время выполнения программы в зависимости от выполнения условия;

- условие – это выражение логического типа, которое может принимать одно из двух значений: TRUE (истина – условие выполняется) FALSE (ложь – условие не выполняется);

- при помощи логических операций AND (логическое "И") и OR (логическое "ИЛИ") из простых условий можно строить сложные.

 

CASE

 

Оператор выбора (варианта ) используется в тех случаях, когда в зависимости от какого-либо выражения необходимо выполнить один из нескольких последовательных операторов. Оператор выбора относится к сложным и имеет следующую форму записи:

CASE _ выражение _ OF

константа n : оператор n

END;

Здесь CASE , OF , END - служебные слова.

Выражение может быть любого стандартного типа кроме REAL. В соответствии с этим и константа не может быть действительного типа. Тип константы должен совпадать с типом выражения.

Оператор выбора действует следующим образом: если значение выражения равно одной из констант, то выполняется соответствующий ей оператор, и затем управление передается за пределы оператора выбора.

 

Пример программы для определения дня недели по введенному числу месяца (для октября 2001 года) имеет вид:

 

(файл prim42.pas)

 

program day_;

var data, ost:Integer;

day:string[15];

Begin

writeln('Введите число.');

readln(data);

ost:=data mod 7;

Case ost of

1:day:='понеделник';

2:day:='вторник';

3:day:='cреда';

4:day:='четверг';

5:day:='пятница';

6:day:='суббота';

7:day:='воскресенье';

end;

writeln(day);

End.

 

В рассмотренном примере используется операция MOD - получение целого остатка при делении целого данного на целое.

 

В операторе выбора в качестве константы допускается использование списка констант, например:

 

Раздел описаний :

var S:char;

P:integer;

 

Фрагмент тела программы:

Case S of

'+','-','*','/': P:=1;

'A','B' : P:=2;

'.' : P:=3

 

- инструкция Case используется для выбора одного из нескольких направлений дальнейшего хода программы (последовательности инструкций, которые должны быть выполнены);

- выбор последовательности инструкций осуществляется во время выполнения программы в зависимости от равенства выражения константе, указанной перед группой инструкций;

 

GOTO

 

Оператор безусловного перехода (GOTO) представляет собой простой оператор, используя который можно изменять порядок выполнения операторов в программе.

Общий вид оператора безусловного перехода:

GOTO <метка>;

 

GOTO - зарезервированное слово языка, а <метка> - идентификатор или целое число от 0 до 9999. Все используемые в программе метки перечисляются в разделе LABEL.

 

Пример: (файл prim43.pas)

program perehod;

uses crt;

label 1;

var data, ost:Integer;

day:string[15];

Begin

clrscr;

1:writeln('Введите число.');

readln(data);

 

if (data<0) or (data>32) then

begin

TextColor(128);

writeln('Ошибка при вводе

числа (1..31).');

TextColor(White);

writeln;

goto 1;

end;

 

 

ost:=data mod 7;

Case ost of

1:day:='понеделник';

2:day:='вторник';

3:day:='cреда';

4:day:='четверг';

5:day:='пятница';

6:day:='суббота';

7:day:='воскресенье';

end;

writeln;

TextColor(Red);write(data);

TextColor(White);

write(' октября 2001 года соответствует дню недели ');

TextColor(Red);writeln(day);

repeat until keypressed;

End.

 

Однако применение оператора безусловного перехода является нежелательным, т.к. присутствие этого оператора в программе нарушает ее структурную целостность и наглядность.

Такую программу трудно читать, отлаживать и модифицировать.

 

EXIT и HALT

 

Модуль System, который содержит все стандартные и встроенные процедуры и функции Turbo Pascal, используется автоматически любым модулем или программой и никогда не требуется указывать его в директиве uses. Модуль System реализует низко-уровневые подпрограммы для операций ввода/вывода, обработки строк, управления оверлеями и динамическое распределение памяти.

 

Процедуры управления программой:

Exit Позволяет немедленно выйти из текущего блока.

Halt Останавливает выполнение программы и возвращает в операционную систему.

 

Пример: (файл prim44.pas)

 

program preriv;

uses crt;

var data, ost:Integer;

day:string[15];

Begin

clrscr;

writeln('Введите число.');

readln(data);

 

if (data<0) or (data>32) then

begin

TextColor(128);

writeln('Ошибка при вводе числа (1..31).');

writeln('Для выхода нажать ввод');

readln;

Halt;

end;

 

 

ost:=data mod 7;

Case ost of

1:day:='понеделник';

2:day:='вторник';

3:day:='cреда';

4:day:='четверг';

5:day:='пятница';

6:day:='суббота';

7:day:='воскресенье';

end;

writeln;

TextColor(Red);write(data);

TextColor(White);

write(' октября 2001 года соответствует дню недели ');

TextColor(Red);writeln(day);

repeat until keypressed;

End.

 

 

3.ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. Ознакомиться с теоретическими сведениями данной работы.

2. Ответить на контрольные вопросы.

3. Выполнить свой вариант задания.

 

 

4.ОФОРМЛЕНИЕ ОТЧЕТА

 

Отчет о работе должен содержать номер, название и цель работы, ответы на контрольные вопросы, текст программы и результат выполнения программы, представленный в виде таблицы (5 значений аргумента, 5 значений функции).

 

5. КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Какие операторы применяют для организации ветвлений в языке Turbo Pascal?

2. В каких случаях применяют в программе условный оператор?

3. Тип выражения в операторе CASE в языке Turbo Pascal?

4. Оператор безусловного перехода в языке Turbo Pascal?

5. Немедленная остановка выполнения программы?

 

6. ВАРИАНТЫ ЗАДАНИЙ

№ по списку
№ задания

 

№ задания Функция Исходные данные
x2, при x<1 y={ ax, при x>1 a=0,5*№ по списку
a+5, при a<2 b={ c, при a=2 a-5, при a>2 c=5+№ по списку
d3, при d<0 f={ (d-k)2, при d>0 k=№ по списку
p+t, при p<0 g={ t, при p=0 p-t, при p>0 t=4/№ по списку
10n, при n<10 m={ n/10+h, при n>10 h=№ по списку/2

 


Лабораторная работа N1-5.

ОРГАНИЗАЦИЯ ЦИКЛИЧЕСКИХ ВЫЧИСЛЕНИЙ.

ЦИКЛЫ С ПРЕДУСЛОВИЕМ И ПОСТУСЛОВИЕМ.

1.ЦЕЛЬ РАБОТЫ:

Целью работы является изучение приемов программирования вычислений в цикле.

 

2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

 

ОПЕРАТОР ОРГАНИЗАЦИИ ЦИКЛОВ FOR

Операторы повтора используются при организации циклов. Цикл – это последовательность операторов, которая может выполняться более одного раза.

Форматы оператора FOR:

1. for <параметр цикла> := <S1> to <S2> do <оператор>;

2. for <параметр цикла> := <S1> downto <S2> do <оператор>;

С помощью FOR..TO <оператор> выполняется (S2-S1+1) раз, с FOR..DOWNTO – (S1-S2) раз.

Например, оператор FOR I:=1 to 20 do write('*'); 20 раз выведет на экран в одной строке символ "*".

Параметр цикла, его начальное и конечное значения должны принадлежать к одному и тому же типу данных. Вещественного типы запрещены. Если используются типы integer, byte и интервальный, то значение параметра цикла последовательно увеличивается (при for .. to) или уменьшается (при for .. downto) на единицу при каждом повторе.

Оператор Результат
for I := 10 to 14 do write (I:3); 10 11 12 13 14
for I := 14 downto 10 do write(I:3); 14 13 12 11 10
for Ch:='a' to 'e' do write (Ch:2); a b c d e
for Ch:='e' downto 'a' do write (Ch:2); e d c b a

Программист не должен сам изменять параметр цикла, это вызовет ошибку.

 

ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ ОПЕРАТОРА FOR

 

FOR I:=1 TO 10 DO Read(X); ввод с клавиатуры в цикле 10 значений

 

FOR I:=1 TO 80 DO Write('*'); строка из 80 символов '*'

 

FOR I:=1 TO 24 DO Writeln('*'); столбик из символов '*'

 

ОПЕРАТОР ПОВТОРА REPEAT

Оператор повтора REPEAT состоит из заголовка (REPEAT), тела и условия окончания (UNTIL).

Формат:

REPEAT

<оператор;>

<оператор;>

. . .

<оператор>

UNTIL <условие>;

 

Условие - выражение булевского типа. При написании условия допустимы булевские операции и операции отношения. Операторы, заключенные между словами repeat и until, являются телом цикла.

Вначале выполняется тело цикла, затем проверяется условие выхода из цикла.

Если результат булевского выражения False, тело цикла активизируется еще раз, если результат True - происходит выход из цикла.

В некоторых случаях из цикла выходят с помощью оператора GOTO, не дожидаясь подходящего условия в UNTIL. Для этого внутри REPEAT производят операцию сравнения и при ее истинности уходят на метку вне оператора REPEAT.

 

PROGRAM Demo_REPEAT; {заголовок программы}

Var I, Sum : integer; {объявление переменных}

BEGIN {начало раздела операторов}

I := 0; Sum := 0; {обнуление I, Sum}

REPEAT {начало оператора REPEAT}

Writeln('I= ',I); {вывод текущего значения I}

Sum := Sum + I; {наращивание суммы}

I := I + 2; {увеличение I (0,2,4,6,8,10)}

UNTIL (I > 10); { конец оператора REPEAT}

writeln('Сумма четных чисел= ',Sum);{вывод результата}

END. {конец программы}

 

ОПЕРАТОР ПОВТОРА WHILE

Оператор WHILE аналогичен оператору REPEAT, но проверка условия выполнения тела цикла производится в самом начале оператора.

Формат:

WHILE <условие> DO <тело цикла>;

 

Условие - булевское выражение, а тело цикла - простой или составной оператор. Перед каждым выполнением тела цикла вычисляется значение выражения условия. Если результат равен True, тело цикла выполняется и снова вычисляется выражение условия. Если результат равен False, происходит выход из цикла и переход к первому после WHILE оператору. Если перед первым выполнением цикла значение выражения было False, тело цикла вообще не выполняется и происходит переход на следующий оператор.

П р и м е р.

~ WHILE True DO write ('Бесконечный цикл');

WHILE 1 = 1 DO wtite ('Бесконечный цикл'); {очевидно, что

результат выражения 1=1 всегда равен True}

 

& Оператор WHILE, как и другие операторы организации циклов, может быть

вложенным.$Досрочный выход из WHILE&можно осуществить по$GOTO.&

 

 

PROGRAM Demo_WHILE; - заголовок программы

Var I, Sum : integer; - объявление переменных

BEGIN - начало раздела операторов

I := 0; Sum := 0; - обнуление I, Sum

WHILE I < 12 DO BEGIN - начало оператора WHILE

Writeln('I= ',I); - текущее значение I

Sum := Sum + I; - наращивание суммы

I := I + 2 - увеличение I (0,2,4,6,8,10)

END; - конец оператора WHILE

writeln('Сумма четных чисел= ',Sum) - вывод результата

END. - конец программы

 

3.ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. Ознакомиться с теоретическими сведениями данной работы.

2. Ответить на контрольные вопросы.

3. Выполнить свой вариант задания.

 

4.ОФОРМЛЕНИЕ ОТЧЕТА

Отчет о работе должен содержать номер, название и цель работы, ответы на контрольные вопросы, текст программы и результат выполнения программы, представленный в виде таблицы.

 

5. КОНТРОЛЬНЫЕ ВОПРОСЫ

Написать программу вычисления суммы от 1 до 100, используя три цикла (FOR, REPEAT, WHLE).

 

6. ВАРИАНТЫ ЗАДАНИЙ

№ по списку
№ задания

 

Задание:

1. Написать программу, которая вычисляет факториал числа, введенного с клавиатуры.

 

2. Написать программу, которая вычисляет сумму первых n целых положительных четных чисел. Количество суммируемых чисел вводится с клавиатуры во время работы программы.

 

3. Написать программу, которая выводит таблицу значений функции . Диапазон изменения аргумента: от –4 до 4, шаг приращения аргумента: 0,5 .


Лабораторная работа N1-6.

ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ. РАБОТА С МАТРИЦАМИ.

1.ЦЕЛЬ РАБОТЫ:

Целью работы является изучение приемов обработки одномерных и многомерных массивов.

 

2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

 

ОПИСАНИЕ МАССИВОВ

Массив - это набор элементов одного и того же типа. Например, набор значений температуры воздуха за неделю можно представить как массив из 7 значений целого типа:

1. 2. 3. 4. 5. 6. 7. -номер элемента в массиве
-значения температуры

значения элементов массива

 

Номера значений элементов массива называются индексом массива. В нашем примере значение индекса может изменяться от 1 до 7.

Для описания массивов используется словосочетание ARRAY OF. Формат: VAR <имя> : ARRAY [диапазон индекса] OF <тип элементов>;

Пример: VAR Temp : ARRAY [1..7] OF byte;

Доступ к отдельным элементам массива осуществляется по индексу. Например, доступ к третьему элементу -Temp[3],к пятому -Temp[5], и т.д.

 

ОПЕРАЦИИ НАД МАССИВАМИ

Инициализация - это присваивание всем элементам массива одного и того же значения. Выполняется в цикле, например:

FOR I:= 1 TO 7 DO Temp[I]:=0; { все элементы массива Temp равны 0 }

 

Ввод элементов массива также осуществляется в цикле:

FOR I:= 1 TO 7 DO BEGIN

Writeln('Введите ',I,'-ый элемент массива');

Readln(Temp[I]);

END;

 

Вывод значений элементов массива выполняется аналогично:

FOR I:= 1 TO 7 DO Writeln(Temp[I]); { вывод всего массива }

Writeln(Temp[6]); { вывод 6-го элемента }

 

Под обработкой массива понимаются любые манипуляции с элементами массива. Например, требуется получить среднее значение температуры воздуха за 7 дней:

Sum:=0; FOR I:= 1 TO 7 DO Sum:=Sum+Temp[I];

Writeln('Средняя температура за 7 дней =',Sum/7);

 

ДВУХМЕРНЫЕ МАССИВЫ

 

До сих пор мы говорили об одномерных массивах, т.е. о тех, которые имеют один индекс. Если индексов 2, то массив называется двухмерным. Покажем такой массив на следующем рисунке:

    второй индекс
   
первый индекс  
 
 
 

 

Описание показанного на рисунке двухмерного массива:

VAR Temp2 : ARRAY[1..4,1..3] OF byte;

 

ОПЕРАЦИИ С ЭЛЕМЕНТАМИ ДВУМЕРНОГО МАССИВА

Инициализация выполняется в цикле, например:

FOR I:= 1 TO 4 DO

FOR J:= 1 TO 3

Temp2[I,J]:=0;

 

Ввод элементов 2-мерного массива также осуществляется в цикле:

FOR I:= 1 TO 4 DO

FOR J:= 1 TO 3 DO

Readln(Temp2[I,J]);

 

Вывод значений 2-мерного массива выполняется аналогично:

FOR I:= 1 TO 4 DO

FOR J:= 1 TO 3 DO

Writeln(Temp2[I,J]); { вывод всего массива Temp2 }

Writeln(Temp2[2,3]); { вывод элемента 2-й строки 3-го столбца}

 

 

3.ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. Ознакомиться с теоретическими сведениями данной работы.

2. Ответить на контрольные вопросы.

3. Выполнить свой вариант задания.

 

4.ОФОРМЛЕНИЕ ОТЧЕТА

 

Отчет о работе должен содержать номер, название и цель работы, ответы на контрольные вопросы, текст программы и результат выполнения программы, представленный в виде таблицы.

 

5. КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Дано описание массива:

type a=array[1..5]of integer;

var vector:a;

matrica:array[1..5]of a;

Для массивов vector и matrica указать:

- сколько элементов в массиве;

- как указать первый и последний элемент массива;

2. Что представляют собой совместимые массивы и какая операция применима к ним?

3.Могут ли числа :1, 2.5, 4, 3, 7.2 быть элементами одного массива? Ответ объяснить.

 

 

6. ВАРИАНТЫ ЗАДАНИЙ

№ по списку
№ задания

 

Задание:

 

С клавиатуры задаем размер квадратной матрицы. Вводим с клавиатуры элементы массива. Очищаем экран и выводим матрицу в удобочитаемом виде. Далее выполняем задание по варианту:

 

1. Вычисляем среднее арифметическое ненулевых элементов массива по столбцам.

2. Вычисляем среднее геометрическое ненулевых элементов массива по строкам.

3. Проверяем, есть ли в матрице элементы с одинаковым значением.

4. Вычисляем сумму элементов матрицы, распложенных на главной диагонали и сумму элементов матрицы, распложенных на побочной диагонали.

5. Подсчитываем, сколько раз введенное с клавиатуры число встречается в массиве.


Лабораторная работа N1-7.

ПРОГРАММИРОВАНИЕ ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ С ИСПОЛЬЗОВАНИЕМ ПОДПРОГРАММ ПОЛЬЗОВАТЕЛЯ.

1.ЦЕЛЬ РАБОТЫ:

Целью работы является изучение приемов программирования вычислительных задач с использованием таких подпрограмм пользователя как функции.

 

2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

 

Любая задача решается гораздо легче, если разбить ее на части - процедуры и функции. Например, задача по созданию школьной базы данных разбивается на три процедуры: создание БД, использование данных БД, корректировка БД. В пользовательские процедуры и функции можно передавать значения и после выполнения получать результат. Сначала рассмотрим процедуры.

 

ПРОЦЕДУРЫ ПОЛЬЗОВАТЕЛЯ

 

Процедура начинается словом PROCEDURE, по структуре аналогична программе:

PROCEDURE <имя> (необязательные формальные параметры);

LABEL ...; CONST ...; TYPE ...; VAR ...;

BEGIN

<операторы>

END;

 

Для выполнения процедуры достаточно указать ее имя и, если они нужны, передаваемые в процедуру данные (фактические параметры), совпадающие по типу и порядку следования с требуемыми (формальными параметрами).

 

ФУНКЦИИ ПОЛЬЗОВАТЕЛЯ

Функция начинается словом FUNCTION, за которым следует имя, необязательный список формальных параметров и тип возвращаемого результата:

FUNCTION <имя> (Необязательные формальные параметры) : <тип результата>;

LABEL ...; CONST ...; TYPE ...; VAR ...;

BEGIN

<операторы>

END;

 

В разделе операторов функции должен находиться по крайней мере один оператор, присваивающий имени функции значение. В точку вызова возвращается результат последнего присваивания.

 

ПАРАМЕТРЫ

Если список параметров начинается словом VAR, то они передаются из процедуры после ее выполнения и результаты присваиваются соответствующим фактическим параметрам. Если при перечислении формальных параметров VAR не указано, то эти значения передаются в процедуру.

Изучите пример:

Дополнительно:

 

1. Три золотых правила.

2. Глобальные и локальные переменные.

3. Формальные и фактические параметры.

4. Параметры-значения и параметры-переменные.

 

1. Три золотых правила:

1. Если надо что-то вычислить и получить в точке вызова результат - используем функцию;

2. Если надо что-то сделать: считать данные с диска, очистить часть экрана, закрасить экран в другой цвет и т.п. - используем процедуру;

3. При вызове процедуры или функции тип фактических параметров должен совпадать с типом формальных параметров (т.е. они должны быть согласованы).

2. Глобальные переменные (константы, типы) - переменные (константы, типы), объявленные в программе вне процедуры или функции.

 

Локальные - существуют только внутри процедуры или функции, объявленные либо в списке параметров, либо в разделе VAR внутри процедуры или функции (для констант - раздел CONST, для типов - TYPE).

При совпадении имен локальной и глобальной переменной используется в подпрограмме локальное имя (если в подпрограмме используется цикл FOR, то параметр цикла - локальная переменная).

3. Формальные параметры - описываются в заголовке объявления подпрограммы.

Фактические параметры - которые подставляются на их место при вызове подпрограммы.

4. Параметры-значения - локальные переменные подпрограммы, стартовые значения которых задаются при вызове подпрограммы из внешних блоков, могут изменять свои значения, но изменения только локальные.

Параметры-переменные - локальные переменные подпрограммы, стартовые значения которых задаются при вызове подпрограммы из внешних блоков, могут изменять свои значения и изменения носят глобальный характер (т.е. передаются в вызывающие операторы).

 

Пример.

Возведение числа в квадрат, если квадрат числа больше 100, то программа возвращает значение 100.

(pr1- использует функцию, pr2-использует для решения той же задачи прцедуру)

 

program pr1;

var flag:boolean; {flag-глобальная переменная}

function q(x:real):real; {x-локальная переменная,

парметр-значение,

формальный параметр}

const max=100; {локальная константа}

var x2:real; {x2-локальная переменная}

begin

x2:=sqr(x);

flag:=(x2>max);

if flag then x2:=max;

q:=x2;

end;

Begin

writeln(q(5),'Флаг',flag); {5-фактический параметр}

End.

 

program pr2;

var flag:boolean; {flag-глобальная переменная}

procedure q(x:real;var sq:real); {x-локальная переменная,

парметр-значение,

формальный параметр}

const max=100; {локальная константа}

var x2:real; {x2-локальная переменная}

begin

x2:=sqr(x);

flag:=(x2>max);

sq:=x2;

end;

var sqGlobal:real;

Begin

q(5,sqGlobal); {5-фактический параметр}

writeln(sqGlobal,'Флаг',flag);

End.

 

3.ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. Ознакомиться с теоретическими сведениями данной работы.

2. Ответить на контрольные вопросы.

3. Выполнить свой вариант задания.

 

4.ОФОРМЛЕНИЕ ОТЧЕТА

 

Отчет о работе должен содержать номер, название и цель работы, ответы на контрольные вопросы, текст программы и результат выполнения программы, представленный в виде таблицы.

 

5. КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Что представляют собой формальные и фактические параметры программы и как организовать их согласование?

2. В какую точку программы осуществляется выход из функции?

3. В чем различие между локальными и глобальными переменными и могут ли совпадать их имена?

4. Назвать два вида локальных переменных и описать их различие.

 

6. ВАРИАНТЫ ЗАДАНИЙ

№ по списку
№ задания

 

Задание:

 

1. Написать программу, содержащую функцию, которая вычисляет объем цилиндра. Параметрами функции должны быть радиус и высота цилиндра.

2. Написать программу, содержащую функцию, которая возвращает процент от числа, полученного в качестве аргумента.

3. Написать программу, содержащую функцию, которая вычисляет факториал числа, введенного с клавиатуры.


Лабораторная работа N2-1.

РАБОТА С ФАЙЛАМИ.

1.ЦЕЛЬ РАБОТЫ:

Целью работы является изучение приемов работы с переменными файлового типа.

 

2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Под файлом понимается либо именованная область внешней памяти ПК (жесткого диска, гибкой дискеты, электронного "виртуального" диска ), либо логическое устройство - потенциальный источник или приемник информации.

Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре ASSIGN:

 

ASSIGN (<ф.п.>, <имя файла или л.у.>);

 

Здесь

<ф.п.> - файловая переменная (правильный идентификатор, объявленный в программе как переменная файлового типа);

<имя файла или л.у.> - текстовое выражение, содержащее имя файла или логическое устройство.

Если имя файла задается в виде пустой строки, например, ASSIGN(f,") , то в зависимости от направления обмена данными файловая переменная связывается со стандартным файлом INPUT или OUTPUT.

 

Для чтения файл инициируется с помощью стандартной процедуры RESET:

 

RESET (<ф.п.>) ;

 

Здесь

<ф.п.> - файловая переменная, связанная ранее процедурой ASSIGN с уже существующим файлом или логическим устройством - приемником информации.

В Турбо Паскале разрешается обращатся к типизированным файлам, открытым процедурой RESET (т.е. для чтения информации), с помощью процедуры WRITE (т.е. для записи информации). Такая возможность позволяет легко обновлять ранее созданные типизированные файлы и при необходимости расширять их. Для текстовых файлов, открытых процедурой RESET, нельзя использовать процедуру WRITE или WRITELN.

Стандартная процедура

 

REWRITE (<ф.п.>)

 

инициирует запись информации в файл или в логическое устройство, связанное ранее с файловой переменной. Процедурой REWRITE нельзя инициировать запись информации в ранее существовавший дисковый файл: при выполнении этой процедуры старый файл уничтожается и никаких сообщений об этом в программу не передается. Новый файл подготавливается к приему информации и его указатель принимает значение 0.

Стандартная процедура

APPEND (<ф.п.>)

инициирует запись в ранее существовавший текстовый файл для его расширения, при этом указатель файла устанавливается в его конец. Процедура APPEND применима только к текстовым файлам, т.е. их файловая переменная должна иметь тип TEXT. Процедурой APPEND нельзя инициировать запись в типизированный или нетипизированный файл. Если текстовый файл ранее уже был открыт с помощью RESET или REWRITE, использование процедуры APPEND приведет к закрытию этого файла и открытию его вновь, но уже для добавления записей.

Процедура CLOSE закрывает файл, однако связь файловой переменной с именем файла, установленная ранее процедурой ASSIGN, сохраняется.

Формат сообщения:

CLOSE(<ф.п.>)

При создании нового или расширении старого файла процедура обеспечивает сохранение в файле всех новых записей и регистрацию файла в каталоге.

Функции процедуры CLOSE выполняются автоматически по отношению ко всем открытым файлам при нормальном завершении программы. Поскольку связь файла с файловой переменной сохраняется, файл можно повторно открыть без дополнительного использования процедуры ASSIGN.

 

3.ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. Ознакомиться с теоретическими сведениями данной работы.

2. Ответить на контрольные вопросы.

3. Выполнить свой вариант задания.

 

4.ОФОРМЛЕНИЕ ОТЧЕТА

Отчет о работе должен содержать номер, название и цель работы, ответы на контрольные вопросы, текст программы и результат выполнения программы.

 

5.КОНТРОЛЬНЫЕ ВОПРОСЫ

1. В какое место файла можно добавлять новые элементы:

- в начало,

- в середину,

- в конец,

- куда угодно,

- никуда?

2. Если не переписывать файл заново, то значения каких его элементов можно менять:

- только первого;

- только последнего;

- каких угодно;

- никаких.

3. Если не переписывать файл заново, то какие из его элементов можно удалять:

- только первый;

- только последний;

- какие угодно;

- никакие.

4. Определить содержимое файла f после выполнения следующих операторов:

rewrite(f);

for i:=1 to 3 do write(f,i*2);

close(f);

5. Определить содержимое файла f после выполнения следующих операторов:

rewrite(f);

for i:=3 downto 1 do write(f,i);

close(f);

i:=5;

append(f);

write(f,i);

close(f);

6. Определить содержимое файла f после выполнения следующих операторов:

i:=5;

rewrite(f);

write(f,i);

close(f);

rewrite(f);

if eof(f) then write(f,i) else write(f,i-5);

close(f);

 

6.ЗАДАНИЕ

№ задания
№ по журналу

Состоит из двух частей:1-общая для всех, 2-по варианту.

1). Организовать процедуру, позволяющую записать в текстовый файл введенную с клавиатуры строку.

2-1).Удвоить в данном файле каждую цифру.

2-2).Заменить в данном файле каждую цифру на следующую по величине.

2-3).Оставить в данном файле только первые вхождения каждой литеры.

2-4).Заменить в данном файле ккаждую литеру 'a' на две литеры 'b'.

2-5).Дописать в начало файла фразу 'Turbo Pascal'.