Программирование на языке Turbo Pascal

Автор работы: Пользователь скрыл имя, 16 Октября 2013 в 16:41, курсовая работа

Описание работы

Целью курсовой работы является написание программ на языке Turbo Pascal.
Для достижения цели были поставлены следующие задачи:
• Обзор и анализ литературы по темам «Массивы» и «Записи и файлы»;
• Разработка алгоритма программы;
• Написание программы на языке Turbo Pascal;
• Отладка программы;
• Тестирование программы со всевозможными исходными данными;
• Оформление курсовой работы.

Содержание работы

Введение
Часть 1.
1.1 Теоретический материал по теме «Массивы»
1.2 Решение задачи
Часть 2
2.1 Теоретический материал по теме «Записи и файлы»
2.2 Решение задачи
Заключение
Список использованных источников

Файлы: 1 файл

курсовая.doc

— 287.00 Кб (Скачать файл)

Федеральное агентство связи 

 

Бурятский филиал ГОУ  ВПО СибГУТИ

КУРСОВАЯ РАБОТА

 

по дисциплине: Информатика

на тему: Программирование на языке Turbo Pascal

 

Выполнил:

студент

группа:

№ зач. книжки:

 

 

 

 

Проверил:

Эрдынеева Л.И.

 

 

 

 

 

 

Улан-Удэ

200__г.

 

Содержание

 

Введение

 

Часть 1.

 

1.1 Теоретический материал  по теме «Массивы»

 

1.2 Решение задачи

 

Часть 2

 

2.1 Теоретический материал  по теме «Записи и файлы»

 

2.2 Решение задачи

 

Заключение

 

Список использованных источников

 

 

 

Введение

 

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

Для достижения цели были поставлены следующие задачи:

  • Обзор и анализ литературы по темам «Массивы» и «Записи и файлы»;
  • Разработка алгоритма программы;
  • Написание программы на языке Turbo Pascal;
  • Отладка программы;
  • Тестирование программы со всевозможными исходными данными;
  • Оформление курсовой работы.

 

Часть 1

    1. Теоретический материал по теме «Массивы»

Массив есть упорядоченный набор переменных одинакового типа. Каждая отдельная величина называется компонентой массива. Тип компонент может быть любым, принятым в языке Паскаль, кроме файлового типа. Тип компонент называется базовым типом. Каждая компонента может быть явно обозначена с помощью имени переменной-массива, за которым в квадратных скобках следует индекс. Их тип называется типом индекса. Время, требуемое для доступа любой компоненты, не зависит от значения индекса. Поэтому о массивах можно говорить как об объектах, структура которых допускает случайный (или прямой) доступ.

Объявление переменных массивового типа

Переменная массивового  типа описывается в разделе описания переменных в следующей форме:

var

  <идентификатор>: array[<тип индекса>] of <тип компонент>

Чаще всего в качестве типа индекса употребляется интервальный тип. Например, одномерный массив среднемесячных температур опишется так:

var

  T: array[1..12] of real;

Описание массива определяет, во-первых, размещение массива в  памяти, во-вторых, правила его дальнейшего  употребления в программе. Последовательные элементы массива располагаются в последовательных ячейках памяти (T[1], T[2] и т.д.), причем значения индекса не должны выходить из диапазона 1...12. В качестве индекса может употребляться любое выражение соответствующего типа. Например:

T[i+j], T[m div 2]

Тип индекса может быть любым скалярным порядковым типом, кроме integer (в реализации Turbo Pascal). Например, в программе могут присутствовать следующие описания:

var

  Cod: array[Char] of 1..100;

  L: array[Boolean] of Char;

В такой программе  допустимы следующие обозначения элементов массивов:

cod['x']; L[true]; cod[chr(65)]; L[a>0];

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

Type

  Index=(А, В, С, D);

Var

  Class_10: array[Index] of byte;

И если, например, элемент Class_10[A] равен 35, то это означает, что в 10 «А» классе 35 человек. Такое индексирование улучшает наглядность программы.

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

type

  Mas1 = array[1..100] of integer;

  Mas2 = array[-10..10] of char;

var

  Num: Mas1;

  Sim: Mas2;

Многомерные массивы

Многомерный массив в  Паскале трактуется как одномерный массив, тип элементов которого также является массивом (массив массивов). Например, среднемесячную температуру за 10 лет можно хранить в массиве, описанном следующим образом:

var

  H: array[1981..1990] of array[1..12] of real;

Вот примеры обозначения некоторых элементов этого массива:

Н[1981][1]; Н[1985][10]; Н[1990][12];

Однако чаще употребляется  другая, эквивалентная форма обозначения  элементов двумерного массива:

Н[1981,1]; Н[1985,10]; Н[1990,12];

Переменная Н[1981] обозначает всю  первую строку таблицы, т.е. весь массив температур за 1981 г. Другим вариантом, эквивалентным приведенному выше описанию, является следующий:

type

  Month = array[1..12] of real;

  Year = array[1981..1990] of Month;

var

  H: Year;

Наиболее краткий вариант описания данного массива такой:

var

  H: array[1981..1990, 1..12] of real;

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

var

  A: array[1..10, 1..20, 1..30] of integer;

Это массив, состоящий  из 10x20x30 = 6000 целых чисел и занимающий в памяти 6000x2 = 12000 байт. В Паскале нет ограничения сверху на размерность массива. Однако в каждой конкретной реализации Паскаля ограничивается объем памяти, выделяемый под массивы.

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

сonst

  Imax=10;

  Jmax=20;

var

  Mas: array[1..Imax, 1..Jmax] of integer;

Теперь для изменения  размеров массива Mas и всех операторов программы, связанных с этими размерами, достаточно отредактировать только одну строку в программе — раздел констант.

Операции над массивами

Действия над массивом как единым целым. Такие действия допустимы лишь в двух случаях:

присваивание значений одного массива другому;

операции отношения  «равно», «не равно».

В обоих случаях массивы  должны иметь одинаковые типы (тип  индексов и тип элементов). Пример:

var

  P, Q: Array[1..5, 1..10] Of Real;

 

При выполнении операции присваивания P := Q все элементы массива P станут равны соответствующим элементам массива Q.

В многомерных массивах переменная с индексом может обозначать целый  массив. Например, если в таблице  H требуется, чтобы данные за 1989 г. были такими же, как за 1981 г. (девятой строке присвоить значение первой строки), то это можно делать так:

Н[1989] := Н[1981];

А если нужно поменять местами значения этих строк, то это делается через  третью переменную того же типа:

Р := Н[1989];

Н[1989] := Н[1981];

Н[1981] := Р;

где P описана так:

var

  P: Array[1..12] Of Real;

Обработка массивов

Обработка массивов в  программах производится покомпонентно. Вот примеры ввода значений в  массивы:

for I := 1 to 12 do

  readln(T[I]);

for I := 1 to IMax do

  for J := 1 to JMax do

    readln(Mas[I,J]);

Здесь каждое следующее  значение будет вводиться с новой строки. Для построчного ввода используется оператор read. Аналогично в цикле по индексной переменной организуется вывод значений массива. Например:

for I := 1 tо 12 do

  write(T[I]:8:4);

Следующий фрагмент программы  организует построчный вывод матрицы на экран:

for I := 1 to IMax do

begin

  for J := l to JMax do

    write(Mas[I, J]:6);

  writeln;

end;

 

После печати очередной  строки матрицы оператор writeln без параметров переведет курсор в начало новой строки. Следует заметить, что в последнем примере матрица на экране будет получена в естественной форме прямоугольной таблицы, если JMax не превышает 12.

Поиск суммы произведения и количества элементов одномерного  массива

 

Название

Действие до цикла

Действие в цикле

Действия после цикла

сумма

S = 0

S = S + A[i]

Write (S=',s)

произведение

P = 1

P = P * A[i]

Write (P=',p)

количество

K = 0

If условие then K = K + 1

Write (K=',k)


 

Поиск экстремального элемента в одномерном массиве

  1. Поиск минимального элемента

min := a[1];

k :=1;

for i := 1 to n do

begin

if A[i] < min then min := A[i];

k:=i;

end;

writeln (a[k]);

  1. Поиск максимального элемента

max := a[1];

k :=1;

for i := 1 to n do

begin

if A[i] > max then min := A[i];

k:=i;

end;

writeln (a[k]);

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

 

    1. Решение задачи части 1

Задача. Дана матрица N(строки)xM(столбцы). Пусть N  (по вариантам) – количество цифровых станций, обслуживающих данный населенный пункт. М=6 - количество услуг (1 услуга – телефония, 2 услуга – поиск документов, 3 услуга – цветной факс, 4 услуга – передача файлов, 5 услуга – видеотелефония, 6 услуга – поиск видео). Количество услуг оказанных каждой станцией определяется формулой ai=random(30*k+50), где k – номер варианта. (k=30, n=7) В соответствии с вариантами задания,  приведенными ниже, разработать схему алгоритма программы,  затем описать алгоритм в виде программы на языке Паскаль. Индивидуальное задание: Вывести названия видов услуг по убыванию   объемов.

Решение.

 

Таблица 1. Соответствие обозначений

Идентификатор

Назначение

A

исходный двумерный  массив, из элементов целочисленного типа

I, J

номер текущей строки и столбца  элемента в массиве

NazvanieUslug (m:mas);

наименование подпрограммы-процедуры, выводящей названия видов услуг по убыванию объемов



Схема алгоритмов главной программы  и подпрограммы


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.7 Блок-схема основной программы

Схема алгоритма главной  программы приведена на рис. 7. Схема  начинается с блока НАЧАЛО.

После этого запускается на выполнение Цикл с известным количеством повторений FOR i:=1 to 7 do For j:=1 to 6 do Begin …End; создания исходного массива из элементов целочисленного типа с помощью счетчика случайных чисел. Создаются числа положительные, поэтому в формулу вводится математическое выражение a[i,j]:=random(30*30+50) (что означает , что числа будут формироваться в диапазоне от 0 до 950). Во вложенном цикле FOR по строкам и столбцам формируется и выводится в виде таблицы двумерный массив А.

Далее следует блок обращения к  подпрограмме выводящей названия услуг в порядке убывания объема, где NazvanieUslug - это имя подпрограммы. Оканчивается схема блоком КОНЕЦ.


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 8 Блок-схема процедуры NazvanieUslug

 

На рис. 8 приведена  блок-схема  алгоритма подпрограммы. Схема начинается с блока ВХОД. Организуется цикл  с известным количеством повторений  for i:=1 to 6 do begin.. end; Затем задается начальное значение  суммы услуг в каждом столбце. Далее организуется еще один цикл, в котором происходит подсчет суммы по столбцам,  значение этой суммы заносится в одномерный массив.

Затем организуется ещё  цикл, в котором происходит вывод названий услуг в порядке убывания объема.

Оканчивается схема  блоком КОНЕЦ.

Описание программы

 

Программа состоит из трех частей: заголовка, раздела описаний, раздела операторов.

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

 

program z1;

type

mas=array[1..6,1..6]of integer;

 

var

a:mas;

i,j:byte;

Заголовок программы с именем z1

Раздел описания типов 

Двумерный массив, целочисленного типа

Раздел описания переменных

Двумерный массив,

целочисленные переменные


 

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

 

Вложенный цикл  повтора FOR . 

for i:=1 to 6 do     for j:=1 to 6 do    -     Для i , изменяющегося от1 до 6  делать

begin   начало   тела цикла

A[i,j]:=random(30*30+50) функцией RANDOM формируется положительное число в диапазоне от 0 до 950.

write(a[i,j]); Процедурой вывода  распечатывается  полученный массив в виде таблицы.

end                              конец тела цикла

Во вложенном цикле   FOR  - выполняется обработка элементов  массива. В теле цикла происходит подсчет общего объема по видам услуг (т.е. сумма по столбцам).

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

program z1;

uses crt;

type mas=array [1..7,1..6] of integer;

var a: mas;

i,j : integer;

procedure NazvanieUslug(m:mas);

var

s,max,n: integer;

b: array [1..6] of integer;

begin

for i:= 1 to 6 do begin

s:=0;

for j:= 1 to 7 do begin

s:=s+a[j,i];

end;

b[i]:=s;

end;

for i:= 1 to 6 do

write (b[i]:4);

writeln;

for i:= 1 to 6 do begin

max:=1;

for j:= 1 to 6 do

if (b[j]>0)and(b[j]>max) then begin n:=j; max:=b[j]; end;

b[n]:=0;

case n of

1:writeln ('1-telephoniy');

2:writeln ('2-poisk documentov');

3:writeln ('3-color fax');

4: writeln ('4-peredacha files');

5:writeln ('5-videotelephoniy');

6:writeln ('6-poisk video');

Информация о работе Программирование на языке Turbo Pascal