Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

ТЕМА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ программирование на языке паскаль Методические указания по выполнени

Работа добавлена на сайт samzan.net:


PAGE  27

 

Кафедра: «Информационные системы»

О.В. Амелина

          

ИНФОРМАЦИОННЫЕ СИСТЕМЫ:

ПОДСИСТЕМА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

(программирование на языке паскаль)

Методические указания по выполнению лабораторных работ

Дисциплина -  «Информатика и программирование»

Специальности: - 080801 «Прикладная информатика (в экономике)»,

                             - 080800.62 «Прикладная информатика

                              (бакалавры)»,

                             - 080801ю «Прикладная информатика

                               (в юриспруденции).

Печатается по решению редакционно-издательского совета ОрелГТУ

ОРЕЛ 2010

Автор:  канд. экон. наук, доцент кафедры «Информационные системы»                             О.В. Амелина

Рецензент:    канд. техн. наук, доцент кафедры «Информационные системы»                             А.П. Гордиенко

Настоящие методические указания предназначены для выполнения лабораторных работ по дисциплине «Информатика и программирование» студентов очной формы обучения для специальностей: 080801 «Прикладная информатика (в экономике)», 080800.62 «Прикладная информатика (бакалавры)», 080801ю «Прикладная информатика в юриспруденции».

Редактор

Технический редактор

Орловский государственный технический университет

Лицензия ИД 00670 от 5.01.2000

АНО «ОрелГТУ-РЦФИО»

Подписано к печати      Формат 6084 1\16

Печать офсетная   Усл. печ. л.     . Тираж      экз.

Заказ №

Отпечатано с готового оригинал-макета

на полиграфической базе ОрелГТУ,

302030, г. Орел, ул. Московская, 65

© ОрелГТУ, 2010

© АНО «ОрелГТУ-РЦФИО»

© Амелина О.В., 2010


СОДЕРЖАНИЕ

[1]
 1 ЦЕЛЬ ПРОВЕДЕНИЯ ЛАБОРАТОРНЫХ РАБОТ

[2]  2 ПОДГОТОВКА К ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ РАБОТ

[3]  3 ОСНОВНЫЕ ОПЕРАТОРЫ ЯЗЫКА ПАСКАЛЬ

[4] 3.1 СРЕДА TURBO PASCAL

[5] 3.2 ОПЕРАТОРЫ TURBO pascal

[5.0.1] 3.2.1 УСЛОВНЫЙ ОПЕРАТОР

[5.0.2] 3.2.2 ОПЕРАТОР ВАРИАНТА

[5.0.3] 3.2.3 ОПЕРАТОРЫ ЦИКЛА

[5.0.3.1] 3.2.3.1 Оператор цикла с параметром

[5.0.3.2] 3.2.3.2 Оператор цикла с предусловием

[5.0.3.3] 3.2.3.3 Оператор цикла с постусловием

[6] 4 ОСНОВНЫЕ ПРОЦЕДУРЫ ГРАФИЧЕСКОГО МОДУЛЯ

[7] 5  ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ МОДЕЛЬ TURBO PASCAL

[8] 5.1 ОСНОВНЫЕ КОНЦЕПЦИИ ООП

[8.0.1] 5.1.1 АБСТРАКТНЫЕ ТИПЫ ДАННЫХ. ИНКАПСУЛЯЦИЯ

[8.0.2] 5.1.2 КЛАССЫ

[8.0.3] 5.1.3 НАСЛЕДОВАНИЕ

[8.0.4] 5.1.4 ПОЛИМОРФИЗМ. РАННЕЕ И ПОЗДНЕЕ СВЯЗЫВАНИЕ

[9] 5.2 ДИНАМИЧЕСКИЕ ОБЪЕКТЫ

[10]
6 ЗАДАНИЯ К ЛАБОРАТОРНЫМ РАБОТАМ

[11] 7  КОНТРОЛЬНЫЕ ВОПРОСЫ

[12] 8 СОДЕРЖАНИЕ ОТЧЕТА

[13] 9 СПИСОК ЛИТЕРАТУРЫ


 1 ЦЕЛЬ ПРОВЕДЕНИЯ ЛАБОРАТОРНЫХ РАБОТ

Целью проведения лабораторных работ является:

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

 2 ПОДГОТОВКА К ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ РАБОТ

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

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

Готовность студента к работе определяется преподавателем путем проведения собеседования. Основным материалом для собеседования являются контрольные вопросы, приведенные в разделе 7.

Защита лабораторной работы производится после написания студентом программы и оформления отчета.

 3 ОСНОВНЫЕ ОПЕРАТОРЫ ЯЗЫКА ПАСКАЛЬ

3.1 СРЕДА TURBO PASCAL

Среда Turbo Pascal объединяет редактор, компилятор, компоновщик и отладчик для создания, отладки и запуска Pascal-программ.

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

Команды из меню можно выбирать при помощи клавиатуры или при помощи мыши.

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

3.2 ОПЕРАТОРЫ TURBO pascal

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

К простым операторам относят операторы присваивания, операторы процедуры и оператор goto.

Оператор присваивания изменяет текущее значение переменной на значение выражения, стоящего после знака присваивания «:=».

Пример.

X:=Y+Z;

Done:=( I >- 1 ) and ( I < 100 );

К структурным операторам относят составные, условные, операторы цикла, оператор присоединения (см. далее).

Составной оператор – последовательность операторов между словами begin  и end. Символ «;» применяется для того, чтобы отделить друг от друга два оператора . Так как этот символ не является частью оператора, а только разделяет операторы, то между последним оператором и словом end он может отсутствовать.

Пример.

begin

   Z:=X;

   X:=Y;

   Y:=Z

end;

3.2.1 УСЛОВНЫЙ ОПЕРАТОР

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

Выражение должно иметь стандартный тип boolean. Если выражение имеет значение True, то выполняется оператор, следующий за словом then. Если же выражение имеет значение False и часть else присутствует, выполняется оператор, следующий за словом else. Если часть else отсутствует, выполняется оператор, следующий за оператором if.

Пример.

if X<1.5 then

  Z:=X+Y

else

  Z:=1.5;

Обратите внимание! Перед else нет знака «.

Синтаксическая двусмысленность возникает в конструкции

if e1 then if e2 then s1 else s2  , так как часть else s2 может трактоваться как принадлежащая «внешнему» оператору if e1 или вложенному оператору if e2 then.

Эта двусмысленность разрешается путем следующей интерпретации данной конструкции:

if e1 then

  begin

       if e2 then

          s1

       else

           s2

  end;

Правило: служебное слово else всегда ассоциируется с ближайшим по тексту служебным словом if, которое еще не связано со служебным словом else.

3.2.2 ОПЕРАТОР ВАРИАНТА

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

Пример.

case CurColor of

 Red:      X:=X+2;

 Yellow: X:=Y-2;

 Green:  X:=Y

end;

CurColor – в примере это переменная перечислимого  типа. Сначала вычисляется текущее значение переменной CurColor. Затем это значение сопоставляется (сравнивается) с константами, записанными перед операторами. При совпадении значения переменной с одной из констант будет выполнен оператор, помеченный данной константой. На этом выполнение оператора будет завершено. Если значение переменной CurColor не совпадает ни с одной из констант, то данный оператор не выполняет никаких действий. Для того, чтобы задать некоторые действия для случая такого несовпадения, можно использовать альтернативу else:

Пример.

case (K+1)*2 of

2: Add(A,B);

4: Multiply(A,B);

0: Subtract(A,B)

else

       writeln(‘ошибка!’)

end;

 

Кроме одиночных констант в альтернативах оператора варианта могут быть заданы списки и/или диапазоны значений, которые в этом случае разделяются символом «,».

 

Пример.

case Switch of

1..2:             begin Proc1; Proc2; Proc3 end;

3,4,10..20:   Proc4;

5,6:           Proc5;

else

      Proc6;

      Proc7;

end;

При использовании оператора варианта должны выполняться следующие правила:

1. Значения выражения-«переключателя», записанного после служебного слова case, должно принадлежать упорядоченному типу и иметь размер 1 байт или 1 слово.

2. Все константы, предшествующие операторам альтернатив, должны иметь тип, совместимый с типом выражения.

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

При необходимости задания нескольких операторов для каких-либо из альтернатив, следует сгруппировать их в составной оператор, в то время как ветвь else допускает последовательность операторов, разделенных символом «;».

3.2.3 ОПЕРАТОРЫ ЦИКЛА

Задают повторяющееся выполнение некоторых операторов.

3.2.3.1 Оператор цикла с параметром

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

Пример {вычисление h(n)=1+1/2+1/3+…+1/n}

Program exfor;

var n,i: integer;

      H: real;

begin

   read(n); write(n);

   h:=0;

   for i:=n downto 1 do

       h:=h+1/i; n:=n-1;

   writeln(h)

end.

3.2.3.2 Оператор цикла с предусловием

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

Пример {вычисление h(n)=1+1/2+1/3+…+1/n}

Program exwhile;

var n: integer;

      H: real;

begin

   read(n); write(n);

   h:=0;

   while n>0 do

        begin

            h:=h+1/n; n:=n-1

        end;

   writeln(h)

end.

3.2.3.3 Оператор цикла с постусловием

Оператор содержит булевское выражение, которое управляет повторяющимся выполнением последовательности операторов внутри оператора repeat. Эта последовательность выполняется, пока выражение не станет истинным (пока не истина). Последовательность операторов выполняется, по крайней мере, один раз, так как выражение вычисляется после выполнения этой последовательности.

Пример {вычисление h(n)=1+1/2+1/3+…+1/n}

Program exrepeat;

var n: integer;

      h: real;

begin

 read(n); write(n);

 h:=0;

 repeat

    h:=h+1/n; n:=n-1;

 until n=0;

 writeln(h)

end.

Приведенная программа выполняется при всех n>0.

Что произойдет при n<=0?

4 ОСНОВНЫЕ ПРОЦЕДУРЫ ГРАФИЧЕСКОГО МОДУЛЯ

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

Таблица 1.

Процедура (функция)

Назначение

Пример вызова

detect

Определить тип графического драйвера

d := detect

initgraph(d, m, PathToDr)

Инициализировать графический режим экрана

initgraph(d, m,’c:\bgi’)

cleardevice

Очистить экран

cleardevice

setcolor(color)

Установить цвет

setcolor(magenta)

setbkcolor(color)

Установить цвет фона

setbkcolor(0)

putpixel(x,y,color)

Закрасить пиксель (x,y)

putpixel(5, 5, red)

line(x1,y1,x2,y2)

Нарисовать линию по двум точкам (x1,y1)-(x2,y2)

line(10,10,20,200)

lineto(x,y)

Нарисовать линию из текущей позиции луча в (x,y)

lineto(100,200)

moveto(x,y)

Переместить луч в (x,y)

moveto(nx, ny)

circle(x,y,radius)

Нарисовать окружность (x,y,r)

circle(x, y, 20)

arc(x,y,ang1,ang2,radius)

Дуга окружности (x,y,r) от угла1 до угла2 (радиан)

arc(10,10,0,pi,5)

setfillstyle(s,color)

Установить стиль и цвет заливки

setfillstyle(1,green)

floodfill(x,y,coor)

Залить область с границей (color) цветом заливки

floodfill(p,q, 10)

rectangle(x1,y1,x2,y2)

Прямоугольник

(x1,y1)-(x2,y2)

rectangle(2,2,5,10)

bar(x1,y1,x2,y2)

Прямоугольник

(x1,y1)-(x2,y2) с заливкой цвета

bar(2, 2, m, n)

getmaxx

макс. граница для x – для vga 0..639

mx := getmaxx

getmaxy

макс. граница для y (для vga 0..479

my := getmaxy

closegraph

Закрыть графический режим экрана

closegraph

5  ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ МОДЕЛЬ TURBO PASCAL

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

5.1 ОСНОВНЫЕ КОНЦЕПЦИИ ООП

5.1.1 АБСТРАКТНЫЕ ТИПЫ ДАННЫХ. ИНКАПСУЛЯЦИЯ

Одной из основных особенностей ООП является поддержка абстрактных типов данных (АТД), которые определяют множество подобных объектов и связанные с ними наборы операторов.

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

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

5.1.2 КЛАССЫ

Языковыми конструкциями для определения АТД в большинстве языков программирования являются классы.

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

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

5.1.3 НАСЛЕДОВАНИЕ

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

5.1.4 ПОЛИМОРФИЗМ. РАННЕЕ И ПОЗДНЕЕ СВЯЗЫВАНИЕ

Полиморфизм – это свойство родственных объектов (т.е. объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами. В рамках ООП поведенческие свойства объекта определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках объекта, программист может придавать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрыть его в потомке, т.е. объявить в потомке одноимённый метод и реализовать в нём нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноимённых метода, имеющие разную алгоритмическую основу и, следовательно, придающие объектам разные свойства. Это и называется полиморфизмом объектов.

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

Одним из преимуществ объектно-ориентированного стиля программирования является возможность использования динамического связывания (позднего). Все методы, которые рассматривались до этого – статические. Компилятор размещает их и решает все ссылки на них во время компиляции (раннее связывание). Позднее связывание означает, что ссылки на методы решаются  во время выполнения. В Turbo Pascal методы, подразумевающие позднее связывание, объявляются виртуальными.

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

5.2 ДИНАМИЧЕСКИЕ ОБЪЕКТЫ

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

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

Рассмотрим программу, которая:

  1.  строит иерархию графических объектов (точка, маркер, окружность),  выводит их на экране и может перемещать эти изображения по экрану;
  2.  выполняет предыдущее задание с использованием виртуальных методов;
  3.  создаёт связанный список динамических объектов (графических изображений) и выводит их на экран.

Для создания связанного списка динамических объектов создадим новый тип объекта LIST, его предназначение – возглавлять список других объектов (PointPtr – указатель на суперкласс графических объектов)

NodePtr=^Node;

Node=record

          Item : PointPtr;

          Next : NodePtr;

       end;

ListPtr=^List;

List=object

       Nodes : NodePtr;

       Constructor Init;

       Destructor Done; virtual;

       Procedure Add (Item ; PointPtr);

       Procedure View;

  end;

Constructor List.Init;

begin

   Nodes:=nil;

end;

Destructor List.Done;

var T: NodePtr;

begin

   while Nodes <> nil do

      begin

         T:=Nodes;

          dispose (T^.Item, Done);

          Nodes:=T^.Next;

          dispose (T);

       end;

end;

Procedure List.ADD (Item : PointPtr);

var T ; NodePtr;

begin

   new(T);

   T^.item:=Item;

   n^.Next:=Nodes;

   Nodes:=T;

end;

Procedure List.View;

var curr : nodePtr;

begin

   curr;=Nodes;

   while cur <> nil do

   begin

       curr^.Item^.Show;

       curr:=curr^.Next;

   end;

end;      


6 ЗАДАНИЯ К ЛАБОРАТОРНЫМ РАБОТАМ

Лабораторная работа №1.(сдал) Тема – условные операторы - if, вложенные операторы if, оператор case.

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

1) с использованием вложенных операторов if;

2) с использованием оператора варианта.

Лабораторная работа №2.(сдал) Тема –  вложенные операторы case.

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

   символ

состоян.

'X'

'V'

'I'

1

n:=10; state:=2

n:=5; state:=3

n:=1; state:=6

2

n:=n+10; state:=2

n:=n+5; state:=3

n:=n+1; state:=6

3

ok:=false

ok:=false

n:=n+1; state:=4

4

ok:=false

ok:=false

n:=n+1; state:=5

5

ok:=false

ok:=false

n:=n+1; state:=7

6

n:=n+8; state:=7

n:=n+3; state:=7

n:=n+1; state:=5

7

ok:=false

ok:=false

ok:=false

Программа выполняет перевод чисел, пока пользователь не решит из нее выйти (использовать оператор цикла).

Программа должна обрабатывать следующие типы ошибок пользователя:

1) введен неверный символ (отсутствует в алфавите программы);

2) символы введены в неправильном порядке.

Лабораторная работа №3.(сдал) Тема – работа с массивами.

Напишите следующие программы работы с массивами:

1) Найти сумму элементов одномерного массива;

2) Найти произведение элементов одномерного массива;

3) Найти сумму элементов матрицы, расположенных на главной диагонали;

4) Найти сумму элементов матрицы, расположенных ниже главной диагонали;

5) Найти сумму элементов матрицы, расположенных выше главной диагонали;

6) Найти произведение элементов матрицы, расположенных на побочной диагонали;

7) Найти произведение двух матриц.

Лабораторная работа №4. Тема – работа с графикой, с мышью, использование перечислимых типов.

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

Лабораторная работа №5. Тема – работа с записями, с массивами записей, с графикой.

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

Лабораторная работа №6.(сдал) Тема – работа с массивами записей.

В программе определить массив записей. Каждая запись хранит  информацию о работнике фирмы: табельный номер, ФИО, оклад, должность, пол. Заполнить массив с клавиатуры. Затем программа должна уметь ответить на следующие вопросы: 1) посчитать фонд зарплаты фирмы; 2) посчитать количество женщин и количество мужчин, работающих в фирме; 3) посчитать фонд зарплаты отдельно для мужчин и отдельно для женщин.

Лабораторная работа №7.(сдал) Тема – работа с записями с вариантами, графикой.

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

Лабораторная работа №8.(сдал) Тема – работа с множествами, со строками.

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

1) Идентификатор – последовательность букв и цифр, начинающаяся с буквы;

2) Число – последовательность цифр;

3) Лексемы больше-равно, меньше-равно, присвоить ( >=, <=, := ).

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

Лабораторная работа №9.(сдал) Тема – Работа с текстовыми файлами.

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

Лабораторная работа №10(сдал). Тема – работа с типизированными файлами, процедуры и функции.

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

Лабораторная работа №11. Тема – работа с типизированными файлами

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

Лабораторная работа №12. Тема – Нетипизированные параметры

Написать процедуру рисования полигона. Параметры: 1) адрес массива координат полигона (так как количество вершин каждый раз разное – параметр нетипизирован); 2) количество вершин полигона. В процедуре привести нетипизированный параметр к удобному для программиста типу и нарисовать полигон. Из основной программы обратиться к данной процедуре 3 раза, в качестве фактического параметра использовать различные структуры данных, хранящие координаты полигонов (например, массив записей, двумерный массив, одномерный массив).

Лабораторная работа №13. Тема – создание модулей.

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

Лабораторная работа №14. Тема – работа с процедурным типом. 

Написать программу, в которой определить массив графических маркеров (координаты X, Y, цвет), заполнить его данными при помощи генератора случайных чисел. Для рисования маркеров определить 3 процедуры (например, звездочка, крестик, кружок). Указанные процедуры использовать следующим образом:

1-й вариант: Написать процедуру визуализации, в которую передать в качестве параметров: 1) массив маркеров; 2) процедуру для рисования маркера (использовать параметр процедурного типа);

2-й вариант: В массив маркеров в записи добавить поле процедурного типа. При инициализации ему присваивать значение одной из процедур рисования маркеров. В процедуру визуализации передавать только один параметр – массив маркеров.

Лабораторная работа №15. Тема – рекурсия, косвенная рекурсия.

  1.  Написать программу для определения четно или нет количество символов введенной строки, для этого использовать косвенную рекурсию. Переделать косвенную рекурсию в прямую. (См. лекцию по теме «Рекурсия»).
  2.  Написать программу, которая рисует на экране полигон (при помощи мыши), после указания точки внутри полигона, полигон закрашивается. Использовать рекурсивный алгоритм закраски.

Лабораторная работа №16. Тема – тестирование алгоритмов поиска.

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

Лабораторная работа №17. Тема – тестирование алгоритмов сортировки.

Создать модуль, в который включить все изученные алгоритмы сортировки. Измерить время работы каждого алгоритма в различных условиях – 1)  сортируемый массив имеет сравнительно небольшие размеры и 2) сравнительно большие размеры. Для каждого варианта проанализировать еще три ситуации: 1) массив почти упорядочен; 2) массив почти упорядочен в обратном порядке; 3) массив заполнен случайными значениями. Результаты представить при помощи диаграмм в программе Excel.

Лабораторная работа №18. Тема – работа со связанными списками.

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

1) создать маркер;

2) удалить маркер;

3) переместить маркер;

4) перерисовать все;

5) удалить все маркеры;

6) выход.

Кроме того, на экране появляется меню для выбора типа маркера (*, +, о), а также меню для выбора цвета – палитра. Активный пункт каждого меню выделяется красным цветом. Каждый маркер при создании помещается в связанный список. Выполнение каждой команды сопровождается соответствующей операцией со списком.

Лабораторная работа №19. Тема – работа с двусвязанными кольцами.

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

1) создать ломаную линию;

2) удалить ломаную линию;

3) добавить точку в ломаную линию;

4) переместить точку в ломаной линии;

5) удалить точку в ломаной линии;

6) перерисовать все;

7) удалить все ломаные линии;

8) выход.

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

Лабораторная работа №20. Тема – работа с двоичными деревьями поиска.

  1.  Написать программу «частотный словарь». С клавиатуры вводятся слова, которые помещаются в двоичное дерево поиска. После окончания ввода слова выводятся на экран в алфавитном порядке (использовать обратный обход) с указанием частоты появления каждого слова.
  2.  Написать программу для регистрации участников семинара. Информация о каждом участнике – город, фамилия, организация. После регистрации информацию выдать на экран следующим образом: распечатать список городов по алфавиту и для каждого города список участников по алфавиту (названия городов поместить в двоичное дерево поиска, и в каждом его узле хранить ссылку на его двоичное дерево участников).

Лабораторная работа №21. Тема – создание объектно-ориентированных программ

Написать программу, в которой определить массив указателей на динамические объекты. Объекты – снежинки мерцающие и снежинки падающие. Они являются наследниками класса «снежинка». После инициализации визуализировать массив – для каждого его элемента вызвать виртуальный метод «проявить визуальный эффект».

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

  1.  Для чего предназначена интегрированная среда Turbo Pascal.
  2.  Назовите виды операторов Turbo Pascal.
  3.  Как работает условный оператор?
  4.  В каких случаях используется оператор варианта?
  5.  Для чего необходимы операторы цикла?
  6.  Назовите особенности оператора цикла с параметром.
  7.  Назовите особенности оператора цикла с предусловием.
  8.  Назовите особенности оператора цикла с постусловием.
  9.  В каких случаях следует применять тот или иной оператор цикла?
  10.  Приведите классификацию типов Turbo Pascal
  11.  Расскажите о простых типах Turbo Pascal.
  12.  Расскажите о стандартных простых типах Turbo Pascal?
  13.  Назовите особенности скалярных типов Turbo Pascal.
  14.  Какие операции допустимы над переменными логического типа?
  15.  Каковы особенности массивого типа?
  16.  Каковы особенности записного типа?
  17.  Расскажите об операторе присоединения.
  18.  Расскажите об операторе о записях с вариантами.
  19.  Расскажите о множествах (определения, примеры, операции).
  20.  Расскажите о представление множеств.
  21.  Назовите особенности файловых типов.
  22.  Расскажите об операциях над файлами.
  23.  Расскажите об операциях над текстовыми файлами.
  24.  Расскажите о типизированных файлах.
  25.  Расскажите о нетипизированных файлах.
  26.  Что такое процедуры и функции?
  27.  Что такое описание процедуры, оператор процедуры?
  28.  Что такое локальные и глобальные переменные?
  29.  Что такое параметры?
  30.  Что такое фактические и формальные параметры?
  31.  Что такое параметры-значения?
  32.  Что такое параметры-переменные?
  33.  Что такое параметры-константы?
  34.  Расскажите о процедурном типе, о передаче процедур и функций в качестве параметра.
  35.  Назовите директивы, используемые при описании процедур и функций.
  36.  Расскажите о необходимости и преимуществах использования модульного программирования.
  37.  Какова структура модуля в языке Pascal?
  38.  Что такое рекурсия?
  39.  Сравните рекурсию и итерацию.
  40.  Поясните особенности алгоритма линейного поиска.
  41.  Поясните особенности алгоритма поиска делением пополам (двоичного поиска).
  42.  Что такое сортировка?
  43.  Поясните особенности алгоритма сортировка простыми включениями.
  44.  Поясните особенности алгоритма сортировки бинарными включениями.
  45.  Поясните особенности алгоритма сортировки простым выбором.
  46.  Поясните особенности алгоритма сортировки простым обменом (метод пузырька).
  47.  Поясните особенности алгоритма сортировки Шейкер-сортировка.
  48.  Поясните особенности алгоритма сортировки включениями с убывающими приращениями (сортировка Шелла).
  49.  Поясните особенности алгоритма сортировки с разделением (быстрая сортировка).
  50.  Что такое ссылочные типы?
  51.   Расскажите о динамических структурах данных.
  52.   Как происходит создание и уничтожение динамических  переменных?
  53.  Что такое связанные списки?
  54.  Поясните процессы создания очередного элемента связанного списка и просмотра списка.
  55.  Как добавить компоненту в середину списка?
  56.  Как исключить компоненту из середины списка?
  57.  Как происходит рекурсивная обработка списка?
  58.  Что такое двусвязные кольца?
  59.  Что такое деревья?
  60.  Что такое двоичные деревья?
  61.  Дайте определение двоичного дерева поиска.
  62.  Как добавить узел к двоичному дереву поиска?
  63.  Расскажите о поиске в двоичном дереве.
  64.  Расскажите о просмотре двоичного дерева.
  65.  Поясните алгоритм удаления из двоичного дерева поиска.
  66.  Расскажите о деревьях общего вида.
  67.  Назовите основные концепции ООП.
  68.  Что такое абстрактные типы данных?
  69.  Что такое инкапсуляция?
  70.  Что такое наследование?
  71.  Что такое полиморфизм?
  72.  Что такое позднее связывание?
  73.  Объясните механизм работы виртуальных методов.
  74.  Что такое конструкторы и деструкторы?

8 СОДЕРЖАНИЕ ОТЧЕТА

Отчет должен содержать следующую информацию:

  1.  распечатанную программу на паскале;
  2.  результат работы программы;
  3.  теоретические выводы о работе программы.

9 СПИСОК ЛИТЕРАТУРЫ

1*. Грогоно   П.,   Программирование на  языке   Паскаль/    Пер.  с  англ.  СП. Забродина, А. В. Шалащова. M.: Мир, 1982, С.

2. Вирт Н. Алгоритмы и структуры данных, Невский Диалект, 2005.

3. Зуев Е.А., Язык программирования Turbo Pascal 7.0, М.: Унитех , 1997.

4. Фаронов В.В. Turbo Pascal, BHV, 2007.

5. Грис Д., Наука программирования. М: Мир , 1984., 416 с.

6. Гудман С, Хиндетниеми С., Введение в разработку и анализ алгоритмов, М.: Мир, 1981.,368 с.

7. Райли Д., Абстракция и структуры данных. Вводный курс, М.: Мир, 1993.

  1.  Лингер Р., Миллс X., Уитт Б., Теория и практика структурного программирования, М.: Мир, 1982.,406с.
  2.  Лэнгсам И., Огенстайн М., Тененбаум А., Структуры данных для персональных ЭВМ, М.: Мир, 1989., 568 с.

10. Града Буч,  Объектно-ориентированное  программирование с примерами применения. / Пер. с англ., М.: Конкорд, 1992.

11*.    Turbo Pasacl with Objects Version 7.0 Borland International, 1992.

12. Ахо А.В., Ульман Дж., Хопкрофт Дж., Структуры данных и алгоритмы, Вильямс, 2010.

13. К. Зиглер, Методы проектирования программных систем, М.: Мир, 1985., 328 с.

* Данная книга отсутствует в библиотеке

PAGE  18




1. криминалистические; товароведческие; физикотехнические; технические; экономические- бухгалтерски
2. Методика ранжування вразливостей 2
3. Обслуговуюча праця проходила педагогічну практику в Білокриницькій школі ІШ ступенів Кременецького рай
4. тема курса прокурорский надзор
5. тема моральной регуляции личности
6. Производство строительных изделий и конструкций; 2903 Промышленное и гражданское строительство; 2905 Го
7. Карачаровский механический завод КМЗ приобрело контрольный пакет акций ОАО Мослифтмонтаж.html
8. Когда говорят о характере то обычно подразумевают под этим именно такую совокупность свойств и качеств лич
9. основопол. Принцип котор
10. Внутренние законы развития языка и проблема грамматической аналогии
11. реферату- Конституційні акти ЗУНРРозділ- Історія України Конституційні акти ЗУНР 18 жовтня 1918 p
12. Межкультурные коммуникации в белорусской студенческой среде
13. Задание 1 Вопрос- Число всевозможных размещений определяется по формуле- Выберите один из 4 вариантов
14. тема социологии Она описывает социальное неравенство в обществе деление социальных слоев по уровню доходов
15. Расчет цикла паротурбинной установки
16. Завдання на практичне заняття На підставі індивідуального завдання таблиця 8
17. ТЕМАТИЧЕСКИЙ ПЛАН пп Наим
18. Германия Австрия Польша Прага Дрезден Чешский Крумлов Карловы Вары Вышеград ~ замок Чешский Ш
19. курсовой проект Курсовой проект состоит из двух частей- теоретической и расчётной.
20. УСТАВ ВНУТРЕННЕЙ СЛУЖБЫ ВООРУЖЕННЫХ СИЛ РОССИЙСКОЙ ФЕДЕРАЦИ