Методические указания к проведению лабораторных работ. Специальность 230102 «Автоматизированные системы обработки информации и управления»




Скачать 255.51 Kb.
НазваниеМетодические указания к проведению лабораторных работ. Специальность 230102 «Автоматизированные системы обработки информации и управления»
Дата публикации27.09.2013
Размер255.51 Kb.
ТипМетодические указания
skachate.ru > Информатика > Методические указания


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

КАФЕДРА ИТ-7

ДИСЦИПЛИНА «Программирование на языке высокого уровня (часть1)»

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


к проведению лабораторных работ.

Специальность 230102 «Автоматизированные системы

обработки информации и управления»

Москва 2007



УТВЕРЖДАЮ

Проректор по научной работе

__________________________

«___»_____________2007 г.


АННОТАЦИЯ


Настоящие методические указания предназначены для оказания методической помощи студентам 1-го курса при выполнение лабораторных работ по курсу «Программирование на языке высокого уровня (часть 1)»

Авторы: Скворцова Т.И., , Петров О.М.

Научный редактор: проф. Петров О.М.

Рецензент: проф. Филаретов Г.Ф. (МЭИ)

Рассмотрено и одобрено на заседании кафедры ИТ-7

«___»_________2007г. Зав.каф.ИТ-7 Петров О.М.'

Ответственный от кафедры за выпуск учебно-методических материалов________________________________

ВВЕДЕНИЕ

Методические указания предназначены для подготовки студентов к самостоятельному выполнению лабораторных работ по курсу "Алгоритмические языки и прог­раммирование" (часть 1), где изучается программирование на языке Турбо Паскаль(7.0).

Краткие сведения о работе в интегрированной среде Турбо Паскаль(7.О) приведены в разделе 1 данных указаний.

Для успешного выполнения и защиты лабораторной работы следует предварительно ознакомиться с соответствующим теоретическим мате­риалом по конспекту лекций и рекомендуемой литературе. При подго­товке к лабораторным работам 1 , 2, 3, 4, 5 студент заранее получает инди­видуальное задание и готовит текст программы, с которым приходит в день занятий в дисплейный класс.

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

1.Уроки практической работы в интегрированной среде разработчика Турбо Паскаля 7.0

1.1.3апуск среды.

Для запуска среды достаточно, находясь в каталоге, содержащем систему Турбо Паскаля, в ответ на подсказку DOS набрать TURBO и нажать клавишу Enter. При этом запустится программа TURBO.EXE, которая и вызовет среду. Для выхода из среды наберите Alt -X.

^ 1.2. Первое знакомство. Основное меню.

При входе в интегрированную среду Турбо Паскаля 7.0 на экране появляется окно, в верхней части которого высвечивается полоса с надписями-заголовками секций меню, перечисляющими услуги, пре­доставляемые средой:
^

File Edit Search Run Compile Debug Tools Options Window Help


Вход в меню осуществляется одновременным нажатием клавиш Alt и клавиши с буквой, выделенной в заголовке нужной секции меню. Например, для входа в секцию File необходимо нажать Alt-F. Другим способом входа в меню является нажатие функциональной клавиши F10 с последующим перемещением в нужную позицию меню с по­мощью курсора (вправо или влево). Выбранная позиция меню подсве­чивается. При нажатии клавиши Enter подсвеченная секция меню рас­крывается в виде окна, содержащего дальнейшую детализацию меню.

Например, если в меню оказывается подсвеченной секция Edit, то при нажатии клавиши Enter раскрывается следующее окно:




^ Restore line Cut

Copy

Paste

Copy Example

Show clipboard

Clear


Shift-Del

Ctrl-Ins

Shift-Ins

Ctrl-Del

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

Например, для выполнения действия «Copy» можно, находясь в меню, с помощью курсора «наехать» на нужную позицию, подсветив ее, и нажать клавишу Enter. Другим способом является использование клавиш. Не входя в меню, можно выполнить операцию «Copy», нажав клавиши Ctrl-Ins.

Для выхода из меню достаточно нажать клавишу Esc.

1.3. Работа в редакционном окне. Создание программы.

Нажмите F10, чтобы войти в полосу меню, а затем «наедьте» кур­сором на позицию File, нажмите Enter (либо наберите Alt-F). Раскры­вается секция меню File:

Open F3

New

Save F2

Save as

Save all

Change dir

Print

Get info

dos shell
^

Exit Alt-X




Выберите строку New, нажмите клавишу Enter. На экране раскры­вается пустое окно, озаглавленное NONAMEOO.PAS. Это имя, данное средой по умолчанию Вашей будущей программе. Если Вы повторите операцию, раскроется еще одно окно, но уже с именем NONAME01.PAS. Таким образом, можно раскрыть достаточное число редакционных окон. Для переключения окон достаточно, удерживая нажатой клавишу Alt, нажать клавишу с цифрой - окна пронумерова­ны. Например, для возврата в первое окно нужно набрать Alt-1.

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

program Summa;

var

A,B,Sum; integer;

begin

Write ('Введите два числа:');

Readln(A,B);

Sum:=A+B;

Writeln ('Сумма равна',Sum);

Write('Нажмите Enter');

Readln;

end.

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

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

Для сохранения программы на диске выберите команду Save as из меню File. Турбо Паскаль открывает диалоговый окно Save File As для переименования файла и сохранения его в другом каталоге (директо­рии) или на другом диске.

Save File As




Save file as








Ok


Files


Cancel




Help





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

Во входном боксе Save file as записывается имя, под которым Вы собираетесь запомнить файл (либо файловая маска для бокса Files).В нашем случае необходимо набрать SUMMA.PAS и нажать Enter. Рассмотрим детальнее остальные элементы диалогового бокса.

Бокс Files содержит имена файлов в текущем каталоге (директо­рии), в соответствии с маской, установленной в боксе Save file as.

Например, если в боксе Save file as записано *.pas,to в боксе Files появятся имена всех файлов каталога, содержащие расширение .PAS.

Список предыстории добавляет к входному боксу все имена, кото­рые появлялись в нем во время последних вызовов диалогового окна. В список предыстории можно войти в том случае, если справа от входного бокса Save file as видите стрелку «вниз». Для входа в список следует нажать курсор «вниз». Этот список используется для повторного вхож­дения в текст, в который Вы уже входили.

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

Если выбор не сделан, для выхода из списка предыстории нажмите клавишу^ Esc. Информационная панель отображает путевое имя вы­бранного файла, его имя, дату, время создания и размер.

Переключатель О служит для подтверждения выполненных дей­ствий.

Кнопка^ CANCEL отменяет все действия и выводит из диалогового окна.

Кнопка HELP выводит окно с подсказкой.

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

Для компиляции программы выберите опцию Compile в основном меню, для чего нажмите F10, С.

Секция содержит подменю:




^ Compile Alt-F9

Make F9

Build

Destination (memory, disk)

Primary file
Команды меню Compile используются при компиляции и реализа­ции операций Make и Build.

Команда Compile компилирует файл в активном редакционном окне. При компиляции или выполнении команды Make на экране вы­свечивается бокс состояния с результатами. После завершения компи­ляции или команды Make для ликвидации окна статуса компиляции достаточно нажать любую клавишу.

При обнаружении ошибки в верхней части редакционного окна появляется сообщение.

Команда Make включает встроенный Project Manager для создания файла .ЕХЕ.

Файлы рекомпилируются в соответствии со следующими правила­ми:

  • Если Compile/Primary File содержит в списке первичный файл, он компилируется, в противном случае компилируется последний файл, загруженный в редактор. Турбо Паскаль проверяет все файлы, от которых зависит компилируемый файл.

  • Если исходный файл для данного модуля (Unit) модифицировал­ся после того, как объектный код (.TPU) файла был создан, модуль перекомпилируется.

  • Если интерфейс для данного модуля изменен, все другие модули, от него зависящие, перекомпилируются.

  • Если модуль использует .OBJ file и он новее, чем .TPU file данного модуля, модуль перекомпилируется.

  • Если модуль включает Include file и он новее, чем .TPU file данного модуля, модуль перекомпилируется.

Команда Build перестраивает все файлы независимо от их новизны. Команда идентична команде Make, но не является условной (Make перестраивает только файлы, не являющиеся текущими).

Команда Destination Memory (Disk) определяет место запомина­ния выполняемого кода в памяти или на диске (как файл .ЕХЕ).

Устанавливая Destination Disk, Вы увеличиваете память, доступ­ную среде для компиляции и отладки программы.

При установке Destination Memory при выходе из среды код исче­зает.

Замечание. Даже если Destination установлена в память, любые модули, рекомпилированные с помощью Make или Build, хранят свои обновленные файлы .TPU на диске.

При установке Destination на диск Турбо Паскаль создает файл .ЕХЕ, имя которого выводится из двух имен следующим образом:

  • имя первичного файла

ИЛИ

  • если не определено первичное имя, то назначается имя файла в активном редакционном окне.

Турбо Паскаль запоминает результирующий .ЕХЕ в том же ката­логе, что и исходный файл или в каталоге, заданном в установке ЕХЕ & TPU Directory меню Options/Directories.

Переустановка команды Destination происходит нажатием клави­ши Enter (установка Destination Memory сменится на Destination Disk и наоборот).

Итак, выполните команду Compile.

После начала компиляции в центре экрана появляется окно с ин­формацией о процессе компиляции. Если во время компиляции не обнаружено ошибок, в этом окне появится сообщение «Compilation successful: press any key» (компиляция успешна: нажмите любую кла­вишу).

Окно остается на экране до тех пор, пока Вы не нажмете клавишу.

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

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

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

Для пуска программы выберите секцию Run в основном меню. Секция содержит подменю:




Run

Program reset Go to cursor Trace into

Step over Parameters


Ctrl-F9 Ctrl-F2 F4

F7

F8

Команды меню Run позволяют запускать программу на выполне­ние, начинать и заканчивать сеанс отладки.

Команда Run запускает Вашу программу на выполнение. При этом используются любые параметры, передаваемые ей командой Run/Parameters.

Если исходный код модифицировался после последней компиля­ции, компилятор автоматически сделает Make и свяжет программу.

Если отладка программы Вами не планируется, установите [х] Standalone в диалоговом окне Debugging меню Options/Debugging до начала компиляции и сборки.

Если программа компилируется с установкой [х] Integrated в диа­логовом боксе Debugging, результирующий исполняемый код будет со­держать отладочную информацию, действующую на команду Run сле­дующим образом:

1). Если Вы не модифицировали исходный код после последней компиляции, команда Run заставляет Вашу программу выполняться до точки прерывания или до конца, если точки прерывания не установле­ны.

2). Если Вы модифицировали исходный код после последней ком­пиляции и:

  • если Вы не делаете пошагового прогона программы, компилятор перекомпоновывает Вашу программу и устанавливает ее для работы с самого начала;

  • если Вы уже делаете пошаговый прогон, используя команды меню Run/Step Over или Run/Trace Into, Турбо Паскаль спрашивает у Вас, хотите ли Вы перестроить программу,

    • если Вы отвечаете Yes, компилятор делает Make и Link и устанав­ливает программу на работу с самого начала,

    • если Вы отвечаете No, Ваша программа выполняется до следующей точки прерывания (или до конца, если такой точки нет).

Команда Program reset останавливает текущую отладку, освобож­дает память, занятую программой и закрывает все файлы, используе­мые программой.

Команда Go to cursor пускает программу от места останова (под­свеченная строка исходного текста в редакционном окне) до строки, возле которой установлен курсор. Если курсор находится на строке, не содержащей выполняемых операторов, Турбо Паскаль высвечивает предупреждение. Эта команда может инициировать отладку. Команда не устанавливает постоянной точки прерывания, но позволяет про­грамме останавливаться на уже установленных постоянных точках, встречающихся до строки, помеченной курсором. Если это произойдет, необходимо снова воспользоваться командой Go to cursor. Удобно использовать эту команду для предварительной установки run bar (под­свеченной строки, на которой остановлена отладка).

Команда Trace into пускает Вашу программу построчно (оператор за оператором). При достижении процедуры команда начинает поопе­раторное выполнение процедуры (в отличие от команды Step Over, выполняющей процедуру за один шаг).

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

Команда Parameters вы водит диалоговое окно, в котором вводятся аргументы текущей программы (точно так, как это делается в DOS).
^

Program Parameters





Parameter



^ Ok Cancel Help

Нельзя использовать команды DOS, имеющие направление (< и >) Итак, Вы в меню Run. Выберите команду Run. Вы попадете в окно пользователя, появится сообщение:

Введите два числа:

Наберите два любых целых числа с пробелом между ними и нажми­те Enter. Появится следующее сообщение:

Сумма равна

а за ним - сумма двух чисел. В следующей строке появится сообще­ние:

Нажмите клавишу Enter

Программа будет ожидать нажатия клавиши Enter. Для наблюде­ния за выводом из своей программы, выберите команду User Screen в меню Window (или нажмите Alt-F5).

1.7. Отладка программы.

Продемонстрируем использование интегрированного отладчика встроенного в среду Турбо Паскаля 7.0.

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

Для начала сеанса отладки, выберите команду Trace Into меню Run (или нажмите F7). Run bar (подсвеченная полоса) устанавливается на первой строке (в данном случае begin).

Первое нажатие клавиши F7 инициализирует сеанс отладки. Те­перь нажмите F7, чтобы начать выполнение программы. Следующая выполнимая строка - оператор Write. Нажмите F7 снова. Появится экран пользователя. Это произойдет потому, что утверждение Readln ожидает ввода двух чисел. Наберите два целых числа, разделенные пробелом. Нажмите Enter. Вы вернетесь назад в редакционное окно, с run bar на операторе присваивания. Нажмите F7 и выполните оператор присваивания. Теперь полоса запуска находится на операторе Writeln. Нажмите F7 дважды. Теперь Вы должны выполнить Readln. Нажмите F7, посмотрите вывод своей программы, и затем нажмите Enter. Нажми­те F7 и Вы выйдете из программы.

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





^ Evaluate modify Ctrl-F4 Watches

Toggle breakpoints Ctrl-F8 Break points


Add watch Ctrl-F7 Delete watch

Edit watch

Remove all watches

С екция содержит двухуровневое подменю

Войдите в Watches, а затем выберите команду Add Watch из ниж­него подменю.

Команда Add watch помещает наблюдаемое выражение в окно Watch. При выборе Add Watch отладчик открывает диалоговое окно Add Watch.

Во входном боксе Watch expression высвечивается выражение по умолчанию (то, на которое указывает курсор в редакционном окне). Для поиска и выбора другого выражения (из числа уже использовав­шихся) можно открыть список предыстории. Если Вы вводите допусти­мое выражение, нажав клавишу Enter или задействовав Ok, отладчик добавляет выражение и его текущее значение в окно Watch.
^

Add Watch




Watch expression






^ OK Cancel Help

Если окно Watch является активным, для введения нового выраже­ния для наблюдения нужно нажать клавишу Ins.

Наберите А в окне ввода Watch Expression и нажмите Enter. A появится в окне Watch вместе со своим текущим значением. Теперь используйте команду Add Watch для добавления В и Sum в окно Watch.

Выберите Trace Into в секции Run (или нажмите F7) для того, чтобы сделать шаг в своей программе. В окне Watch появятся А= 0, В = О, Sum = 0. Когда после ввода чисел Вы нажмете Enter и вернетесь в редакци­онное окно, значения А и В изменятся на введенные Вами. После выполнения оператора вычисления суммы изменится и значение Sum.

Итак, Вы умеете пользоваться средой для основных действий. Профессиональное овладение средой потребует от Вас некоторых дополнительных усилий. Действительно, меню содер­жит более 70 команд (мы с Вами рассмотрели только некоторые из них), большая часть открывает диалоговые окна.

Так, секция Options позволяет провести оптимальную настройку самой среды, секция Edit содержит команды передачи фрагментов из одного окна в другое либо внутри одного окна. Секция Search обеспе­чивает поиск и замену фрагментов. Секция Window позволяет изменять размер окон, а также способ их выдачи на экран. Наконец, секция Help поможет разобраться во всех тонкостях использования среды.

^ 2. Лабораторная работа N 1

Условный оператор и программирование разветвляющихся алгоритмов.

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

Пример первого задания.

Составить программу вычисления функции:

x^2+1, x<0

Y= x-2,1, x>п/2

Sinx, 0<=x<=п/2

Для произвольного X и вычислить значения Y(x) в точках:

Х1= -2,5 х2=-0,5 х3=1,5

Program Func;

Var

X,y:real;

Begin

Write(‘введите х=’); readln(x);

If x<0 then

Y:=sqr(x)+1

else

if x>pi/2 then

else

y:=sin(x);

writeln( ' Y= ' , у: б: 3)

END.

Пример второго задания.

Составить программу определения произведения двух наименьших целых чисел А,В,С (А<>В<>С<>0) . Program mult;

var

max,a,b,с:integer;

mul:rea1;

BEGIN

writeln('вввдите 3 целых числа А,В,С'); readln(a,b,c);

max:= a ;

if b>max then max:=b;

if c>max then max:=c;

mul:=a *b*с /max ;

writeln('произведение двух наименьших=',mul:6:2

END.
^ 3. Лабораторная работа N 2.

Операторы цикла и программирование циклических алгоритмов.

Цель работы:

1. Изучение приемов программирования циклических алгоритмов с применением трех различных операторов цикла.

2. Изучение приемов программирования при работе с перечисляемыми типами .

Пример первого задания.

Найти сумму членов знакопеременного ряда.

S= (V2+3)/2-(V4+5)/4+…+(V34+35)/34- (V36+35)/36

Program sum_;

var

a,i:integer;

s : геа1 ;

BEGIN

s:=0;i:=2;a:=l;

while i< = 36 do

begin

s:=s+a*(sqrt(i)+(i+1))/i;

i:=i+2;

a:=-a

end;

writeln(‘s= ‘,s:6:2)

END.

Пример второго задания.

Составить программу табулирования функции:

E^x+Sin^2(x)+cos(x-2), x<=1

Y=

2^x+V(x+6), x>1

на отрезке х [0,2] с шагом h

Program tab_;

const

h:=0.2;

var

x:real;

BEGIN

x:=0;

while x ^ < = ( 2 + h / 2) do

begin

if x < = 1 then

у:=exp(x) +sqr(sin(x) )*соs(x-2)

else

у:=еxр(ln(2)*x)+sqrt(x+6);

writeln('x = ' , x : 5 : 2, ' у = ' , у : 6 : 2) ;

x:= x + h

end

END.

Пример третьего задания.

Определить по заданной дате (число, месяц, год.) дату следующего дня (число, название месяца, год).

Program data_;

type

mes= (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec);

day=1..31;

year=1900..2000;

var

d:day;

m:mеs;

g:year;

n:1..12;

BEGIN

Write(‘введите дату D,N,G’); readln(d,n.g);

Case n of

1:m:=jan;

2:m:=feb;

3:m:=mar;

4:m:=apr;

5:m:=may;

6:m:=jun;

7:m:=jul;

8:m:=aug;

9:m:=sep;

10:m:=oct;

11:m:=nov;

12:m:=dec;

end;

Case m of

Jan, mar, may, jul, aug, oct:

If d=31 then

begin

d:=1; m:=succ(m)

end

else

inc(d);

apr, jun, sep, nov:

If d=30 then

begin

d:=1; m:=succ(m)

end

else

inc(d);

dec:

If d=31 then

begin

d:=1; m:=jan; inc(g)

end

else

inc(d);

feb:

if ((d=28) and (not((g mod 400=0) or (g mod 4=0) and (g mod 100<>0)))

or (d=29) then

begin

d:=1; m:=mar;

end

else

inc(d);

end; {case}

writeln(‘дата следующего дня ‘);

write(d:2);

Case m of

Jan:write(‘января’);

Feb:write(‘февраля’);

Mar:write(‘марта’);

apr:write(‘апреля’);

may:write(‘мая’);

jun:write(‘июня’);

ju1:wгite( ‘июля‘ ) ;

aug:wгitе('августа' ) ;

sep:write('сентября');

oct:write('октября');

nov:wn te('ноября');

dec:write('декабря');

end;

write(g:5, ' года')

END.

^ 4. Лабораторная работа N 3.

Программирование типичных задач при работе с массивами.

Цель работы

1. Приемы программирования циклических алгоритмов для задач с обработкой одномерного и двумерного маcсивов.

2. Вывода элементов одномерного и двумерного маcсивов.

3. Изучение одного из видов сортировки одномерного массива.

Пример первого задания.

Дан массив А ( 4 , 5) целы я чисел. Переставить четвертый и пятый столбец местами.

Program change_;

Var

a:array[1..4,1..5] of integer;

i,n:byte;

buf:integer;

BEGIN

Writeln(‘введите элементы массива А (4*5)’);

Randomize;

For i:=1 to 4 do

For n:=1 to 5 do

a[I,n]:= integer(random(100))-50;

writeln(‘исходный массив А до перестановки’);

For i:=1 to 4 do

begin

For n:=1 to 5 do

Write(a[I,n]:4);

Writeln

End;

For i:=1 to 4 do

Begin

Buf:=a[I,4];

a[I,4]:= a[I,5];

a[I,5]:= Buf

End;

writeln(‘исходный массив А после перестановки’);

For i:=1 to 4 do

begin

For n:=1 to 5 do

Write(a[I,n]:4);

Writeln

End

End.

Пример второго задания.

Ввести n чисел. Отсортировать числа по возрастанию.

Program Sогt _;

type

size=l..100:

mas=array[size] of' integer;

var

arr_: mas;

i,n,k: size;

Buf: integer;

BEGIN

Write(‘введите количество сортируемых элементов массива ’);

Readln(n);

Writeln(‘введите элементы массива АRR_’);

Randomize;

For i:=1 to n do

Arr_[I]:= integer(random(100))-50;

writeln(‘исходный массив до перестановки’);

For i:=1 to n do

Write(arr_[i]:4);

Writeln;

For i:=1 to n-1 do

For k:=i+1 to n do

If arr_[i]> arr_[k] then

begin

buf:= arr_[i];

arr_[i]:= arr_[k];

arr_[k]:=buf

End;

writeln(‘исходный массив после перестановки’);

For i:=1 to n do

Write(a[i]:4);

End.


^ 5. Лабораторная работа N 4.

Процедуры и функции – элементы структуризации программ.

Цель работы

1. Использование подпрограмм (процедур и функций) для ввода/вывода векторов и матриц.

2. Использование подпрограмм (процедур и функций) для вставки и удаления элементов массива.

Пример первого задания.

Удалить из массива последний (в том случае, если их несколько) максимальный элемент.

Для решения задачи необходимо:

  • найти номер максимального элемента к;

  • сдвинуть все элементы, начиная с к+1-го на один элемент влево;

  • последнему элементу присвоить значение 0.


{$R+}

Program My;

Const

MaxN=10;la=-10;ha=21;{*Размер массива и интервал значений. *}

Type

MyArray=Array[1..MaxN] Of Integer;

Var

A:MyArray;

k:Integer;

Procedure Init(t,v,w:Integer; Var X:MyArray);{*Процедура формирования значений элементов массива. *}

Var

I:Integer;

Begin

Randomize;

For i:=1 To t Do

X[i]:=v+Integer(Random(w));

End;

Procedure Print(t:Integer;X:MyArray);{*Вывод t первых элементов массива X. *}

Var

i:Integer;

Begin

For i:=l To t Do

Write(X[i]:5);

WriteLn;

End;

Function Max(t:Integer;X:MyArray):Integer;

{*Поиск номера последнего максимального элемента.*}

Var

i,mx:Integer;

Begin

mx:=1;

For i: =2 To t Do

If X[i]>=X[Mx] Then Mx:=i;

Max:=Mx;

End;

Procedure Sz (t,q:Integer;Var X:MyArray);{*Сдвиг элементов массива влево на одну позицию, начиная с элемента с номером q+1. *}

Var

i:Integer;

Begin

For i:=q To t-1 Do

X[i] :=X[i+1] ;

X[t]:=0;

End;

Begin

n:=MaxN;

Init(n,la,ha,A) ;

WriteLn ('Исходный массив. ') ;

Print(n,A) ;

k:=Max(n,A);

Sz(n,k,A);

WriteLn(‘Массив после удаления элемента. ') ;

Print(n-1,A) ;

ReadLn;

End.

2. Даны 3матрицы (5*4,4*5,5*5), содержащие целые компоненты. Требуется в каждой матрице определить минимальный по модулю элемент. Распечатать ту, в которой находится больший из минимальных по модулю элемент. Считать, что такой элемент один.

{$R+}

Const

MaxN=5; МахМ=5;

Type

TMyArray=Array[l..MaxN,l..MaxM] Of Integer;

Var

A,B,C:TMyArray;

Res:array[1..3] of Integer;

M,n,max:Integer;

Procedure Init(t,v:Integer; Var X:TMyArray);{*Процедура формирования значений элементов массива. *}

Var

I,j:Integer;

Begin

Randomize;

For i:=l To t Do

For j:=1 To v Do

X[I,j]:=Integer(Random(50))-20;

End;

For i:=l To t Do

Procedure Print(t,v:Integer;X:TMyArray);{*Вывод элементов массива *}

Var

I,j:Integer;

Begin

For i:=l To t Do

Begin

For j:=1 To v Do

Write(X[I,j]:5);

WriteLn;

End;

End;

Function Min(t,v:Integer;X:TmyArray):Integer;{ Функция нахождения минимального по модулю элемента}

Var

i,j:Integer;

Begin

Min:=X[1,1]:

For i:=l To t Do

For j:=1 To v Do

If abs(X[I,j])
min:=X[I,j];

End;

Begin{*0сновная программа. *}

Init(5,4,A) ;

Init(4,5,B) ;

Init(5,5,C) ;

Writeln(‘Матрица А’); Print(5,4,A) ;

Writeln(‘Матрица B’); Print(4,5,B) ;

Writeln(‘Матрица C’); Print(5,5,C) ;

Res[1]:=Min(5,4,A);

Res[2]:=Min(4,5,B);

Res[3]:=Min(5,5,C);

Max:=Res[1];

For n:=2 to 3 do

If Res[n]>max then

begin

Max:=res[n];

M:=n

End;

Writeln(‘Матрица содержащая максимальный из минимальных по модулю’);

Case m of

1: Print(5,4,A) ;

2: Print(4,5,B) ;

3: Print(5,5,C) ;

End;

End.

^ 6. Лабораторная работа N 5.

Комбинированный тип данных.

Цель работы

  1. Использование записей при решении задач.

  2. Использование оператора присоединения.

Пример первого задания.

Для заданного количества (MaxN) ЭВМ определяется отношение стоимости к производительности. Производительность задается в миллионах операций в секунду отдельно для скалярных и векторных операций; стоимость - в долларах. Программа выбирает ЭВМ с минимальным отношением стоимости к производительности отдельно для скалярных и векторных операций и печатает характеристики.

Const

MaxN=5;

Type

Computer=record

Firma, namecomp:string[20];

Year:2000..2006;

Proizv:record

Scal, vect:Integer

End;

Price: Integer;

PriceToProizv:array[1..2] of real;

End;

Var

a: array[1..MaxN] of Computer;

I,j1,j2:Integer;

R1,r2:real;

Procedure In_Data; { Процедура ввода данных }

Begin

Writeln(‘введите данные ЭВМ’);

With A[I],proizv do

Begin

Write(‘введите название фирмы’);

Readln(firma);

Write(‘введите название comp’);

Readln(namecomp);

Writeln(‘введите характеристики’);

Readln(Year, Proizv, Scal, vect, Price);

PriceToProizv[1]:= price/scal;

PriceToProizv[2]:= price/vect;

End;

End;

BEGIN { основная программа}

Writeln;

For i:=1 to MaxN do

In_Data;

{ поиск ЭВМ с минимальным отношением стоимости к производительности отдельно для скалярных и векторных операций}

R1:=A[1].PriceToProizv[1]; j1:=1;{ для скалярных операций }

R2:=A[1].PriceToProizv[2]; j2:=2; { для векторных операций }

For i:=2 to MaxN do

With A[I] do

Begin

If PriceToProizv[1]
Begin

R1:=PriceToProizv[1]; j1:=i;

End;

If PriceToProizv[2]
Begin

R2:=PriceToProizv[2]; j2:=i;

End;

End;

{ Печать характеристик }

With A[j1],proizv do{ ЭВМ с min отношением ст/пр для скалярных операций}

Writeln(firma, namecomp,Year:5, Scal:8, vect:8, Price:8, PriceToProizv[1]:7:2, PriceToProizv[2]:7:2);

With A[j2],proizv do{ ЭВМ с min отношением ст/пр для векторных операций}

Writeln(firma, namecomp,Year:5, Scal:8, vect:8, Price:8, PriceToProizv[1]:7:2, PriceToProizv[2]:7:2);

End.

^ 7. Лабораторная работа N 6.

Множественный тип данных.

Цель работы

  1. Использование множеств при решении задач.

  2. Использование операций над множествами.

Пример первого задания.

Известен набор продуктов: хлеб, масло, сыр, молоко, имеющихся в ассортименте магазинов. В 3 магазина поставлены отдельные виды этих продуктов. Требуется построить множества А, В, С, которые содержат соответственно:

  • продукты, имеющиеся одновременно во всех магазинах;

  • продукты, имеющиеся, по крайней мере, в одном из магазинов;

  • продукты, которых нет ни в одном из магазинов.


Const

N=3;

Type

Product=(bread,butter,cheese,milk); {продукты }

Assort=set of product; {ассортимент продуктов }

Shop=array[1..n] of assort; {наличие продуктов в магазинах }
Var

M1:shop;

X: Product;

A,b,c,xm1: assort;

I,j,v,iw:integer;

BEGIN

For I:=1 to n do

Begin

Xm1:=[];

Writeln(‘введите номера продуктов ‘,I:2, ‘-го магазина=‘);

Repeat

Read(iw);

Case iw of

1:x:=bread;

2:x:=butter;

3:x:=cheese ;

4:x:= milk;

else

write(‘номера продуктов 1..4’);

end; {case}

xm1:=xm1+[x]; {наличие продуктов в одном магазине }

until eoln;

m1[1]:=xm1

end; {конец цикла по магазинам }

{получение множеств А,В,С }

A:=m1[1];

B:=[];

For I:=1 to 3 do

Begin

A:=A*m1[1]; ];{одновременно во всех }

B:=B+ m1[1{хотя бы в одном }

C:=[ bread.. milk]-B; {нет ни в одном }

End;

For I:=1 to 3 do

Begin

Case i of

1: Writeln(‘продукты, имеющиеся во всех магазинах ‘);

2: Writeln(‘ассортимент продуктов ‘);

3: Writeln(‘продукты, которых нет ни в одном магазине ‘);

end;

For x:=bread to milk do

If x in a then

Case x of

Bread: Write(‘хлеб ‘);

Butter: Write(‘масло ‘);

Cheese: Write(‘сыр ‘);

Milk: Write(‘молоко ‘);

end; {case}

if I:=1 then a:=b

else

a:=c;

writeln

end

end.
Рекомендуемая литература:

  1. В.В. Попов Паскаль и Дельфи . Учебный курс. - СПб.: Питер, 2005.

  2. Г.Г. Рапаков, С.Ю. Ржеуцкая Turbo Pascal для студентов и школьников СПб.: БХВ-Петербург, 2005.

  3. А.Б.Ставровский Турбо Паскаль 7.0. Учебник.- К.: Торгово-издательское бюро BHV, 2000.

  4. С.М. Окулов Основы программирования – М.: ЮНИМЕДИАСТАЙЛ, 2002



Похожие:

Методические указания к проведению лабораторных работ. Специальность 230102 «Автоматизированные системы обработки информации и управления» iconМетодические указания к выполнению контрольных работ для студентов...
Методические указания предназначены для студентов iv-го курса заочной формы обучения специальности 230102 “Автоматизированные системы...
Методические указания к проведению лабораторных работ. Специальность 230102 «Автоматизированные системы обработки информации и управления» iconМетодические указания по дипломному проектированию для студентов...
Методические указания предназначены для использования студентами специальностей 220300 Системы автоматизированного проектирования,...
Методические указания к проведению лабораторных работ. Специальность 230102 «Автоматизированные системы обработки информации и управления» iconПрограмма 2 курса весенний семестр Специальность 230102. 65 «Автоматизированные...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Методические указания к проведению лабораторных работ. Специальность 230102 «Автоматизированные системы обработки информации и управления» iconПрограмма 1 курса весенний семестр Специальность 230102. 65 «Автоматизированные...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Методические указания к проведению лабораторных работ. Специальность 230102 «Автоматизированные системы обработки информации и управления» iconПрограмма 3 курса весенний семестр Специальность 230102. 65 «Автоматизированные...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Методические указания к проведению лабораторных работ. Специальность 230102 «Автоматизированные системы обработки информации и управления» iconПрограмма 4 курса весенний семестр Специальность 230102. 65 «Автоматизированные...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Методические указания к проведению лабораторных работ. Специальность 230102 «Автоматизированные системы обработки информации и управления» iconРабочая программа Практика «Стажировка» Специальность 230103 «Автоматизированные...
Специальность 230103 «Автоматизированные системы обработки информации и управления»
Методические указания к проведению лабораторных работ. Специальность 230102 «Автоматизированные системы обработки информации и управления» iconМетодические указания проведения практики по дисциплине «Основы алгоритмизации...
Специальность 2202 «автоматизированные системы обработки информации и управления»
Методические указания к проведению лабораторных работ. Специальность 230102 «Автоматизированные системы обработки информации и управления» iconДискретная математика
Колесников А. В. Дискретная математика/ Задания и методические указания к курсовой работе для студентов специальностей 230102. 65...
Методические указания к проведению лабораторных работ. Специальность 230102 «Автоматизированные системы обработки информации и управления» iconМетодические указания по выполнению курсовой работы для студентов...
Курсовая работа – один из наиболее активных видов самостоятельной работы студентов высших учебных заведений

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2014
контакты
skachate.ru
Главная страница