41706

Программная реализация алгоритмов линейной структуры на языке программирования Turbo Pascal

Лабораторная работа

Информатика, кибернетика и программирование

Описание объявление данных содержит упоминание всех объектов используемых в программе и включает в себя: раздел подключаемых библиотек модулей определяется служебным словом USES и содержит имена подключаемых модулей: uses CRT Grph; раздел описания меток: любой оператор в программе может быть помечен меткой. Типы данных. Под типом данных понимается множество допустимых значений этих данных а также совокупность операций над ними. Тип определяет также и формат внутреннего представления данных в памяти компьютера.

Русский

2015-01-18

153.86 KB

12 чел.

Лабораторная работа № 1.Программная реализация алгоритмов линейной структуры

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

Задание:

  1.  Разработать алгоритмы для решения задач варианта.
  2.  Записать алгоритмы на языке программирования Turbo Pascal.
  3.  Произвести отладку и тестирование программы.

Краткие теоретические сведения

Программа на языке Паскаль записывается строго определенным образом и состоит из заголовка, раздела описаний и раздела операторов.

Заголовок программы состоит из ключевого слова Program и собственно имени программы, например:  Program prim;. Заголовок является необязательной частью программы.

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

  1.  раздел подключаемых библиотек (модулей) определяется служебным словом USES и содержит имена подключаемых модулей: uses CRT, Graph;
  2.  раздел описания меток: любой оператор в программе может быть помечен меткой. Имя метки задается по правилам образования идентификаторов Турбо Паскаль: label 3, 471, 29, Quit;
  3.  раздел описания констант позволяет использовать имена как синонимы констант, их необходимо определить в разделе описания констант: const K= 1024; MAX= 16384;
  4.  раздел описания типов;
  5.  раздел описания переменных; необходимо указать все переменные, используемые в программе, и определить их тип: var P,Q,R: Integer;     A,B:   Char;     F1,F2: Boolean;
  6.  раздел описания процедур и функций.

Операторы (исполняемая часть) представляет собой составной оператор, который содержится между служебными словами begin.......end. Операторы отделяются друг от друга символом ”;”. Текст программы заканчивается символом ”точка”.

Кроме описаний и операторов Паскаль - программа может содержать комментарии, которые представляют собой произвольную последовательность символов, расположенную между открывающей скобкой комментариев “{“ и закрывающей скобкой комментариев “}”.

Алфавит языка Паскаль включает следующие символы:

  1.  Латинские прописные и строчные буквы A – Z, az; символ _ «подчерк» (код ASCII 95) используются для формирования идентификаторов и служебных слов;
  2.  Арабские цифры 0 – 9 – для записи чисел и идентификаторов.
  3.  Специальные символы: математические (+| - | * | / | = | > | < | ( | ) |; пунктуации | . | , | : | ; |; прочие | [ | ] | - для обозначения массивов и множеств,  | { | } | - для записи комментариев, | _ | - для разделения лексем, | ' | - апостроф для записи констант символьного и текстового типа, | $ | # | @ | ^ |.

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

  1.  Ключевые (служебные, зарезервированные) слова. Всего 51 слово, в редакторе интегрированной среды Borland Pascal изображаются белым цветом. Перечень зарезервированных слов приведен в приложении.
  2.  Идентификаторы (изображаются желтым цветом) могут быть двух разновидностей: имена, которые программист присваивает какой-либо переменной, константе, типу, метке, процедуре или функции (нельзя использовать ключевые слова); стандартные идентификаторы, которые являются именами встроенных в язык процедур и функций. Компилятор воспринимает 63 символа идентификатора, который должен начинаться с буквы и может содержать буквы, цифры и знак подчеркивания.
  3.  Знаки операций: |= | < | > | + | - | * | / | <= | >=|.
  4.  Изображения – эта группа лексем обозначает:
  5.  Десятичные числа, которые записываются чаще всего в традиционном формате с фиксированной точкой: <Вещ_фикс>::=<целое>.< целое>. Кроме того применяется экспоненциальный формат (вещественное с плавающей точкой): <Вещ_эксп>::=<Вещ_фикс>E<порядок>, где <порядок>::=[+-] <целое>. Например: 7,4Е-2  7.4  10-2  0.074.
  6.  Строки – последовательность любых символов из расширенного набора ASCII, заключенная в апострофы;
  7.  Комментарии (изображаются серым цветом) – любая комбинация произвольных символов, заключенная либо в фигурные скобки { }, либо в комбинированные {* *}. Если за открывающейся скобкой следует знак $, комментарий интерпретируется как директива компилятора.

Между лексемами разрешено вставлять один или несколько разделителей: пробелов, комментариев, символов «конец строки» (код 13) и других управляющих символов (коды от 0 до 31).  разделителями являются знаки математических операций, круглые и квадратные скобки, запятые.

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

К простым типам относятся порядковые и вещественные типы. Они не требуют предварительного определения.

Порядковые типы отличаются тем, что каждый из них имеет конечное число возможных значений. Эти значения можно определенным образом упорядочить и, следовательно,  с каждым из них можно сопоставить некоторое целое число – порядковый номер значения. Это integer (целое со знаком), boolean (логический), char (символьный) и другие.

Вещественные типы тоже имеют конечное число значений, которое определяется форматом внутреннего представления вещественного числа. Однако количество возможных  значений вещественных типов настолько велико, что сопоставить с каждым из них целое число (его номер) не представляется возможным. Это single, real, double, extended, comp.

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

Описание констант используется в программе для задания значений, которые не изменяются в процессе выполнения действий. Предложение описания констант имеет вид: Const с1 = value; c2 = value;

Здесь с1, с2 – имена констант; value – определяет значение константы.

Например: Const с1 = -46.175; c2 = 1/с1; с3 = ABS(c1);

Описание переменных. Переменные используются для записи значений, изменяющихся в программе. Выбор имен осуществляется так, чтобы были понятны смысл и назначение. Все переменные, используемые в программе, должны быть перечислены в разделе описания переменных. Предложение описания переменных имеет вид: Var v1, v2, … : type_id;

Здесь v1, v2,… - список переменных, в котором имена переменных разделяются запятыми, а type_id задает тип переменных из данного списка.

Например: Var a, b, c: integer; x1, x2: real;

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

По количеству операндов операции делятся на унарные (присвоение знака числу [+ -] и бинарные (умножение [ * ], деление [ / ], деление нацело [ div ], остаток от деления [ mod ], сложение [ + ], вычитание [ - ].  Например: С := A mod B, при A := 13 и B := 4 С := 1; С := A div B, при A := 13 и B := 4 С := 3.

Булевы (логические) выражения  включают в себя переменные и простые логические операции: =, <, >, <=, >=, <>. Например: A>=B. Простые булевы выражения могут объединяться в сложные с помощью логических операций: конъюнкция AND, дизъюнкция OR, отрицание NOT, строгая дизъюнкция XOR.

Порядок вычисления выражения определяется скобками, а в их отсутствие – в соответствии с приоритетом операций:

  1.  Операция отрицание NOT;
  2.  Мультипликативные *, /, div, mod, AND;
  3.  Аддитивные +, -, OR;
  4.  Простые логические операции =, <, >, <=, >=, <>.

Подробное описание операций приведено в приложении.

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

Abs(X) – вычисляет абсолютное значение X;

Exp(X) – основание натурального логарифма возводит в степень Х;

Ln(X) – вычисляет натуральный логарифм Х;

Sqr(X) – Х возводит в квадрат;

Sqrt(X) – вычисляет квадратный корень из Х;

Sin(X), Cos(X), Arctan(X) – тригонометрические функции синус, косинус и арктангенс (аргумент задается в радианах);

Trunc(X) – определяет целую часть числа Х, тип результат Longint;

Round(X) – округляет число Х до целого;

Frac(X) – определяет дробную часть аргумента;

Int(X) – определяет дробную часть аргумента, тип результат Real;

Random(X) – равномерное псевдослучайное число 0 I < X, при отсутствии Х интервал чисел от 0 до I.

Математические функции, не представленные в языке Паскаль в явном виде:

Десятичный логарифм Lg(X) = Ln(X)/Ln(10);

Возведение в степень Y = Mn  Y:= Exp(n*Ln(M)), A = 146  A := Exp(6*Ln(14));

Тангенс угла Tg(X) = Sin(X)/Cos(X); котангенс угла Ctg(X) = Cos(X)/ Sin(X); секанс угла Sc(X) = 1/ Cos(X); косеканс угла Csc(X) = 1/ Sin(X); арксинус числа Arcsin(X) = Arctan(X/Sqrt(1-X*X));  арккотангенс числа Arcctg(X) = Pi/2 - Arctan(X); арккосинус числа Arccos(X) = Pi/2 - Arctan(X/Sqrt(1-X*X)).

Для перевода из градусов в радианы и наоборот используются соотношения: 1 радиан = 180/Pi = 5717’45” 1 градус = Pi/180 радиана = 0,0174 радиана.

Операторы – это единицы действия языка (синонимы – предложения, утверждения, инструкции). Операторы могут быть выполняемые и невыполняемые. Выполняемые производят вычисления и управляют процессом вычислений. Невыполняемые содержат сведения о структуре и организации данных, их свойствах и размещении данных в памяти. Операторы также могут быть пустые и составные. Составной оператор – это последовательность произвольных операторов программы, заключенная в операторные скобки Begin ... End. Пустой оператор не содержит никаких действий, просто в программу добавляется лишняя точка с запятой. В основном пустой оператор используется для передачи управления в конец составного оператора.

Оператор присваивания вызывает выполнение выражений и присваивание значения имени результата:  <имя переменной> := <выражение>.  Например C := A/B; D := 54 *S +(21 +n)/g); P := P*i.

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

Для ввода данных используются следующие операторы обращения к встроенной стандартной процедуре ввода данных:

Read (A, B, C); где A, B, C – имена переменных, значения которых подлежат вводу для запоминания в оперативной памяти.

Readln (A, B, C); после окончания ввода курсор перемещается к началу новой строки.

Readln; означает ожидание нажатия клавиши <Enter>.

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

Write(список имен);. Например: Write(‘a=’, a:7:3, ‘_b=’, b:6:3) – число после первого двоеточия означает количество позиций, выделяемых для вывода значения численной переменной, включая знак, целую часть, десятичную точку и цифры после запятой, цифра после второго двоеточия означает количество цифр после десятичной запятой. Лишние позиции будут заменены пробелами перед целой частью числа и нулями после дробной части. В приведенном операторе ввода при a = 3,14744 и b = -3,4   на экране выведется a = __3.147 b = -3.400.

Writeln(список имен); - после вывода курсор переводится к началу новой строки.

Writeln; - означает пропуск одной строки и переход к началу новой строки.

Для вывода данных на печатающее устройство необходимо переопределить вывод, для чего в списке вывода задается имя устройства LST. Например: Writeln(lst, x1, x2);.

Примеры решения задач

Пример 1. Вычислить площадь круга и длину окружности по заданному радиусу.

Решение: Схема алгоритма представлена рис.3.1.  Напишем программный код:

program circle;

const  pi := 3.14159;

var r, s, l : real;

begin

writeln (‘введите радиус’); readln (r);

s:= pi*r*r; l:= 2*pi*r;

writeln (‘площадь круга =’, s:8:4);

writeln (‘длина окружности =’, l:8:4);

end.

Пример 2. Вычислить высоты сторон треугольника, если известны длины сторон треугольника. Для вычисления использовать формулу Герона.

Решение: Схема алгоритма рассматривается рис.3.2.  Напишем программный код:

program primer2;

var a, b, c, p, t, ha, hb, hc: real;

begin

writeln (‘введите длины сторон треугольника a, b, c’); readln (a, b, c);

p:= (a + b + c)/2; p:= 2*sqrt(p * (p – a) * (p – b) * (p – c));

ha:= t/a; hb:= t/b; hc:= t/c;

writeln (‘ha =’, ha:8:4);

writeln (‘hb =’, hb:8:4);

writeln (‘hc =’, hc:8:4); end.

R

S := R2

L := 2R

S, L

a, b, c

t = 2

ha = t/a,

hb = t/b,

hc = t/c

ha, hb, hc

Рис.3.1. Алгоритм вычисления площади круга и длины окружности

Рис. 3.2. Схема алгоритма
вычисления высот треугольника

Задачи для самостоятельной работы

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

№ варианта

Расчетные формулы

Исходные данные

x

y

z

  1.  

1

  1.  

6,251

0,827

25,001

2

2,735

3,823

0,666

3

0,622

3,325

5,541

4

3,741

15,4

0,252

5


1,625

0,825

0,16

6


2,444

9,869

0,166

7

1,827

18,221

3,298

8


47,8

5,5

2,3

9

1,426

1,22

3,5

10


1,743

0,457

7,833

11

1,825

18,225

-3,298

12

0,3

0,5

2,9

13

-2,9

1,5

15,5

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

№ варианта

Формулировка задачи

1

Вычислить периметр и площадь прямоугольного треугольника по заданным длинам двух катетов a и b.

2

Заданы координаты трех вершин треугольника (x1, y1), (x2, y2), (x3, y3). Найти его периметр и площадь.

3

Даны два числа. Найти среднее арифметическое кубов этих чисел.

4

Вычислить расстояние между двумя точками с данными координатами (x1, y1) и  (x2, y2).

5

Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба.

6

Дана сторона равностороннего треугольника. Найти площадь этого треугольника, его высоты.

7

Найти площадь кольца, внутренний радиус которого равен r, а внешний – заданному числу  R (R > r).

8

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

9

Найти площадь равнобедренной трапеции с основаниями a и b и углом  при большем основании а.

10

Найти все углы треугольника со сторонами a, b, c. Предусмотреть в программе перевод радианной меры угла в градусы.

11

Известна длина окружности. Найти площадь круга, ограниченного этой окружностью.

12

Составить программу вычисления объема цилиндра и конуса, которые имеют одинаковую высоту H и одинаковый радиус основания R.

13

Три сопротивления R1, R2, R3 соединены параллельно. Найти сопротивление соединения.

Методика выполнения работы

  1.  Запустите интегрированную среду Паскаль.
  2.  Смените при необходимости рабочий каталог, установленный по умолчанию:

File  Change dir.

  1.  Откройте новое окно для записи текста программы: File  New. Наберите в окне редактора исходную программу.
  2.  Запишите набранную программу на диск, используя команду File  Save. Расширение указывать не обязательно. Откомпилируйте исходную программу Run  Compile (<Alt + F9>).Исправьте допущенные ошибки. Запустите программу на выполнение Run (<Ctrl + F9>).
  3.  Проведите тестирование программы.
  4.  Окончание работы – выход из Паскаля (<Alt + X>).
  5.  Составьте отчет по выполненной работе.

Оформление отчета о проделанной работе

Отчет о лабораторной работе должен содержать следующие сведения:

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

Контрольные вопросы

  1.  Из каких разделов состоит программа на Паскале? Что они собой представляют?
  2.  Какие символы включены в алфавит языка Паскаль?
  3.  Что такое лексема?  
  4.  Назовите разновидности идентификаторов.
  5.  Запишите форматы десятичных чисел.
  6.  Что понимается под типом данных?
  7.  Для чего служат выражения? Как они записываются?
  8.  Какие операции и функции определены в Паскале?
  9.  Каков порядок вычисления выражения?
  10.  Как выполнить присваивание в программе?
  11.  Какие процедуры используются в Паскале для ввода-вывода данных?


 

А также другие работы, которые могут Вас заинтересовать

50673. Изучение метода последовательного анализа при испытании на надежность элементов и устройств информационной техники 71.5 KB
  В результате исследования процесса возникновения отказов в аппаратуре ИИС убедимся в простоте метода последовательного анализа при испытаниях на надежность который опираясь на данных о границах надежности и рисках потребителя и изготовителя позволяет принять решение о принадлежности партии изделий к принимаемой или бракуемой группе.
50675. Функции системы MATLAB 108 KB
  Изучение основных функций системы MATLAB. Создание новых функций и построение их графиков в среде MATLAB. Решение систем линейных уравнений. Изучение генератора базовой случайной величины.
50676. Изучение методов структурного резервирования 95.5 KB
  Требуется с помощью различных видов резервирования обеспечить надежность системы в течении T = 1000 часов c вероятностью безотказной работы не менее Pдоп = 0.95 задавая кратность резервирования определяя её стоимость. Необходимо определить какой тип резервирования наиболее эффективен.
50678. Определение теплоёмкости металлов методом охлаждения 91 KB
  В данной работе мы измеряли теплоёмкость трёх элементов: меди алюминия и стали. Изначально мы предполагали что максимальная теплоёмкость у стали а минимальная у алюминия моё предположение основывалось на зависимости теплоёмкости от плотности это оказалось не верно. После проведения эксперимента выяснилось что максимальная теплоёмкость у алюминия091001 Дж гК а минимальная у меди ССu = 0.