Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2606 (Turbo Pascal)

.pdf
Скачиваний:
16
Добавлен:
09.04.2015
Размер:
332.07 Кб
Скачать

2606

Министерство транспорта Российской Федерации

Федеральное агентство железнодорожного транспорта

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

САМАРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ

Кафедра информатики

ИНФОРМАТИКА

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

к выполнению лабораторных работ в пакете TURBO PASCAL для студентов технических специальностей

очной формы обучения

Составители: С.А. Юшков Т.И. Ермоленко В.А. Смышляев

Самара

2010

1

УДК 681. 3. 01

Информатика : методические указания к выполнению лабораторных работ в пакете TURBO PASCAL для студентов технических специальностей очной формы обучения. – Самара : СамГУПС, 2010. – 20 с.

Утверждены на заседании кафедры информатики 15.05.2010 г., протокол № 12. Печатаются по решению редакционно-издательского совета университета.

Данные методические указания содержат примеры выполнения лабораторных работ с описанием основных конструкций алгоритмического языка программирования Pascal в пакете TurboPascal. Предназначены для студентов технических специальностей очной формы обучения.

Составители: Сергей Анатольевич Юшков Татьяна Ивановна Ермоленко Валерий Анатольевич Смышляев

Рецензенты: к.т.н., зав. кафедрой АТС В.Б. Гуменников; к.т.н., доцент кафедры ЭС В.Б. Тепляков

Редактор А.Б. Иванова Компьютерная верстка Е.А. Самсонова

Подписано в печать 13.07.2010. Формат 60×90 1/16. Усл. печ. л. 1,25. Тираж 100 экз. Заказ № 167.

© Самарский государственный университет путей сообщения, 2010

2

Введение

Основное назначение методических указаний – кратко, доступно, на конкретных примерах показать пользователям-непрограммистам применение основных элементов языка программирования Pascal – алгоритмических конструкций, операторов, стандартных процедур и функций.

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

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

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

3

Требования к оформлению отчёта по лабораторной работе

Отчет должен содержать следующие пункты:

1)условие задачи;

2)постановка задачи;

3)блок-схема алгоритма;

4)текст программы на языке PASCAL;

5)результаты расчетов (входные и выходные данные).

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

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

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

Лабораторная работа № 1. Табуляция функции

Выполнение лабораторной работы рассмотрим на конкретном примере.

1. Условие задачи:

Найти и вывести на экран все значения функции P = 24.97 Sin2 2K на отрезке [A, B] с шагом D. Подсчитать количество значений функции, больших 10.

2.Постановка задачи:

1)вводимые переменные: A, B, D – вещественные числа – начало отрезка, конец отрезка, шаг;

2)при вводе данных необходимо учитывать, что переменные A, B, D должны соответствовать следующим условиям: B > A и D > 0. Если данные не соответствуют этим условиям, необходимо осуществить ввод новых данных;

3)для решения этой задачи необходимо организовать цикл. Переменная цикла К должна изменяться в пределах от К = А до К = В с шагом D.

Kнач = A, Kслед = K + D , пока K B .

С – количество, целое. Cнач = 0 , Cслед = С +1 при P > 10

P = 24.9 e(

1

2

2K )) .

7 Ln(Sin

 

4)выводимые переменные: К, Р, С – в следующем виде: таблица:

4

Аргумент =... Значение функции =...

Аргумент =... Значение функции =...

и строка:

Количество значений функции, больших 10 =…

3. Алгоритм:

 

Начало

 

 

 

 

A, B, D

 

 

 

Нет

B > A

Да

 

 

 

 

 

 

 

D > 0

C = 0

 

 

 

 

 

 

 

 

K = A

 

 

 

Нет

K B

Да

 

 

 

 

 

 

C

 

P = f(K)

 

 

конец

 

K, P

 

 

 

 

 

 

 

Нет

P >10

Да

 

 

 

 

 

 

 

 

C = C + 1

 

 

 

K = K + D

 

4. Текст программы:

Program TAB;

{Составил .........}

Var A,B,D,K,P:Real; { описаниe переменных} C:Integer;

Begin {начало программы}

Repeat {Оператор цикла с постусловием. Организуется цикл выполнения перечня операторов, заключенных между словами repeat и until до тех пор, пока не будет выполнено условие, указанное после until.}

5

WriteLn ('Введи начало отрезка, конец отрезка, шаг'); {Оператор вывода на экран строки заключенной в апострофах.}

ReadLn (A,B,D); { Ввод числовых данных с клавиатуры в память. Переменные в скобках обозначают место в памяти, куда будут занесены вводимые числа.}

Until (B>A) and (D>0);

C:=0;

K:=A;

While K<=B do {Организуется цикл для нахождения значений заданной функции, вывода на экран таблицы, подсчета количества Р > 10 до тех пор, пока выполняется условие, указанное после управляющего слова while.}

Begin {начало цикла}

P:=24.9*exp(ln(sqr(sin(2*k)))/7);

WriteLn ('Аргумент=' ,K:6:2,'Значение функции=’ ,P:8:2); if P>10 then C:=C+1;{ Проверка условия.}

K:=K+D;

End; {конец цикла while}

Write ('Количество значений функции, больших 10=',C); End. {конец программы}

5. Результаты расчетов:

Введи начало отрезка, конец отрезка, шаг 1 3 0.5 Аргумент = 1.00 Значение функции = 24.23 Аргумент = 1.50 Значение функции = 14.23 Аргумент = 2.00 Значение функции = 22.99 Аргумент = 2.50 Значение функции = 24.60 Аргумент = 3.00 Значение функции = 17.30 Количество значений функции, больших 10 = 5

Лабораторная работа № 2. Одномерные массивы

Номер элемента массива:

1

2

……………

j

…n

Элемент массива:

 

 

 

 

 

 

 

186

155

 

4

28.6

….

Примеры.

Описание массивов:

Var b:array [1..28] of real; b:array [45..61] of byte;

Присвоение значений элементам массива

B[1]:=186; B[19]:=143.8; B[j]:=28.6; B[j+1]:= a+c;

Выполнение лабораторной работы рассмотрим на конкретном примере.

6

1. Условие задачи:

Дано 40 оценок, найти среднюю.

2.Постановка задачи:

1) вводимые переменные: Оc[i] – оценка.

Проверка: при вводе данных необходимо учитывать, что 0 < Oc [ i ] 5 , если данные не соответствуют этим условиям, необходимо ввести новые данные.

2)промежуточные переменные: i – номер оценки; Sum – сумма оценок.

3)выводимые переменные: SR – средняя оценка.

Для решения задачи потребуются следующие формулы: Sum = Sum + Oc[i]; Sumнач = 0; SR = Sum/40

Результат: SR = … 3. Алгоритм:

начало

 

 

i = 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'введи оценку'

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Oc[i]

 

нет

 

 

 

 

 

0 < Oc[I ] ≤ 5

да

i = i + 1

 

 

да

нет

 

 

 

i > 40

 

 

 

 

 

 

 

 

 

 

Sum = 0

i = 40

Sum = Sum + Oc[i]

i = i – 1

нет

i < 1

да

конец

 

 

 

 

SR = Sum/40

SR

7

4. Текст программы:

Program OCEN;

{составил ...}

var Oc : array[1..40] of integer; Sum,i : integer;

Sr : real; begin

for i:=1 to 40 do { Выполняется цикл(повтор) одного оператора, состоящего из одного действия (или нескольких заключенных между begin и end); стоящего за управляющим словом do. Повторение выполняется до тех пор , пока переменная цикла i изменяемая с шагом +1 не станет больше 40.}

begin repeat

write ('введи оценку '); readln (Oc[i]);

until (Oc[i]>0) and (Oc[i]<=5); end;

Sum:=0;

for i:=40 down to 1 do {Выполняется цикл(повтор) одного оператора, стоящего за управляющимсловомdo. Прикаждомповторениипеременнаяциклаизменяетсясшагом–1.}

Sum:=Sum+Oc[i];

SR:=Sum/40;

Write ('средняя оценка=',Sr:4:2); end.

5. Результаты расчетов: Введи оценку 4 Введи оценку 3

..........................

Введи оценку 5 Средняя оценка = 3.05

Другие возможные варианты:

1) накапливающее умножение Р – произведение

…………………….

p:=1;

for i:=1 to 40 do p:=p Oc[i];

2) подсчёт количества

........................

8

kol:=0;

for i:=1 to 40 do begin

if St>175 then kol:=kol+1;

end;

write (‘kol=’,kol);

Лабораторная работа № 3. Двухмерные массивы

Номер столбца элемента

№ строки

элемента

1 2

10

m

1

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

1048

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример.

запись элементов массива

Z[2,10]:=1048;

Z[i,k]–

Var Z:array [1..9,1..8] of word;

Выполнение лабораторной работы рассмотрим на конкретном примере.

1. Условие задачи:

Дана матрица 9×9, элементы которой расчитываются по формуле: Elem[i, k] = i*sin(k), где i – номер строки, k – номер столбца этого элемента.

Найти: наибольший элемент в каждой строке, наименьший элемент в каждом столбце. Результат записать в текстовый файл.

2. Постановка задачи:

1) Elem[i, k] = i*sin(k)

Max[i] – наибольший элемент в каждой строке Min[k] – наименьший элемент в каждом столбце

LM – обозначим имя файла в программе (логическое имя файла) MATR.TXT – физическое имя файла (на диске)

2) Результаты:

Матрица max

min

9

3. Алгоритм:

начало

i = 1

k = 1

Elem[i, k] = i*sink

k = k+1

да нет

k >9

i = i + 1

да

i > 9

нет

 

 

i = 1

Max[i] = Elem[i,1]

нет

k = 2

да

 

 

Max[i] < Elem[i,k]

Max[i] = Elem[i, k]

 

 

 

 

нет

k = k+1

да

 

 

 

 

k > 9

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]