Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · web viewФ СО ПГУ...

88
Титульный лист методических рекомендаций и указаний; методических рекомендаций; методических указаний Форма Ф СО ПГУ 7.18.3/40 Министерство образования и науки Республики Казахстан Павлодарский государственный университет им. С. Торайгырова Кафедра информатики и информационных систем МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ И УКАЗАНИЯ к лабораторным работам студентов по дисциплине «Алгоритмизация и языки программирования» для специальности 5В070300 «Информационные системы»

Upload: others

Post on 09-Jul-2020

20 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

Титульный лист методических рекомендаций и указаний;

методических рекомендаций; методических указаний

ФормаФ СО ПГУ 7.18.3/40

Министерство образования и науки Республики Казахстан

Павлодарский государственный университет им. С. Торайгырова

Кафедра информатики и информационных систем

МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ

И УКАЗАНИЯк лабораторным работам студентов

по дисциплине «Алгоритмизация и языки программирования»для специальности 5В070300 «Информационные системы»

Павлодар

Page 2: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

Лист утверждения методических рекомендаций и

указаний; методических рекомендаций; методических

указаний

ФормаФ СО ПГУ 7.18.3/41

УТВЕРЖДАЮПроректор по УР

_________ Пфейфер Н.Э.

««__» _______2009 г.

Составители: доцент Даутова А.З., ст.преподаватель С. Бельгибаева

Кафедра информатики и информационных систем

Методические указания

к лабораторным работам по дисциплине Алгоритмизация и языки программирования для студентов специальности 5В070300 Информационные системы

Рекомендовано на заседании кафедры “___” _____________20__г. Протокол №_________

Заведующий кафедрой_________________ А.Ж.Асаинова

Одобрено УМС факультета физики, математики и информационных технологий “____” ___________20__г. Протокол №_____

Председатель МС _______________Ж.Г. Муканова “___” _____________20__г.

ОДОБРЕНО:Начальник ОПиМОУП ____________ А.А. Варакута “___” _____________20__г.

Одобрено учебно-методическим советом университета“___” _____________20__г. Протокол №_________

Page 3: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

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

Тема: Программирование линейных структур алгоритма.

Цель работы: Ознакомиться с алфавитом языка Паскаль, операторами присваивания и ввода-вывода.

1.Теоретическое положение1.1.Общие сведения

Язык программирования Паскаль, названный в честь французского ученого Блеза Паскаля, разработан профессором Института информатики Швейцарской высшей политехнической школы Никлаусом Виртом в 1970 году. Язык Паскаль получил наибольшее распространение в микроЭВМ. Обладая сравнительной простотой, он представляет пользователю большие возможности для программирования широкого круга задач.

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

1. буквы латинского алфавита A, B, C… ;2. буквы русского алфавита А, Б, В,…Я (кроме Ъ);3. цифры 1,2,3,4,5,6,7,8,9;4. знаки арифметических операций:

+ - сложение;- - вычитание;*- умножение; / - деление;

5. специальные символы:. – точка;, − запятая;; − точка с запятой;: − двоеточие;’ – апостроф;( ) – круглые скобки; [ ] – квадратные скобки; −пробел;{ } – фигурные скобки;

6. знаки операций:> - больше;< - меньше;>= - больше или равно;<= - меньше или равно;= - равно;<> - не равно;:= - присвоить.

Page 4: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

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

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

1.3.КонстантыПостоянные величины, значения которых не меняются в процессе

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

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

Примеры записи чисел :Целые Действительные+4 2.651987 -11.862-100 0.537 -4.0Действительные числа могут быть записаны в показательной форме, где

десятичный порядок числа записывается буквой E. Так, например, одно и то же число – 0,000025 или −0,25∙10-4 на языке Паскаль записывается как –0.25Е-4 или –2.5Е-5.

Диапазон изменения целых чисел в Паскале ±32767, а вещественных ±1035. Если константа представлена в программе именем, то она должна быть описана в разделе описания констант, который начинается со служебного слова CONST.

Например:CONST N

PI=3.1415926;1.3.2.Символьные константы

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

Page 5: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

Например: ‘404’; ‘ХУС’; ‘Таблица значений’; ‘I Мая 2000г.’Если в строку необходимо включить сам апостроф, то его записывают

дважды.Например:‘Контрольная работа по курсу ‘Вычислительная техника’’.Длина символьной константы может достигать 255 символов.

1.4.ПеременныеВеличины, значения которых могут изменяться в процессе выполнения

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

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

Например: X, Y22M, Gamma, ALFA, R15, PTF3, IndMax.Переменные могут быть целыми, вещественными и символьными. Тип

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

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

Раздел описания переменных в программе начинается со служебного слова VAR (Variable – переменная).

Задание типа переменных осуществляется с помощью операторов описания типов переменных REAL (вещественный), INTEGER (целый), CHAR (символьный).

В общем виде описание переменных выглядит следующим образом:VAR V1, V2, V3, . . . Vn : T;где V1, V2, V3, . . . Vn – имена переменных, T– тип.Например:VAR N, K : INTEGER;

PI, MAX : REAL;SA, SB : CHAR;

В данном примере переменные N и K объявляются целыми, PI и MAX – вещественными, а SA и SB – символьными.

Необходимо помнить, что описание всех переменных программы обязательно!

1.5.Перечисляемые типы данныхВ разделе описания типов переменных пользователь сам может

определить некоторый тип данных, перечислить те значения, которые будут

Page 6: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

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

Например:TYPE COLOUR=(RED, YELLOW, GREEN, BLUE);

DAY=(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

Скалярный тип COLOUR (цвет) включает в себя значение RED (красный), YELLOW (желтый), GREEN (зеленый), BLUE (голубой), а скалярный тип DAY (день) включает в себя значение дней недели (Monday, Tuesday, . . . Sunday).

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

Например: VAR PAYDAY, DAYOFF : DAY;Переменные PAYDAY, DAYOFF объявлены как переменные типа DAY.

1.6. Оператор присваиванияОператор присваивания служит для вычисления значений выражения и

присваивания его переменной, расположенной слева от символа :=. Оператор имеет вид: A:=B, где A- имя переменной, B- выражение.

Примеры: X:=0.25, - переменной X присваивается значение 0.25; A:=T, - переменная A получает значение T; K:=K+0.3, - вычисляется новое значение K, изменяя

предыдущее на величину 0.3. 1.7.ВыраженияАрифметические выражения могут состоять из констант, переменных,

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

Обычная запись Запись на языке ПаскальZ:=A/B*C

A:=2*(SIN(4*X)+X)/(3*X)

Знак умножения ставится обязательно, иначе при записи 3х в виде 3Х, ЭВМ выдаст сообщение об ошибке.

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

1) вычисление функций;2) умножение и деление;3) сложение и вычитание.Выражение, заключенное в скобки, выполняется в первую очередь.

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

Таблица №1Стандартные арифметические функции языка Паскаль

Page 7: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

Запись на языке Паскаль Выполняемые функцииABS(X) | X |SQR(X) X2

SIN(X) SIN XCOS(X) COS XEXP(X) ex

LN(X) Ln xLOG(X) Lg xSQRT(X) Квадрат числа

ARCTAN(X) Arctg xTRUNC(X) Выделение целой части числаROUND(X) Округление числа

ODD(X) Определение нечетности числаPRED(X) Нахождение предыдущего элементаSUCC(X) Нахождение последующего элементаORD(X) Определение порядкового номера

символа Х в наборе символовCHR(X) Определение символа из набора символов

по порядковому номеруДля возведения переменной x в некоторую степень a, т.е. нахождения xa,

используется равенство: xa=ea·ln x.Тогда выражение xa на языке Паскаль имеет вид EXP(A*LN(X)).

Например, выражение будет записано следующим образом: EXP(1/3*LN(X+A)).Арифметические выражения будут давать целый результат, если все входящие в него операнды (константы, переменные, функции) относятся к целому типу и к ним применены следующие операции: +, -, *, а также DIV – деление нацело (с усечением), т.е. нахождения целой части числа, получаемого от деления двух целых операндов; MOD – выделение остатка от деления двух целых операндов. Операции DIV и MOD имеют тот же приоритет, что и операции /, *. Приведем примеры выполнения этих операций:

17 DIV 2=817 MOD 2=13 DIV 5=03 MOD 5=3

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

заканчивается точкой. Блок в свою очередь содержит раздел описаний и раздел операторов. Раздел операторов представляет собой так называемый составной оператор, включающий в себя последовательность исполняемых операторов, разделенных точкой с запятой ; и ограниченных операторами-скобками – служебными словами BEGIN (начало) и END (конец). Перед END точка с запятой не ставится.

В заголовке программы после служебного слова PROGRAM указывается имя программы, обозначающее всю программу в целом. После имени программы

Page 8: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

в круглых скобках следует список имени стандартного входного (INPUT) и выходного (OUTPUT) файлов. Например:

PROGRAM SUMMA (INPUT, OUTPUT);Во многих версиях языка Паскаль имена стандартных файлов в

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

Структура программы имеет следующий вид:PROGRAM имя;Раздел описания констант;Раздел описания переменных;BEGINПоследовательность операторов; РазделВывод результата операторовEND.Программу следует располагать структурировано:1) конструкция языка (описания, операторы, блоки) более глубоких

уровней вложенности сдвигать от начала строки вправо;2) конструкции языка одинаковых уровней располагать друг под друго3) каждое описание и каждый оператор писать с новой строки;4) продолжения описаний и операторов на новые строки сдвигать

вправо;5) избегать длинных строк.Под уровнем вложенности понимается следующее. Если некоторая

конструкция языка вложена в другую (расположена внутри нее), то ее уровень на единицу больше уровня внешней конструкции. Например, уровень оператора PROGRAM равен 0, описания CONST, VAR и составляет оператор BEGIN-END имеет уровень1, все операторы составного оператора имеют уровень 2.

1.9.КомментарииВ состав программы могут быть включены комментарии – тексты,

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

{комментарии}Комментарии могут быть вставлены в любое место программы и

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

1.10.Операторы ввода-выводаОператоры ввода-вывода обеспечивают программу исходными

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

1.10.1.Операторы вводаДля ввода данных используются следующие операторы:

Page 9: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

READ(b1, b2,…bn); READLN(b1, b2,…bn)READLN;где b1, b2, …bn – имена переменных.Оператор ввода обеспечивает чтение данных из стандартного файла

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

AI=4,3 M=0,38*104. K=5 Оператор ввода будет иметь вид: READ(AI, K, M);Исходные данные (файлы INPUT):4.3 5 0.38E4Исходные данные необходимо набрать с клавиатуры, разделяя их

значения пробелом.В результате выполнения оператора READ переменная A1 получит

значение 4.3, а переменные K и M соответственно 5 и 0.38 *104.Оператор READLN(b1,b2..bn); выполняется также как и оператор

READ, за исключением того, что по окончании чтения значения для последней переменной списка ввода осуществляется переход к началу новой строки.

Например, во фрагменте ввода READ(A1,K); READLN(M);числовые значения переменных A1, K, M располагаются на одной

строке4.3 5 0.38E4.Во фрагменте ввода READLN(A1,K); READ(M);числовые значения переменных A1 и K располагаются на одной строке,

а числовое значение переменной M на другой4.3 50.38E4.

Оператор READLN без списка ввода обеспечивает пропуск одной строки и переход к началу новой строки.

1.10.2. Операторы выводаДля вывода информации используются следующие операторы:

WRITE(b1,b2..bn);WRITELN(b1,b2..bn);WRITELN;где b1,b2..bn – имена переменных, подлежащих выводу. Оператор

WRITE(b1,b2..bn); выполняет вывод значений, соответствующих именам переменных в списке вывода. Выводимые значения размещаются в одной строке.

Оператор WRITELN(b1,b2..bn); выполняет вывод значений, соответствующих именам переменных в списке вывода. Выводимые значения размещаются в одной строке, затем происходит переход к новой строке.

Page 10: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

Например, во фрагменте вывода WRITE(A,H); WRITELN(V,R);

числовые значения переменных A, H, V, R располагаются на одной строке.

Например, во фрагменте вывода WRITELN(A,H); WRITE(V,R);

числовые значения переменных A и H располагаются на одной строке, а числовые значения переменных V, R – с первой позиции следующей строки.

Оператор WRITELN без списка ввода обеспечивает пропуск одной строки и переход к началу новой строки.

1.10.3. Стандартная форма вывода данныхФорма представления выводимых переменных определяется их

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

Для вывода данных символьного типа отводится число позиций, равное числу символов, составляющих значение данного. Например, оператор WRITE(8+6, SIN(3.141), ‘SONATA’ ); выведет следующие значения

_ _ _ _ _ _ _ _ _ _ _ 14_ 5.926573E-04

13 позиций 13 пози

1.10.4. Управление формой вывода данныхЕсли пользователя не устраивает стандартная форма вывода

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

Общий вид записи операторов при выводе значений целого типа имеет вид:

WRITE(b:m);WRITELN(b:m);

где b - имя выводимой переменной, m- поле, отводимое под запись значения.

Например: Вывести переменные D=105 и I=2016.По оператору вывода WRITE(D:4, I:6);Значение переменной D будет размещаться в четырёх позициях, а

переменной I- в шести. _ 105 _ _ 2016

Каждое значение переменной занимает крайние правые позиции отведённого поля, а незаполненные позиции образуют пробелы. Если значение переменной не размещается в отведённом поле, то число позиций увеличивается автоматически.

Page 11: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

При выводе значений действительного типа операторы вывода имеют вид:

WRITE(b:m:n);WRITELN(b:m:n);

где b- имя выводимой переменной, m- поле, отводимое под запись значения, n- часть поля, отводимого под дробную часть числа.

Например: Вывести переменные C=20.385 и R=8.1415.По операторам вывода WRITE(C:6:3); WRITELN(R:8:4);вывод значений переменных будет осуществлён в одной строке, где для

переменной C будет отведено шесть позиций, включая число позиций под дробную часть, а переменной R будет отведено восемь позиций.

20.385_ _ 8.1415Необходимо иметь в виду, что под десятичную точку также отводится

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

Например: При значении C=125.64*10-5 и T=223.58 по оператору вывода WRITE(C:11, T:13);

вывод значений переменных будет осуществлён в следующем виде: _1.2564E-03 _ _ _ 2.2358E+03

11 позиций 13 позицийПри выводе нескольких значений на одной строке для наглядности

задаются необходимым количеством пробелов. Для этого записывают оператор вывода в виде WRITE( _:q);

где q- число пробелов.Например: WRITE(A,’ ‘:4,B);Между значениями A и B обеспечивается интервал в четыре пробела.

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

Например: Вывести переменные A=1.22; B=-23.5; C=125; D=103044.WRITELN;

WRITELN(‘Вывод значений переменных ’);WRITE(‘A=’,A:4:2, ‘ ’:5);WRITELN(‘B=’,B:5:1);WRITE(‘C=’,C:3,’ ’:6,’D=’,D:6 ); WRITELN(‘ ’:3,’Конец вывода’);

Первый оператор вывода осуществляет подготовку для вывода с первой позиции новой строки информации, указанной во втором операторе вывода. Второй оператор вывода выводит на экран текст Вывод значений переменных и обеспечивает подготовку для вывода информации с первой позиции новой строки третьего оператора вывода. Третий оператор вывода выводит на экран текст A= и по формату 4:2 число 1.25, соответствующее переменной A, затем делает пять пробелов. Четвёртый оператор вывода выводит на экран в той же строке текст B= и по формату 5:1 число –23.5, после этого готовит вывод

Page 12: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

информации с новой строки для следующего оператора вывода. Пятый оператор вывода выводит на экран текст C= и по формату:3 число 125, соответствующее переменной C, затем делает шесть пробелов, выводит текст D= по формату:6. Шестой оператор делает три пробела и в той же строке выводит текст Конец вывода. На экране дисплея появится результат работы операторов вывода.

Вывод значений переменных A=1.22 _ _ _ _ _ B=-23.5C=125 _ _ _ _ _ _ 103044 _ _ _ Конец вывода

Пример: Составить программу вычисления общей поверхности и объёма круглого конуса, имеющего радиус основания 12,54 см и длину образующей 24,88 см. При вычислении используем равенства:S=πR2+πRL; V=1/3πR2H,где H-высота конуса, определяемая по формуле Программа будет иметь вид:Вычисление объёма конусаPROGRAM CONUS;CONST PI=3.1415926;VAR R,L,H,S,V:REAL;BEGIN

READ(L,R);S:=PI*R*R+PI*R*L;H:=SQRT(L*L-R*R);V:=PI*R*R*H/3;WRITELN(‘Параметры конуса’);WRITELN(‘R=’,R,’L=’,L,’H=’,H);WRITELN(‘Поверхность конуса’’);WRITELN(‘S=’,S);WRITELN(‘Объём конуса’’);WRITELN(‘V=’,V);

END. Программа начинается с комментария. В заголовке программы после

служебного слова PROGRAM указывается имя программы CONUS. Далее идёт раздел определения констант, обозначаемый словом CONST . В этом разделе константа π =3.1415926 обозначается именем PI, которое отождествляется с указанным числовым значением. Раздел описания переменных начинается со служебного слова VAR, где переменные R, L, H, S, V описаны как вещественные. В операторной части программы (после BEGIN) первым оператором является оператор ввода исходных данных L и R. В результате его выполнения переменная получает значение 12,54, а L= 24,88. В первом операторе присваивания вычисляется значение переменной S, во втором- H и в третьем- V. Далее следуют операторы вывода на печать текстов, заключённых в апострофы, и значений переменных R, L, H-во втором операторе вывода, S-в четвёртом, V-в шестом. Вывод значений переменных будет осуществлён в

Page 13: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

стандартной форме. Конец программы обозначается словом END, после которого ставится точка.

2.Задание2.1. Взять задание из таблицы №1 и написать программу для вычисления переменной R, используя для ввода данных, операторы READ и READLN. Вывести значения исходных данных, подобрав к ним форматы по операторам WRITE и WRITELN. Значение переменной R вывести в стандартной форме.2.2. Взять задание из таблицы №2 и записать математическую запись арифметического выражения.

3.Содержание отчётаОтчёт должен содержать:1) задание к работе;2) программу;3) результаты расчётов.

Контрольные вопросы1) Алфавит языка Pascal.2) Какие типы величин используются в языке Pascal, как они записываются.3) Как обозначаются переменные в Паскале?4) Операторы описания типа переменных.5) Порядок выполнения действий в арифметическом выражении.6) Общий вид оператора присваивания.7) Какова структура программы на языке Паскаль?8) В чем различие операторов ввода READ и READLN?9) Каким образом в программу включаются комментарии?10) В чем различие операторов вывода WRITE и WRITELN?11) Стандартная форма вывода данных.12) Каким образом происходит управление формой вывода данных?

Таблица №1№

варианта Задание Исходные

данные1. с=3

x=0,64y=5,1

2. m=0,8t=4a=2,25

3. y=0,8x=3,0i=4,6a=1.5

Page 14: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

4. a=3,1b=1,4d=0,06

5. m=0,2x=0,17

6. g=0,91a=3x=1i=2,4

7. m=0,8p=1,7k=4x=0,005

8. k=3,7a=2,61x=10

9. c=1,2s=2a=6

10. t=5,6k=2,8x=0,7

11. b=5,8a=2x=1,62

12. y=2m=3,25

13. f=2,81c=-2

Page 15: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

14. y=3k=5,6x=1,8

15. a=0,15k=4,8

16. k=0,6y=2,31a=3

17. b=3,8m=1,73t=2,4z=1,4

18. y=9,41a=5,1k=4

19. b=-3c=5,6k=0,14

20. m=0,6a=-2w=1,38

21. b=3,7a=0,6z=2,52

22. x=-5,8i=2y=0,25

Page 16: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

23. k=2,34b=1,05a=0,03

24. m=0,08x=1,9a=2b=4,4

Таблица №2№ вари-

антаЗадание

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.

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

Тема: Программирование разветвляющихся структур алгоритма.

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

Page 17: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

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

1.1. Оператор условного перехода Разветвляющийся вычислительный процесс, содержащий две ветви, схематично может быть изображен с помощью структуры выбора (структуры разветвления), которая содержит три элемента: логическое условие, ветвь ДА и ветвь НЕТ. Общий вид структуры представлен на рис.1. После вычислений, общих для обеих ветвей (блок 1), проверяется некоторое условие (блок 2). Если оно выполняется, то осуществляется переход к первой ветви – ветви ДА (блок 3), в противном случае – ко второй ветви – ветви НЕТ (блок 4). После выполнения вычислений в любой из ветвей осуществляется переход к общему участку 2 (блок 5). Структура выбора в языке Паскаль реализуется с помощью условного оператора (оператора условного перехода), который позволяет выполнять один из двух входящих в него операторов в зависимости от значения некоторого логического выражения. Оператор имеет следующий вид:

ΙF < логическое выражение >THEN < оператор 1 >

ELSE < оператор 2 >; Где IF (если), THEN (то), ELSE (иначе) – служебные слова; оператор 1, оператор 2 – любые операторы языка.

Общий участок вычислений 1

условие

Первая ветвь вычислений (ветвь ДА)

Вторая ветвь вычислений (ветвь НЕТ)

Общий участок вычислений 2

Page 18: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

Рис.1. Порядок выполнения условного оператора поясняется рис. 2. Если значение логического выражения равно true (истинно), то выполняется оператор 1 (оператор 2 пропускается), если значение логического выражения равно false (ложно), то выполняется оператор 2 (оператор 1 пропускается). Далее в любом случае выполняется оператор, стоящий в программе непосредственно за оператором if (оператор 3). Значение true и false получают обычно в результате выполнения операций сравнения (отношения): < - меньше;<= - меньше или равно;> - больше;>= - больше или равно;= - равно;< > - не равно. Операнды этих операций (константы, переменные, функции, выражения, не содержащие отношений) могут быть вещественного, целого или логического типа. Простейшим примером использования условного оператора является вычисление значения функции по одной из двух предложенных формул в зависимости от значения аргумента:

Оператор, реализующий выражение для некоторого значения аргумента Х, выглядит следующим образом: IF X>0THEN Y: =LN (X)ELSE Y: =EXP (X); Здесь логическое выражение – отношение Х>0, оператор 1, оператор 2 – операторы присвоения Y: =LN (X) и Y: =EXP (X). Примером, когда логическое выражение в операторе имеет более сложную структуру, может служить задача определения, можно ли построить треугольник из отрезков заданной длины: x,y,z (x>0, y>0, z>0).Условный оператор имеет вид:IF (X+Y>Z) AND (X+Z>Y) AND (Y+Z>X)THEN WRITELN (‘треугольник построить можно’)ELSE WRITELN (‘треугольник построить нельзя’); Условный оператор может не иметь конструкции ELSE, такая форма оператора называется сокращенной:

IF <логическое выражение> THEN <оператор>; Порядок выполнения оператора IF в сокращенной форме поясняется рис. 3.

Логическое выражение

оператор

true false

Page 19: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

Рис. 3.

Если логическое выражение принимает значение FALSE , то сразу выполняется оператор, следующий за оператором IF. Например, IF X>0 THEN WRITELN (X);Z: =SQR (X); Условные операторы могут иметь вложенную конструкцию, когда после THEN или FALSE используется так же условный оператор. При этом справедливо следующее правило: ELSE всегда относится к ближайшему слева оператору IF. Например, требуется вычислить значение функции по одной из предложенных форму:

Для программной реализации используется вложенная конфигурация условного оператора:IF X>=1THEN Y: =SQRT (X)ELSE IF X>0 THEN Y: =LN (X) ELSE Y: =EXP (X); В состав условного оператора может входить только один оператор. Если какую либо ветвь разветвления требуется вставить несколько операторов, то они объединяются в один, составной оператор, для чего в начале группы этих операторов записывается слово BEGIN, а в конце – служебное слово END: BEGIN <оператор 1>; <оператор 2>; …………….. <оператор N>; END; Элементами составного оператора могут быть любые операторы языка, в том числе условные и другие составные операторы.

1.2. Оператор варианта. Оператор варианта является обобщением условного оператора: он дает возможность выполнить один из нескольких операторов в зависимости от значения некоторого выражения, называемого селектором. В общем случае оператор имеет вид: CASE <селектор> OF

<список меток 1>: <оператор 1 >;<список меток 2>: <оператор 2 >;

Page 20: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

…………………………………………….<список меток N>: <оператор N >;

END;Где CASE (выбор), OF(из), END(конец) – служебные слова;Селектор – выражение любого скалярного типа, кроме вещественного;Оператор – любой оператор языка, в том числе и составной;Список меток – список разделенных запятыми значений выражения селектор или одно его значение. Эти константы, следовательно, должны иметь тот же тип, что и селектор, и называются они метками варианта. Метка варианта – не обычная метка: это не обязательно целое число, она не описывается в разделе LABEL, на нее нельзя ссылаться в операторе GOTO. Оператор варианта выбирает для исполнения тот оператор, одна из меток которого равна текущему значению выражения селектор. По окончании выполнения выбранного оператора управление передается в конец оператора CASE. Метки полей не должны пересекаться. Если ни одна метка не найдена, то управление передается за оператор END. Можно использовать следующую конструкцию: CASE I OF

1 : <оператор 1>;2 : <оператор 2>;

ELSE <оператор 3>;END; Рассмотрим оператор на примере:CASE NOMER OF 0 : y: =G; 1..3 : y: =G*X; 6,7,8 : y: =G*sqrt (abs (x)); 9..11 : y: =G*exp (x)+H; 12 : y: =G*sqr (sin (x)+H);END; В зависимости от значения селектора NOMER значение функции У вычисляется по одной из перечисленных формул. Схематическое представление оператора CASE – структура отбора, представлена для данного примера на рис.4.

Метка может быть константой, диапазоном констант и списком: 0 и 12 – константа;1..3 и 9..11 – диапазон констант;6,7,8 – список констант. Такие вычисления могут быть выполнены и с помощью вложенных условных операторов, однако это в значительной степени удлинило бы программу и сделало бы ее менее наглядной.

NOMER <селектор>

Y: =gОператор 1

Y: =g*xОператор 2

Y: =Оператор 3

Y: =g*ex+HОператор 4

Y:=g*(sinx+H)Оператор 5

Page 21: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

1.3.Оператор безусловного перехода Общий вид оператора:

GOTO <метка>где GOTO (идти к) – служебное слово; <метка> - целое число без знака, определяемое в разделе LABEL как метка оператора. Оператор GOTO производит передачу управления к оператору,помеченному указанной меткой.

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

1.4.Логические отношения Для задания условий в логическом операторе IF могут

Таблица 1.Математическое обозначение

Название Обозначение в программе

НЕТ (отрицание) NOTИ (логическое умножение) ANDИЛИ (логическое сложение) OR

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

Отношения, стоящие слева и справа от знака логической операции должны быть заключены в скобки, поскольку логические операции имеют более высокий приоритет и выполняются в следующем порядке: в первую очередь NOT, а затем AND, а операция OR в последнюю очередь. Например, 0<X<=1 можно записать с помощью логической операции AND

(Х>0)AND(X<=1)Это логическое выражение имеет значение истинно, если истинны оба выражения, написанные в круглых скобках. Иначе выражение ложно. Например, если Х<6 либо Х=6, можно записать с помощью логической операции, то есть логическое выражение,

(X=6)OR(X<6)которое читается так: имеет значение истинно, если хотя бы одно из этих выражений истинно, иначе ложно. Например, X>1, но Х<>6, можно записать с помощью логической операции NOT:

(Х>1)AND(X NOT 6),имеет значение истина, если оба выражения истины, иначе ложь.

2.Задание

Page 22: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

2.1. Из таблицы 2 взять задание и написать программу, используя оператор условного перехода.

2.2. Из таблицы 3 взять задание и написать программу, используя оператор варианта.

Контрольные вопросы1. Понятие разветвляющихся процессов.2. Что называется условным переходом?3. Оператор условного перехода.4. Полная и сокращенная формы условного оператора.5. В чем заключается вложенная конструкция условных операторов?6. В каких случаях операторы объединяются в один, составной оператор?

Приведите пример.7. Оператор варианта, его возможности.8. Общий вид оператора безусловного перехода.

Литература1. Новичков В.С. Паскаль. – В.С. Новичков, Н.И. Панфилов, А.Н. Пылькин. –

М.: Высш. школа, 1990 – 223с.2. Савельев А.Я. Языки программирования (Паскаль, ПЛ/М). – М.: Высш.

школа, 1987 – 143 с.3. Боон К. Паскаль для всех. – М.: Энергоатомиздат, 1988 – 190 с.4. Пильшиков В.Н. Сборник упражнений по языку Паскаль. - М.: Наука, 1989

– 169 с. Таблица 2

№ варианта Содержание1.

2.

3.

4.

5.

6.

7.

8.9.10.

11.

Page 23: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

12.

13.14.15.

16.

17.

18.

19.

Таблица 3№ варианта Содержание Исходные данные

1. A=2B=1.5C=1D=3F=0.5

2. C=-2A=1.5D=2X=3

3. A=5B=1.2Y=0.3

4. D=2A=3.5X=3I=2.3

5. Y=1X=2.5A=4B=0.4

6. A=0.5B=2H=4R=1.4

7. P=0.6L=2H=5R=4

8. X=0.65C=1.5D=2A=0.37

9. Y=2.6X=1.6A=0.4

Page 24: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

10. A=1.5B=2X=0.5

11. X=0.5A=4.3Y=2.6D=0.3

12. A=3Y=2.7I=2X=1

13. X=0.73Y=0.4T=2.6

14. A=2X=0.54C=2.3B=1.8R=3

15. X=0.4A=0.88C=3.6

16. A=-1B=0.8X=1C=-0.7

17. X=2Y=3.5A=0.1B=4

18. X=0.8Y=0.2A=4B=5T=1

19. Y=2A=0.5X=1.8B=0.6

20. X=1.8Y=2T=4A=1.5R=4.6B=0.3

Page 25: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

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

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

их при составлении программ. 1. Теоретические сведения.

1.1. Понятие циклического процесса.Если вычислительный процесс содержит многократные вычисления по

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

первым его выполнением;2) тело цикла: действия, повторяемые в цикле для различных значений

переменных цикла;3) модификацию (изменение) значений переменных цикла перед каждым

новым его повторением;4) управление циклом: проверку условия продолжения (или окончания) цикла

и переход на начало тела цикла, если выполняется условие продолжения цикла (или выход из цикла по его окончании).

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

1.2 Операторы цикла с присваиванием.Различают циклы с заданным и заранее неизвестным числом

повторений. Циклы первого типа называют также циклами со счетчиком. Число повторений тела цикла в этом случае подсчитывается с помощью специальной переменной (счетчика), для которой известны начальное и конечное значения, шаг её изменения. Управление циклом осуществляется на основании сравнения текущего значения счетчика с конечным. Переменную – счетчик именуют параметром цикла, а сам цикл – циклом с параметром.

Оператор цикла с параметром имеет следующий вид:For i:=m1 to m2 do s илиFor i:=m1 down to m2 do sГде for (для), To (до), Downto (вниз до), Do(выполнить) – служебные

слова;I – параметр цикла (переменная любого скалярного типа, кроме

вещественного);M1, m2 – начальное и конечное значения параметра цикла (тип, который

должен совпадать с типом параметра цикла);

Page 26: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

S – тело цикла, которое может содержать один или несколько операторов.

Работа оператора цикла при использовании служебного слова To заключается в следующем. Параметр цикла принимает начальное значение (m1) и сравнивается с конечным значением (m2) .Если параметр цикла не превышает значения m2, то управление передаётся в тело цикла и операторы выполняются. Затем значение параметра цикла увеличивается на единицу, и работа повторяется. Выход из цикла выполнится после того, как значение параметра цикла превысит конечное значение m2.

При использовании в операторе цикла служебного слова Downto параметр цикла будет изменяться в обратном порядке: с шагом – 1.

Оператор цикла for следует использовать во всех случаях, когда заранее известно число повторений или его можно подсчитать.

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

одинакового типа, их тип может быть любым скалярным типом (стандартным, перечисляемым, ограниченным), кроме вещественного;

2) очередное значение параметра цикла вычисляется автоматически с помощью функции SUCC в сочетании с TO или PRED в сочетании с DOWNTO; в частности для целого типа шаг изменения значения параметра цикла равен 1 при TO и -1 при DOWNTO;

3) запрещено изменять внутри (в теле) цикла значение параметра цикла, начальное и конечное значение;

4) запрещено входить в цикл с помощью оператора GOTO, минуя оператор FOR, так как значение переменной параметра цикла, начальное и конечное значения будут не определены;

5) цикл не выполняется вообще, если начальное значение больше (при DOWNTO - меньше), чем конечное;

6) по окончанию выполнения цикла значение переменной параметра неопределенно и не может быть использовано в дальнейших вычислениях;

7) после служебного слова DO может стоять только один оператор; если в цикле нужно выполнить группу операторов, то их заключают в операторные скобки BEGIN-END;

8) из составного оператора, входящего в оператор цикла, можно выйти до окончания этого цикла с помощью GOTO, тогда последнее значение параметра цикла сохраняется.

1.3. Оператор цикла с предусловием. Оператор цикла с предусловием имеет следующий вид: WHILE В DO Sгде WHILE (пока), DO (выполнить) - служебные слова; В - условие (логическое выражение) S - тело цикла, содержащие один или несколько операторов. Работа оператора цикла WHILE заключается в следующем.

Page 27: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

Если условие истинно, то выполняются операторы, входящие в тело цикла. Как только условие станет ложным, выполнение операторов цикла прекращается. Если условие ложно с самого начала, то оператор цикла не выполняются ни разу. Условие вычисляется и анализируется перед каждым выполнением цикла, отсюда и термин “предусловие”. Значения переменных, входящих в условие, должны изменяться в теле цикла, иначе, цикл никогда не завершится.

Оператор цикла WHILE позволяет организовать цикл с неизвестным числом повторений, т.к. оно зависит от вычислений в операторе.

1.4. Оператор цикла с постусловием. Оператор цикла с постусловием имеет следующий вид:REPEAT

S1; S2; . . .UNTIL BГде REPEAT (повторять), UNTIL (до тех пор, пока) – служебные слова; S1, S2 . . . любые операторы языка, входящие в тело цикла;B – условие (логическое выражение).Действие оператора REPEAT подобно действию оператора WHILE, но

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

При составлении циклов с предусловием или постусловием необходимо принимать во внимание следующие моменты:1) перед каждым выполнением цикла условие его окончания (или

продолжения) должно быть определено (иметь конкретное значение);2) тело цикла должно содержать хотя бы один оператор, влияющий на условие

окончания (продолжения), иначе цикл будет продолжаться бесконечно;3) условие окончания цикла должно быть в конце концов удовлетворено;4) условие вычисляется при каждом выполнении цикла и поэтому должно быть

насколько можно простым.1.5. Вложенные циклы.

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

Page 28: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

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

2. ЗаданиеВзять задание из таблицы 1 согласно варианта. Составить блок-схему алгоритма и программу для вычисления суммы членов бесконечного ряда с точностью до члена ряда, меньшего ε=0,001 при заданных значениях Х.

Контрольные вопросы.1. Что представляет собой циклический вычислительный процесс?2. Общий вид операторов цикла с параметром?3. Правила организации цикла с параметром?4. Общий вид оператора цикла с постусловием. В чем отличие данного

оператора от оператора цикла с предусловием?5. Общий вид оператора цикла с предусловием. Когда применяется данный

оператор?6. Какие циклы называются вложенными?7. Понятие уровня вложенности в сложных цикла.8. Как изменяются параметры циклов разных уровней вложенности?

Литература.1. Новичков В.С. Алгоритмические языки в техникуме. - М.: Высшая школа,

1990-222с.2. Боон К. Паскаль для всех. – М.: Энергоатомиздат, 1988.-188с.3. Савельев А.Я. Языки программирования ( Паскаль. ПЛ/М). – М.: Высшая

школа, 1987.-142с. Таблица 1.

НомерВарианта

Содержание задания

1.

При Х изменяющемся от –2 до 4 с шагом 0,22.

При Х изменяющемся от –0,1 до –2 с шагом –0,3

3.

При Х изменяющемся от –1 до 1 с шагом 1

4.

При Х изменяющемся от 0,1 до 1 с шагом 0,1

Page 29: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

5.

При Х изменяющемся от 0,2 до 1 с шагом 0,16.

При Х изменяющемся от –0,5 до 1 с шагом 0,57.

При Х изменяющемся от –π до π с шагом π /68.

При Х изменяющемся от – π /2 до π /2 с шагом π /89.

При Х изменяющемся от –2 до 1 с шагом 0,510.

При Х изменяющемся от –1 до 1 с шагом π /1011.

При Х изменяющемся от –L до L с шагом 212.

При Х изменяющемся от – π /2 до π /2 с шагом π /1013.

При Х изменяющемся от –1 до –2 с шагом –0,214

При Х изменяющемся от –1 до -2 с шагом -0,2 15.

При Х изменяющемся от –1 до –1,5 с шагом –0,116.

При Х изменяющемся от 0,8 до 1,6 с шагом 0,217.

При Х изменяющемся от 0,5 до 2,5 с шагом 0,518.

При Х изменяющемся от – π /2 до π /2 с шагом π /1019.

При Х изменяющемся от 0 до π с шагом π /8

Page 30: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

20.

При Х изменяющемся от – π /2 до π /2 с шагом π /1021.

При Х изменяющемся от – π до π с шагом π /1022.

При Х изменяющемся от – π /2 до π /2 с шагом π /823.

При Х изменяющемся от 1,2 до 2,2 с шагом 0,224.

При Х изменяющемся от – π /2 до π /2 с шагом π /1025.

При Х изменяющемся от 0 до –0,5 с шагом –0,1

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

Тема: Разработка программ с использованием одномерных массивов.

Цель работы: Приобрести навыки обработки одномерных массивов в Паскале.

1. Краткие теоретические сведенияМассивы представляют собой ограниченную упорядоченную

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

Вся совокупность компонент определяется одним именем. Для обозначения отдельных компонент используется конструкция, называемая переменной с индексом или с индексами: A[5] S[k+1] B[3,5].

В качестве индекса может быть использовано выражение. Тип индексов может быть только интервальным или перечислимым. Действительный и целый типы недопустимы. Индексы интервального типа, для которого базовым является целый тип, могут принимать отрицательные, нулевое и положительные значения. В операторной части программы один массив может быть присвоен другому, если их типы идентичны, например: R1:=Z.

Для ввода или вывода массива в список ввода или вывода помещается переменная с индексом, а операторы ввода или вывода выполняются в цикле. Первый индекс определяет номер строки, второй - номер столбца. Двумерные массивы хранятся в памяти ЭВМ по строкам. Инициализация

Page 31: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

массивов (присвоение начальных значений всем компонентам массивов) осуществляется двумя способами.

Первый способ - с использованием типизованных констант, например: type Dim10= Array[1..10] of Real; const raM10: Dim10 = ( 0, 2.1, 4, 5.65, 6.1, 6.7, 7.2, 8, 8.7, 9.3 );

При инициализации двумерных массивов значения компонент каждого из входящих в него одномерных массивов записывается в скобках: type Dim3x2= Array[1..3,1..2] of Integer; const iaM3x2: Dim3x2= ( (1, 2), (3, 4), (5, 6));

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

FillChar( var V; NBytes: Word; B: Byte );Эта процедура заполняет участок памяти однобайтовым значением.

Например, для обнуления массива A[1..10] of Real можно записать: FillChar(A, 40, 0);или FillChar(A, SizeOf(A), 0);

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

2. Задания.1. Подсчитать число и сумму положительных, число и произведение

отрицательных элементов заданного массива A(N).2. Элементы заданного массива B(N) переписать в новый массив A(N) в

обратном порядке3. Вычислить сумму квадратов всех элементов заданного массива X(N), за

исключением элементов, кратных пяти.4. В заданном массиве A(N) поменять местами наибольший и наименьший

элементы.5. Осуществить циклический сдвиг компонент заданного вектора A(N) влево

на одну позицию, то есть получить вектор А = (a2 , a3, ..., aN , a1 ).6. В заданном массиве A(N) положительные элементы уменьшить вдвое, а

отрицательные заменить на значения их индексов.7. В соревнованиях по фигурному катанию N судей независимо выставляют

оценки спортсмену. Затем из объявленных оценок удаляют самую высокую (одну, если самую высокую оценку выставили несколько судей). Аналогично поступают с самой низкой оценкой. Для оставшихся оценок вычисляется среднее арифметическое, которое и становится зачетной оценкой. По заданным оценкам судей определить зачетную оценку спортсмена.

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

Page 32: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

1. Что называется массивом?2. Оператор описания массива, его разновидности.3. Правила составления имени массива.4. Способы задания значений массивов.5. Ввод и вывод массивов.6. Переменные какого типа могут служить именем массива?7. Какие элементы могут служить в качестве индексов элементов массива.

Page 33: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

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

Тема: Разработка программ с использованием двумерных массивов.

Цель работы: Приобрести навыки обработки двумерных массивов в Паскале.

1. Общие сведения.Массив – это упорядоченная совокупность значений одинакового типа,

объединенная одним именем. Для того, чтобы иметь возможность работать с каждым элементом массива, необходимо задать координаты этого элементам в общей структуре массива.

Если массив двумерный, то для определения положения какого-либо элемента достаточно задания номера строки и столбца, на пересечении которых находиться рассматриваемый элемент. Так выделенные на рис. 1 в элементы массива имеют следующие обозначения B[1,1], B[1,4], B[5,2].

1 2 3 4 1 2 3 4 двумерный массив

Причём первым в обозначении элемента массива стоит номер строки, а вторым - столбца.

Точно также задается положение трёх, четырёх и n-мерных массивов.Итак, массив характеризуется размерностью и длиной по направлению

каждой из размерностей.Если какая-либо переменная в программе является массивом, то её

необходимо описать в разделе переменных. Простейшая форма описания одномерного массива имеет вид:

Var v: array [n...m] of t ;где v – имя массива, формируется по правилам задания имён переменных; n и m – наибольшее и наименьшее значение индекса массива, может быть целого и перечисляемого типа; t – тип элемента массива, может быть любым типом, существующим в Паскале.

Например, запись: var m: array [1..8] of real говорит о том, что в программе, в которой имеется данное описание, будет обрабатываться одномерный массив, состоящий из 8 элементов вещественного типа. В описании массивов большей размерности предел изменения этой размерности отделяется друг от друга запятой.Запись Var C: array [1..5, 1..4] of integer

Page 34: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

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

Для описания многомерных массивов в Паскале существует целый ряд способов. Следующие группы операторов задают описание одного и того же двумерного массива А, представляющего собой таблицу размером 23 (2 строки, 3 столбца)

Первый способ:TypeStroka = array [1..3] of real; Matr = array [1..2] of stroka;Var V: stroka;A: matr ;

Второй способ:TypeMatr= array [1..2] of array [1..3] of real;VarA: matr;

Третий способ:TypeMatr = array [1..2,1..3] of real;VarA: matr;

Четвёртый способ:Var A: array [1..2,1..3] of real;

В первом способе описания переменная V объявлена как одномерный массив из трёх элементов вещественного типа. Переменная А имеет смысл двумерного массива из двух строк, в каждую из которых включено по три элемента.

Второй, третий и четвертый способы описания массива получаются из первого путем его последовательного упрощения. Так второй способ описания получен из первого путём исключения определения типа stroka в определении типа matr.

В Паскале типом индекса (номером) элемента массива не обязательно является целое число. Им может быть также переменная перечисляемого типа, например:

2. Задание.Задание взять из таблицы согласно варианту. Составить блок-схему алгоритма и программу.

Контрольные вопросы.1. Что называется массивом?2. Оператор описания массива, его разновидности.3. Правила составления имени массива.

Page 35: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

4. Способы задания значений массивов.5. Ввод и вывод массивов.6. Переменные какого типа могут служить именем массива?7. Какие элементы могут служить в качестве индексов элементов массива.

3. Задание к работе1. Найти среднее арифметическое каждой строки матрицы А.

Сформировать из них вектор В.

2. Найти сумму элементов матрицы А, лежащих на главной Диагонали и правее. Умножить на это значение все элементы Вектора В

3. Сформировать вектор В элементы которого равны Соответствующим элементам неглавной диагонали матрицы. Найти минимальный элемент вектора В.

4. Определить количество положительных элементов каждого Столбца матрицы А и запомнить их в массиве М

5. Из матрицы А построить матрицу В поменять местами Строки и столбцы.

6. Сформировать вектор В как сумму положительных элементов Каждой строки матрицы А.

7. Сформировать вектор В как среднее арифметическое Положительных элементов каждого столбца матрицы А:

8. Найти минимальные элементы каждой строки Матрицы А и поместить их на главную диагональ.

Page 36: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

9. Поменять в каждой строке между собой элементы Главной и неглавной диагоналей матрицы А:

10. Найти произведение первых трёх наибольших элементов Матрицы А:

11. Сформулировать вектор С из элементов вектора А, Удовлетворяющих условию Aij>2

12. Получить вектор В элементы которого равны элементам главной матрицы А и найти его максимальный элемент. Вывести на печать полученный вектор В и полученное значение максимального элемента.

13. Получить вектор А, элементы которого равны элементам первой строки матрицы С и вектор В, элементы которого равны элементам первого столбца матрицы С. Вывести на печать векторы А и В.

14. По заданным векторам А и В сформировать вектор С по формуле Cij=ai+bj и найти его минимальный элемент.

15. Упорядочить элементы матрицы А, расположив их по убыванию в

строках.

16. Изменить значение элементов матрицы А по правилу

17. Вычислить сумму элементов матрицы А, стоящих правее второго

Page 37: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

столбца, умножить на это значение элементы первого и второго столбца, результат вывести на печать.

18. Найти сумму элементов обоих диагоналей матрицы А:

19. Поменять в каждом столбце элементы главной и неглавной диагоналей

20. Упорядочить по возрастанию четные элементы вектора В

21. Сформировать матрицу А по правилу: Найти максимальный элемент и его положение в матрице

22. Найти сумму элементов первой и второй строк матрицы А и минимального элемента вектора В.

23. Найти произведение и количество положительных элементов матрицы А

24.Сформировать матрицу А по правилу:

И найти минимальный элемент

25. Найти наибольшую сумму двух произвольных элементов вектора А:

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

Тема: Разработка программ с использованием процедур и функций.

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

1. Основные понятия.

Page 38: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

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

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

1.1. Описание процедуры. Процедуры описываются в специальном разделе описательной части

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

процедуры и блока. Заголовок процедуры представляет собой:PROCEDURE <ИМЯ> (<СПИСОК ПАРАМЕТРОВ>),

где PROCEDURE – служебное слово, ИМЯ – имя процедуры, СПИСОК ПАРАМЕТРОВ - перечень имен для обозначения исходных данных и результатов работы процедуры с указанием их типов. Параметры, перечисленные в списке, называются формальными. Допускается описание процедуры, несодержащей формальных параметров:

PROCEDURE <ИМЯ>;Содержательная часть процедуры представляет собой блок и состоит,

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

Если в заголовке процедуры параметры указаны без слова VAR, то это параметры-значения. Параметры-значения могут изменяться внутри процедуры, но для внешней программы это изменение окажется незамеченным.

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

Тело процедуры состоит:1) из описательной части, где определена переменная I, необходимая и

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

2) из составного оператора BEGIN-END, реализующего алгоритм вычисления степени действительного числа с натуральным показателем.

Page 39: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

1.2. Функция.Функция – это подпрограмма, результат выполнения которой есть

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

Описание функции аналогично описанию процедуры и состоит из заголовка и блока. Заголовок функции имеет вид:

FUNCTION <ИМЯ> (<СПИСОК ПАРАМЕТРОВ>):<ТИП>где FUNCTION – служебное слово, ИМЯ – имя функции, СПИСОК ПАРАМЕТРОВ – перечень формальных параметров (исходных данных) с указанием их типов, ТИП – тип результата: значение, которое должно приобретать имя функции.

Допускается описание функции без параметров:FUNCTION <ИМЯ>: <ТИП>;

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

1.3. Обращение к подпрограммам.Описание процедуры (или функции), расположенное в разделе описаний,

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

<ИМЯ> (<СПИСОК АРГУМЕНТОВ>);где ИМЯ – имя процедуры, к которой происходит обращение, СПИСОК АРГУМЕНТОВ – перечень конкретных значений (выражений) и имен, подставляемых на место формальных параметров процедуры при ее выполнении.

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

Program <имя>;

Формальные параметры – это переменные, фиктивно (формально) присутствующие в процедуре и определяющие тип и место подстановки фактических параметров.

Page 40: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

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

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

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

2. Задание2.1 Из таблицы 1. По номеру варианта взять задание и составить

программу, используя подпрограмму- процедуру.2.2 Из таблицы 2 по номеру варианта взять задание и составить программу,

используя подпрограмму FUNCTION.

Контрольные вопросы:1. Заголовок процедуры и функции.2. Что входит в тело процедуры?3. Отличия процедуры и функции.4. Понятия локальной и глобальной переменной.5. Обращение к подпрограммам.6. Какие параметры являются фактическими, какие формальными?7. Параметры процедур и функций.8. Соответствие между формальными и фактическими параметрами.

5. Литература1. Новичков В.С. ПАСКАЛЬ – В.С. Новичков, Н.И. Парфилов, А.Н. Пылькин -

М.: Высш. школа, 1990г. 223 стр.2. Савельев А.Я. ЯЗЫКИ ПРОГРАММИРОВАНИЯ (Паскаль, ПЛ/М). –

М.:Высш. школа. 1987г. –143 стр.3. Боон К. ПАСКАЛЬ ДЛЯ ВСЕХ. – М.- Энергоатомиздат, 1988г.- 190 стр.

Таблица 1N вар. Содержание задания

1. Определить математическое ожидание и дисперсию для четырёх случайных чисел, заданных векторами: A=[0,5; 1,5; 2] b=[6,7; 8; 7,5; 6]C=[0,1; 10; 4] d=[3,2; 5,1]Расчёт математического ожидания и дисперсии производится по

следующим формулам:

Page 41: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

2. Определить расстояние от начала координат до точки Р, делящей отрезок с координатами Р={2;6} M={10;8} в отношении L=3/2 . Расстояние определяется по формуле: , где

3. Определить расстояние между точками А и В с координатами A=[2;5], B=[2;1], и точками C и D с координатами С=[20;4], D=[12;8]. Расстояние определяется по формуле: , где

и

4. Вычислить значение функции , где корни уравнения ; - корни уравнения . Корни уравнения находятся в подпрограмме- процедуре. Если корни мнимые, то считать их равными нулю. Исходные данные: A=0,5; B=3; C=1;

5. Заданы стороны двух треугольников АВС (стороны а, в, с) и DEF (стороны d, e, f). Найти сумму и разность площадей треугольников АВС DEF. Площадь треугольника NKM со сторонами n, k, m вычисляется по формуле: r - полупериметр треугольника NKM. Исходные данные: а=3; b=2,5; c=1,7; d=2; e=7,8; f=7

6. Три точки заданы своими декартовыми координатами a={1;2}, b={1,2;1}, c={-3; -4}. Вычислить полярные координаты этих точек. Полярный радиус r и полярный угол вычисляются по формулам: ,

7. Определить номера точек, лежащих в круге радиусом r. Координаты точек заданы массивами и . Исходные данные: n=6; r=3; i=1,2….n

={-1; 2,3; 3,3; -1,8; -2,4} ={2;-2,8;6;1;-2; 1}8.

Вычислить значение где заданы массивом;

=(0,2; 0,46; 0,33; 0,97; 0,15; 0,61; 0,54; 0,77)9.

Вычислить значение R= где  X= S= элементы массива.

Исходные данные:n=3; m=8; i=1,.2..m;=(5,6; 0,3; -0,9; 3; 2,8; 1,45; -4,6; 1)

10. Определить значение функции Z=sh(x+y) и M=sh(xy), где M изменятся от 1 до 0,5 с шагом 0,1; Y изменяется от 2 до 2,6 с шагом 0,2.

Гиперболический синус вычисляется по формуле:

11. Заданы стороны двух треугольников JKL (стороны j,c,l), и ABD (стороны a,b,d).Переменной S присвоить значение –1, если площадь треугольника JCL меньше или равна площади треугольника ABD, и значение 1,если площадь треугольника JCL больше площади треугольника ABD. Площадь треугольника MNK со сторонами m,n,k вычисляются по

Page 42: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

формуле Герона.W= где r-полупериметр треугольника MNK. Исходные данные j=1; c=2,5; i=2,7; a=1; b=2,7; d=3,2.

12. Построить таблицу Z=ch(x2=y2),где имеется от 3до 4 с шагом 0,1, y меняется от 2 до 3 с шагом 0,2. Гиперболический косинус вычисляется по формуле:CH(n)=(en+en)/2.

13. Заданы два квадратных уравнения Ax2+Dx+C=0, Dx2+Fx+R=0. Найти минимальное значение среди корней этих уравнений. В случае если корни мнимые считать их равными нулю. Решение квадратного уравнения оформить в виде подпрограммы-процедуры.Исходные данные:a=2; b=-5,2; c=1,3; d=3,7; f=1,8; r=6.

14. Четыре точки заданы своими координатами X=(x1,x2), Y=(y1,y2)Z=(z1,z2), P=(p1,p2)Вычислить и напечатать, сколько из них принадлежит полосе, аналитически заданной неравенством: f<Ma1+Na2<r.Проверку на принадлежность точки полосе оформить в виде подрограммы-процедуры.Исходные данные M=5; N=3; f=2,5; r=7,1; X=(-4,2;3); Y=(1,8; 0,8); Z=(-8,6; -4,1); P=(-1; -0,1).

15. Задана окружность (x-a)2+(y-b)2=r и две точки P=(p1,p2) и F=(f1,f2).Выяснить и напечатать, сколько точек (нуль,одна или две) лежит внутри окружности. Проверку, лежит ли точка внутри окружности, оформить в виде подпрограммы-процедуры.Исходные данные a=3,2; b=4,1; r=2; p=(6,1; 4,3); f=(27,48;-6) .

Таблица 2N вар. Содержание задания

1. при а=4,5; b=0,7; c=6,2; А x принимает

значения 0,2; 0,56; 0,832.

, при a=0,8; b=0,16; c=0,4;

a=0,6; b=0,4; c=1,2; a=0,47; b=0,1; c=0,5.

3, при a=0,15; b=1,5;

a=1,7; b=0,1.4.

, при x=1,4; y=0,8;

x=0,9; y=0,6;x=2,9; y=0,4; a d=5,3, при всех значениях x,y.

5., при x=0,4; y=1,2;

x=0,25; y=1,3;a=0,54; b=1 при всех значениях x, y

Page 43: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

6., при a=10,7; b=6,3; y=0,35; a x

принимает значения 0,6; 0,51; 0,42.7.

, при x=3; y=4;

x=1,6; y=5,8; x=4,5; y=2,7; a=7,1; b=2,4 при всех значениях x, y

8., при x=0,1; y=0,7;

x=0,4; y=0,6 x=0,5; y=0,2; a=2; b=0,1 при всех значениях x, y

9., при a=9,7; b=2,7, a x принимает значения 4,8;

9,6; 0,44.10.

, при x=0,35; y=0,1;

x=0,82; y=0,12; x=0,67; y=0,3, a=0,24;b=4,9 при всех значениях x, y.

11., при a=4; b=2,7, a x принимает значения

0,1; 0,25; 0,14; 0,21. 12.

13.

14.

Page 44: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

15.

Page 45: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

Лабораторная работа №7Тема: Программирование задач обработки строковых данных.Цель: получение навыков работы со строками в Паскале.

1. Теоретический материал.Понятие строковой переменной.Тип STRING (строка) в Паскале широко используется для обработки

текстов. Он во многом похож на одномерный массив символов ARRAY [O . . N] OF CHAR, однако, в отличие от последнего, количество символов в строке – переменной может меняться от О до N, где N – максимальное количество символов в строке. Значение N определяется объявлением типа STRING [N] и может быть любой константой порядкового типа, но не более 255, например:

Const N = 25;Type Stroka = String [n];Var S: Stroka;

B: String [50];C: String [230];D: String [270]; Ошибка, 270>255

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

Var A: String; B: String [255];

переменные А и В могут содержать до 255 символов каждая.Строка в Паскале трактуется как цепочка символов. К любому символу в

строке можно обратиться точно так же, как к элементу одномерного массива ARRAY [O . . N] of Char, например:

Var St : String [20];Begin ……. If St [5] = ‘A’ then …..

endЗанесение значений в строковую переменную.Значение в строковую переменную может быть занесено с помощью

оператора присваивания : =, например:St : = ‘How do you do!’

При этом будут соблюдаться следующие правила:1. Позиция символа в строке соответствует номеру позиции в строковой

переменной,т.е. St [1] = H (см. последний пример), St [2] = о St [3] = w St [4] = St [5] = d , ……, St [14] = !.2. Если в правой части количество символов в строке превышает максимально

возможный размер значения строковой переменной, расположенный слева от знака присваивания, “лишние” символы отбрасываются. Например, если при описании

Var st : string [10]; в программе встретится оператор

Page 46: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

St : = Hoy do you do!то переменная St получит значение ‘Hoy do you’, а оставшиеся четыре символа будут отброшены.3. Если в переменной St уже содержались какие-либо значения, оно полностью

уничтожается, а в переменную заносится новое значение. Например, еслиSt = ‘Hoy do you’, то после оператора

St: = Hello!переменная St = ‘Hello!’ (а не St = ‘Hello! you do’)

Справа от знака “присвоить” может стоять как строковая константа, так и строковая переменная, при этом максимальное количество символов в строковых переменных может быть разным, т.е. при описании

Var A: string [20]; B: string [10]; C: string [2];

Занести значение в строковую переменную можно и с помощью оператора ввода Readln. При этом соблюдаются все выше перечисленные правила.

Длина строки.Длинна строки, определяется с помощью стандартной функции Length (St),

которая возвращает целое число, равное количеству символов в строке St, например:

Lenght (Hello!) = 6Следует заметить, что строковая переменная может содержать пустую

строку, которая обозначается двумя подряд идущими апострофами. Длина пустой строки равна нулю:

Lenght ( ) = 0Самый первый байт строковой переменной имеет индекс 0, и содержит

символ, код которого равен длине строки:Ord (St [0] ) = Lenght (St).Если этот символ заменить символом, кож которого меньше, то строка

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

Сложение строк.К строкам можно применять операцию “+” – сцепление, например:

St: = a + b;Аналогичным образом функция типа String

Concat (St1, St2, …. , Stn), n = 1,2, ..возвращает строку, представляющую собой сцепление строк St1, St2, .. , Stn, например:

St = ( com, pu , ter ); {St = computer}.Строки можно не только сцеплять, но и вставлять одну в другую. Это

осуществляется с помощью процедуры

Page 47: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

Insert (SubSt, St, N),которая вставляет подстроку SubSt в строку St, начиная с символа с номером N, например:

Удаление, вырезка, поиск подстрок.Процедура

Delete (St,N,Kol)удаляет Kol символов из строки St, начиная с символа с номером N. Если число символов, которые требуется удалить, превышает число

символов в строке St, начиная с указанной позиции (т.е. Length (St)-N+1<Kol), то удаляются все символы, начиная с указанного, и до конца строки.

Если второй параметр превышает длину строки, из которой удаляется подстрока (т.е. Length (St)<N), в этом случае ни один символ из строки не будет удален.

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

Copy (St,N,Kol),копирующий из строки St Kol символов, начиная с символа с номером N. Строка St не изменяется.

Если в строке, начиная с указанной позиции, количество символов меньше, чем требуется, скопировать (Length (St)-N+1<Kol), функцией возвращается реально существующая часть строки.

Очень полезна при работе со строками функция типа IntegerPos (SubSt,St),отыскивающая в строке St первое вхождение подстроки SubSt и

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

Две взаимообратные процедуры Str и Var преобразуют любое число в строку и из строки в число.

Процедура: Str (X[:W[:D]], St) преобразует число Х любого вещественного или целого типов в строку символов St так, как это делает процедура Writeln перед выводом. Параметры :W и :D, если они присутствуют, задают формат преобразования: W определяет общую ширину поля, выделенное под соответствующее символьное представление вещественного или целого числа X, а D – количество символов дробной части (этот параметр имеет смысл только в том случае, когда Х – вещественное число).

Процедура Val (St,X,Code) преобразует строку символов St во внутреннее представление целой или вещественной переменной Х, которая определяется типом этой переменной. Параметр Code содержит 0, если преобразование прошло успешно, и тогда в Х помещается результат

В строке St могут быть ведущие пробелы, однако ведомые пробелы недопустимы.Например, обращение Val ( 123,X,C) пройдет успешно: Х получит значение 123, в С будет помещен 0, в то время, как обращение Val (123 ,X,C) будет ошибочным: значение Х не изменится, а С будет содержать 4.

Page 48: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

Операции отношения строк.В Turbo Pascal’e над двумя строками определены следующие операции

отношения: =, <>, >, <, >=, <=. Операции отношения над двумя строками выполняются посимвольно. Слева направо, с учетом внутренней кодировки символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются значением Chr(0). Следующие операции отношения дадут значение True:

‘’’’< ‘.’‘A’> ‘1’‘Turbo’< ‘Turbo Pascal’‘Паскаль’> ‘Turbo Pascal’

2. Контрольные вопросы.1. Как описываются строковые переменные?2. Как можно занести значение в строковую переменную?3. Соединение строк.4. Как найти необходимую подстроку в строке?5. Удаление символов из строки.6. Как сравниваются строки?

3. Задачи для самостоятельного решения.

1. Дана последовательность слов, разделенных между собой пробелами. Определите, сколько слов в последовательности начинается на букву М.

2. Дана последовательность слов, разделенных пробелами. Вывести на экран те из них, которые содержат букву А.

3. Дана последовательность слов, разделенных пробелами. Вывести слова в обратном порядке.

4. Var St, St1, St2:String;В переменную St помещено предложение, в котором слова разделены пробелами. В переменную St1 поместить слова, стоящие на нечетных местах, а в St2 – слова, стоящие на четных местах. Вывести значения St1 и St2 на экран.

5. Дана последовательность слов, разделенных пробелами. Вывести на экран те из них, которые совпадают с начальным отрезком латинского алфавита (ab, abc, abcd и т.д.).

6. Дана последовательность слов, разделенных пробелами. Вывести на экран те из них, которые совпадают с конечным отрезком латинского алфавита (yz, xyz и т.д.).

7. Дана последовательность символов. Разбить ее на четыре последовательности: буквы русского алфавита, буквы латинского алфавита, цифры и другие символы.

8. Дана последовательность слов, разделенных пробелами. Вывести на экран эти слова в алфавитном порядке.

9. Дано арифметическое выражение, имеющее вид:<число><знак><число>=<число>,

Page 49: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

где <число> – любое целое положительное число, а <знак> – арифметический знак +, –, , /. (Например, 38+43=81, 56*43=275). Проверить, не является ли данное арифметическое выражение тождеством.

10.Дана последовательность символов. Вывести их на экран по одному разу.11.Дана последовательность символов. Вывести на экран те из них, которые

входят в последовательность два, три и более раз.12.Дана последовательность символов. Вывести на экран те из них, которые

встречаются два раза.13.Дана последовательность слов. Вывести на экран те из них, которые

встречаются три, четыре и более раз.14.Дана последовательность слов, разделенных пробелами. Вывести на экран

все слова, предварительно перенеся последнюю букву в начало слова.15.Дана последовательность символов. Вывести на экран тот символ, который в

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

позиции буквы в алфавите (а-1, … , г-4, …). Найти сумму этих чисел (например, слово математика даст результат 14+1+20+6+14+1+20+10+12+1=99).

17.Из последовательности слов St, разделенных пробелами, вывести на экран те слова, которые следуют за данным словом Sl, в алфавитном порядке.

18.Из последовательности слов St, разделенных пробелами, вывести на экран те слова, которые предшествуют данному слову, занесенному в переменную Sl, в алфавитном порядке.

19.В строковую переменную St занесена последовательность чисел, разделенных запятыми. Определить, образуют ли эти числа арифметическую прогрессию (например: 2,4,6,8,10,12; 13,10,7,4,1).

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

4. Список дополнительной литературы.

1. В.В. Фаронов. Turbo Pascal 7.0. Начальный курс. Учебное пособие – М: «Нолидж», 1997 616с.

2. В.П. Абрамов, Трифонов Н.П., Трифонова Н.Г. Введение в язык Паскаль. Учебное пособие. – М: Наука Гл. ред. физ.-мат. лит., 1988-3220с.

3. Е.А. Зуев. Язык программирования Turbo Pascal 6.0. – Мн.: Высш шк., 1992 298с.

4. Ян Белецкий. Турбо Паскаль с графикой для ПК. – М.: Машиностроение, 1991 320с.

5. В.В. Фаронов. Турбо Паскаль (в 3 книгах) – М.: Наука, 1992г.6. Е.А. Зуев. Система программирования. Турбо Паскаль. – М.: Радио и связь,

1992 288с.7. Ю.С. Климов и др. Программирование в среде Турбо Паскаль 6.0. Мн.:

Высш. Шк., 1992 158с.8. Дональд Алкок. Язык Паскаль в иллюстрациях. – Мир, 1991 192с.

Page 50: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

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

Тема: Разработка программ с использованием множеств и записей.Цель работы: познакомиться с понятием «запись», научиться применять записи в составлении программ.

1. Теоретические сведенияВ настоящее время вычислительная техника находит широкое применение

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

TYPE< имя записи >=

RECORD< имя поля 1 > : < тип >< имя поля 2 > : < тип >

…………………………< имя поля N > : < тип >

END;Например, для решения задачи определения среднего балла, имея данные по пяти дисциплинам для конкретного студента, запись может иметь вид:

TYPE STR =

RECORD FAM: STRING[20]; B1, B2, B3, B4, B5 :1..5; SB : REAL;

END;Здесь FAM обозначает строку символов для хранения фамилии студента, В1, B2, B3, B4, B5 – баллы по соответствующим дисциплинам, SB – средний балл. Переменная типа STR имеет смысл записи, содержащей информацию об одном студенте.

Если требуется хранить информацию не по одному студенту, а по 25, то можно ввести массив записей TBL:

VAR TBL: ARRAY [1..25] OF STR;

Обращение к полям записи осуществляется посредством составного имени:<имя переменной-записи>.<имя поля>

Page 51: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

Возможны, например, такие операторы присваивания :TBL[ 3 ].FAM:= “Иванов”;TBL[ 20 ].B2:=5;TBL[ K+1 ].SB:=4.666;

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

TYPESTR=

RECORDFAM : STRING[20];B1, B2, B3, B4, B5 :2..5;SB : REAL

END;VAR Z1, Z2 : STR;BEGIN

- - - - - - - - Z1:=Z2;

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

Z1.FAM := Z2.FAM;Z1.B1 := Z2.B2;Z1.B2 := Z2.B2;Z1.B3 := Z2.B3;Z1.B4 := Z2.B4;Z1.B5 := Z2.B5;Z1.SB := Z2.SB;При обращении к компонентам записи мы сталкиваемся с

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

WITH < имя записи > DO< оператор >;

Внутри оператора к компонентам записи можно обращаться только с помощью имени компоненты.

2. ЗаданиеВзять задание из таблицы 1 согласно варианту и составить программу.

Контрольные вопросы.1. Что такое запись?

Page 52: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

2. Из чего состоит запись?3. Как находятся компоненты массива записей?4. Общий вид и принцип работы оператора WITH?5. Каким образом работает алгоритм упорядочивания списка?

Литература.1.Новичков В.С. Паскаль - В.С. Новичков, Н.И. Парфилова, А.Н. Пилькик. - М.: Высш. школа, 1990-223с.2.Боон К. Паскаль для всех.

Таблица 1Вариант Задание

1. Спишите запись АНКЕТА и поместите в неё следующую информацию:Ф.И.О. (фамилия, имя, отчество), адрес (улица, номер дома, номер квартиры), пол, возраст. Определите, сколько лиц женского и сколько лиц мужского пола проживают по одной улице.

2. Воспользовавшись записью из варианта номер 1, определить сколько лиц женского и сколько мужского пола проживает в одном доме.

3.Воспользовавшись записью АНКЕТА из варианта номер 1, определить сколько лиц мужского пола в возрасте сташе 18 лет и младше 60 проживают по одной улице.

4. Воспользовавшись записью АНКЕТА из варианта номер 1, определить сколько детей до 17 лет включительно проживает в одном доме.

5. Воспользовавшись записью АНКЕТА из варианта номер 1, определить сколько детей до7 лет проживает по одной улице.

6. Воспользовавшись записью АНКЕТА из варианта номер 1, определить сколько лиц женского пола старше 55 лет проживает в одном доме.

7. Опишите запись СТУДЕНТ и поместите в неё следующую информацию: Ф.И.О., оценки (математика, физика, черчение, химия, сопромат ). Определите, сколько студентов имеют неудовлетворительную оценку хотя бы по одному предмету.

8. Воспользовавшись записью СТУДЕНТ из варианта 7, определить сколько студентов имеет неудовлетворительную оценку по математике.

9. Воспользовавшись записью СТУДЕНТ из варианта 7, определить сколько студентов сдали все экзамены на 5.

10. Воспользовавшись записью СТУДЕНТ из варианта 7, определить средний бал группы по физике.

11. Воспользовавшись записью из варианта 7, определить количество отличных оценок, полученных группой по всем предметам.

12. Воспользовавшись записью из варианта 7, определить какое количество студентов имеет средний бал от 4 до 5.

13. Воспользовавшись записью из варианта 7, определить какое количество неудовлетворительных оценок получено по всем предметам.

14. Воспользовавшись записью из варианта 7, определить какой из предметов был сдан группой лучше всего.

15. Воспользовавшись записью из варианта 7, определить какой процент студентов не имеет задолженностей.

16. Опишите запись ТРАНСПОРТ и поместите в неё следующую информацию: рейс(номер рейса). Ф.И.О.(Фамилия, имя, отчество пассажира), багаж (количество вещей), вес (в кг.). Определить число пассажиров, вес вещей которых превышают 20 кг.

Page 53: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

17. Воспользовавшись записью ТРАНСПОРТ, из варианта 16 определить, имеется ли пассажир, багаж которого состоит из одной вещи весом меньше 20 кг.

18. Воспользовавшись записью ТРАНСПОРТ, из варианта 16 определить, средний вес багажа.

19. Воспользовавшись записью ТРАНСПОРТ, из варианта 16 определить, количество пассажиров, вес багажа которых превосходит средний.

20. Воспользовавшись записью ТРАНСПОРТ, из варианта 16 определить, количество пассажиров, имеющих более двух вещей.

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

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

1.Теоретические сведения.Файл представляет собой совокупность данных, в которой все данные

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

..…

ОКНО

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

TYPE <имя типа> = FILE OF <тип элемента>Например, определение типов CONST MAX = 80; TYPE M=1. . MAX; F = ARRAY [M] OF CHAR; FF = FILE OF F;

Page 54: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

задает файл FF , элементами которого являются массивы символов длинной M. Файловый тип можно определить и в разделе переменных:

VAR <имя файла>: FILE OF <тип элементов>; Переменная, имеющая смысл файла, описывается в разделе переменных. Над файлами можно выполнять некоторые действия: запись (создание и пополнение файла) и чтение. Операция записи добавляет к файлу новую компоненту. Новые элементы могут добавляться только к концу файла. Рассмотрим некоторые процедуры, которые можно выполнять над файлами: 1) связь программного имени файла с дисковым именем файла ASSIGN (F, ‘A: FILE. EXE’); F- программное имя файла; A- имя диска; FILE.EXE- дисковое имя и расширение (с этим расширением хранится на диске созданный файл). 2) открытие существующего файла на диске для чтение (файловое окно установится на начало файла) RESET (F); 3) открытие нового файла на диске для записи (файловое окно устанавливается на начало файла) REWRITE (F); 4) чтение из файла READ (F, V); V -имя переменной. Через текущее окно считывается компоненты файла в переменную V. V имеет тип компоненты файла. 5) запись в файл WRITE (F, V); Записывается значение V в компоненту файла. 6) открытие файла и установка окна для добавления символовв конец существующего файла APPEND (F); 7) закрытие файла. CLOSE (F);Пример: Создать, а затем прочитать файл, в котором содержатся квадраты чисел от 1 до 100. PROGRAM KO; VAR F: FILE OF REAL; {определение файла} V: REAL; I: INTEGER; BEGIN ASSIGN (F,’A: REL.DAT’); {связь программного имени файла F с дисковым REL.DAT} REWRITE (F); {открытие файла для записи} FOR I: =1 TO 100 DO {начало цикла} BEGIN V: =SQR (I); {вычисление очередного

Page 55: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

значения квадрата числа} WRITE (F, V); {запись полученного значения V в файл} END; {конец файла} CLOSE (F); {закрытие файла} RESET (F); {открытие файла для чтения} FOR I: =1 TO100 DO BEGIN READ (F, V); {чтение из файла} WRITE (V); {вывод прочитанного значения} END; CLOSE (F); {закрытие файла} END.

В приведенном примере было заранее известно, что должно быть прочитано 100 значений. Если это заранее не известно, то непрерывно должна быть проверка на признак конца файла. Для этого используют функцию EOF(F). Эта функция дает значение TRUE, если окно на конце файла и FALSE –в противном случае.

Важное место среди данных файлового типа занимают текстовые файлы, т.е. файлы, компоненты которых относятся к символьному типу CHAR. Для описания текстовых файлов определен стандартный тип TEXT. Например,

VAR F: TEXT;Отличительной особенностью текстовых файлов является деление их на

строки с помощью специального маркера конца строки. С маркером конца строки связана стандартная функция EOLN. Она дает значение TRUE, если прочитаны все литеры в строке и FALSE в противном случае. Есть еще две специальные процедуры для текстового файла: 1) READLN(F)-пропустить все символы текущей строки, включая маркер конца строки, и установить указатель на начало следующей строки; 2) WRITELN(F)-поставить маркер конца строки в текущем окне.

2.Задание.1.Взять задание из таблицы согласно заданному варианту и составить программу.2.Создать в редакторе Norton Commander текстовый файл, следующего содержания: Павлодарский университет. Кафедра (указать кафедру). Специальность (указать специальность). Группа (указать номер группы). (Указать имя, отчество, фамилию студента).Написать программу для чтения текстового файла в Паскале.

Page 56: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

3.Контрольные вопросы.1.Что такое файл?2.Отличие файла от массива.3.Как определяется файловый тип в программе?4.Процедуры над файлами.5.Назначение функций EOF и EOLN.6.Понятие текстового файла и его особенности.

Таблица 1Номер варианта

Задание

1. Создать файл X компонентами которого являются элемента массива M.Переписать из файла X в файл Y все компоненты, которые стоят на четных местах. Прочитать файл Y.M=(0,1; 5,6; 0.8; 2,4; 7,3; 6,8; 0,5; 2,3; ).

2. Создать файл X, каждая компонента которого вычисляется по формуле:

I=1,2,…10. Переписать в файл Y из файла X первые 5 компонент файла X. Прочитать файл X.

3. Создать файл A, компонентами которого являются числа от 1 до 20.Переписать в файл B из файла A те компоненты файла A, которые делятся без остатка на 2.Прочитать файл B.

4. Создать файл C, компонентами которого являются числа от 1 до 1000.Переписать в файл D из файла C те компоненты, которые являются полными квадратами. Прочитать файл D.

5. Создать файл P, компонентами которого являются элементы массива M. Переписать из файла P в файл G все компоненты в обратном порядке. Прочитать файл G.M=(0,4; 6,1; 2,3; 0,7; 6,2; 3,1; 0,9; 10,1).

6. Создать файл F, компонентами которого являются элементы массива M. Переписать в файл G все компоненты, которые меньше 5.Прочитать файл G.M=(2,7; 6,8; 0,4; 3,7; 8,4; 7,2; 0,2; 0,1).

7. Создать файл A, компоненты которого вычисляются по формуле:

I=1,2,…10.

Получить файл B, каждая компонента которого равна компоненте файла A в квадрате ( ).Прочитать файл B.

Page 57: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

8. Создать файл A, компонентами которого являются элементы массива C в квадрате. Получить файл D, каждая компонента которого равна компоненте файла A, увеличенной в два раза. Прочитать файл D.C=(4; 2; 3; 8; 6; 7;).

9. Создать файл F, компоненты которого вычисляются по формуле:

I=1,2,…8.

Получить файл R, компоненты которого равны компонентам файла F, стоящим на нечетных местах. Прочитать файл R.

10. Создать файл G, компонентами которого являются элементы массива D.Переписать в файл F все компоненты массива D, которые больше 0,5. Прочитать файл F.D=(0,1; 0,2; 6,7; 0,6; 0,3; 2,8; 0,4;).

11. Создать файл K, компонентами которого являются все четные числа в диапазоне от 2 до20.Переписать в файл E все компоненты файла K, предварительно уменьшив их в десять раз. Прочитать файл E.

12. Создать файл F, каждая компонента которого вычисляется по формуле:

I=1,2,…8.

Записать в файл L сумму и произведение всех компонент файла F. Прочитать файл L.

13. Создать файл Q, компонентами которого являются все нечетные числа от 1 до 19. Записать в файл P сумму пяти первых и сумму всех остальных компонент файла Q. Прочитать файл P.

14. Создать файл A, компонентами которого являются элементы массива L. Записать в файл B квадраты компонент файла A, стоящие на четных местах. Прочитать файл B.L=(0,6; 1,8; 0,7; 6,7; 5,1; 2,5; 4,7; 2,9;).

15. Создать файл D, компоненты которого вычисляются по формуле:

I=1,2,…6.

Записать в файл D суммы компонент файла C, стоящих на четных и нечетных местах. Прочитать файл D.

16. Создать файл F, компонентами которого являются элементы массива E. Записать в файл L первые пять компонент файла F, увеличенные в два раза. Прочитать файл L.E=(0,3; 3,1; 5,2; 0,7; 0,1; 6,8; 4,1; 3,7;).

Page 58: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

17. Создать файл K, компонентами которого являются элементы массива M, уменьшенные в два раза. Записать в файл F сумму компонент файла K, которые больше 5. Прочитать файл F.M=(10,7; 6,1; 0,6; 1,7; 6,8; 4,9; 1,9; 7,2;).

18. Создать файл Q, компоненты которого вычисляются по формуле:

I=1,2,…10

Записать в файл R первые пять компонент файла Q в обратном порядке.

19. Создать файл S, компонентами которого являются элементы массива T. Записать в файл X первые пять компонент файла S и сумму всех остальных. Прочитать файл X.T=(0,2; 0,4; 6,1; 5,8; 4,9; 9,8; 7,1; 2,4;).

20. Создать файл Y, компоненты которого вычисляются по формуле:

I=1,2,…10

Записать файл Z все компоненты и сумму последних четырех компонент файла Y. Прочитать файл Z.

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

Тема: Разработка программ с использованием графических построений.Цель: Научиться работать с монитором в графическом режиме, изучить

графические возможности среды Pascal.1. Теоретические сведения.

Установка графического режима.Для использования графических возможностей необходимо подключить к

программе модуль Graph.Прежде чем использовать графические возможности, необходимо

перевести монитор из текстового режима в графический. Это осуществляется процедурой:

Procedure InitGraph (Var gd, gm:Integer; Path:String),в которой переменная gd определяет тип графического драйвера, переменная gm – режим работы графического адаптера, константа Path – маршрут поиска файла драйвера. Для автоматического определения типа драйвера можно использовать процедуру Detect:

gd: = detect;InitGraph (gd, gm, C:\Bp\Bgi);

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

Процедура Procedure CloseGraph;

Page 59: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

завершает работу адаптера в графическом режиме и восстанавливает текстовый режим работы экрана.

В ходе работы в графическом режиме можно использовать функцию:Function GraphResult : Integer;

возвращающюю значение, в котором закодирован результат последнего обращения к графическим процедурам. Для каждого значения в модуле Graph определена константа: Const

grOk = 0; {Нет ошибок}grInitGraph = -1; {Не инициализировался графический режим}grNotDetect = -2; {Не определен тип драйвера}grFileNotFind = -3; {Не найден графический драйвер} grInvalidDriver = -4; {Неправильный тип драйвера grNoLoadMem = -5; {Нет памяти для размещения драйвера}grNoScanMem = -6; {Нет памяти для просмотра областей}grNoFloodMem = -7; {Нет памяти для закраски областей}grFontNotFound = -8; {Не найден файл со шрифтом}grNoFontMem = -9; {Нет памяти для размещения шрифта}grInvalidMode = -10 {Неправильный графический режим}grError = -11; {Общая ошибка}grError = -12; {Ошибка ввода-вывода}grInvalidFont = -13; {Неправильный формат шрифта}grInvalidFontNum = -14; {Неправильный номер шрифта}

После обращения к функции GraphResult признак ошибки сбрасывается, поэтому повторное обращение к ней вернет ноль.

С помощью функцииFunction GraphErrorMzg(Code:Integer):String;

можно по коду ошибки Code получить текстовое сообщение.Ниже приведена типичная последовательность операторов для инициации

графического режима с автоматическим определением типа драйвера:Var gd, gm, Error: Integer;begin

gd: = Detect; {Автоопределение драйвера}InitGraph (gd,gm,'C:\Bp\Bgi'); {Инициируем графику}Error: = GraphResult; {Получаем результат}If Not (Error = grOk) then {Проверяем ошибку} Begin

{Выводим сообщение об ошибке}Writeln (GraphErrorMsg(Error)); ……..

endelse {нет ошибки} Begin ….{команда работы с графикой}

Page 60: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

CloseGraph {Закрывается графический режим} end

end.

Координаты.Экран монитора в графическом режиме представляет собой множество

точек, изменяя цвет которых можно получить графическое изображение. Каждая точка имеет свои координаты. Т.о., экран в графическом режиме можно рассматривать как координатную плоскость (см. рис.1). Стандартный размер экрана монитора SVGA составляет 640*480 пиксел (точек). Левый верхний угол экрана имеет координаты (0,0). Размерность экрана можно получить с помощью функции типа Integer GetMaxX и GetMaxY, которые возвращают максимальные

координаты экрана в текущем режиме работы соответственно по горизонтали (по X) и вертикали (по Y).

В графическом режиме, аналогично курсору в текстовом режиме, имеется графический указатель. Его координаты можно получить с помощью функции типа Integer GetX и GetY. Процедура

Procedure MoveRel (dX, dY: Integer).Здесь dX, dY – приращение новых координат указателя (соответственно

по горизонтали и вертикали) относительно того положения, которое занимал указатель к моменту обращения к процедуре.

Цвета.Процедура

Procedure SetColor (Color: Word);устанавливает текущий цвет Color для выводимых линий и символов. В модуле Graph определены точно также те константы для задания цвета, как и в модуле Сrt.

ФункцияFunction GetColor:Word

возвращает код текущего цвета, а функцияFunction GetMaxColor:Word

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

Procedure SetBkColor (Color:Word)устанавливает цвет фона, а функция

Function GetBkColor:Wordвозвращает значение, соответствующее текущему цвету фона.Процедура

Procedure ClearDevice;

X

Y

O

Page 61: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

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

Линии и точки.Процедура

Procedure PutPixel (X,Y: Integer): Wordвыводит точку с координатами X, Y цветом Color.

ФункцияProcedure GetPixel (X,Y: Integer): Word

возвращает значение, соответствующее цвету пиксела с координатами (X,Y).Процедура

Procedure Line (X1, Y1, X2, Y2:: Integer);вычерчивает линию с координатами начала (X1,Y1) и конца (X2,Y2). Линия вычерчиваетcя текущим стилем (смотри далее) и текущим цветомПроцедура

Procedure LineTo(X,Y: Integer);вычерчивает линию от текущего положения указателя до положения, заданного его новыми координатами (X,Y). Aналогичным образом, Процедура

Procedure LineRel(dX,dY: Integer);вычерчивает линию от текущего положения указателя до положения, заданного приращения его новыми координатами. В процедурах LineTo и LineRel линия вычерчивается текущим стилем и текущим цветом.Процедура

Procedure SetLineStyle (Type, Pattern, Thick:Word);устанавливает новый стиль вычерчивания линий. Тип линии Type может быть задан с помощью одной из следующих констант:

ConstSolidln = 0; {Сплошная линия}Dottedln = 1; {Точечная линия}Centerln = 2; {Штрих-пунктирная линия}Dashedln = 3; {Пунктирная линия}UserBittn = 4; {Узор линии определяется пользователем}

Параметр Pattern учитывается только для линий, вид которых определяется пользователем (т.е. Type=UserBitln).Толщина линий Thick может быть задана одним из двух значений:

ConstNormWidth = 1; {Толщина в один пиксел}ThickWidth = 3; {Толщина в три пиксел}

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

Многоугольники.

ПроцедураProcedure Rectаngle( X1,Y1,X2,Y2: Integer );

Page 62: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

270-5400-90

Рис. 2.

вычерчивает прямоугольник с координатами левого верхнего угла (X1,Y1) и правого нижнего угла (X2,Y2).Прямоугольник вычерчивается с использованием текущего цвета и текущего стиля линий.Процедура

Procedure DrawPoly(N:Word;var Points);вычерчивает произвольную ломанную линию, заданную координатами точек

излома. Здесь:N – количество точек излома, включая обе крайние точки,Points – одномерный массив из элементов типа PointType, описанного в модуле Graph следующим образом:Type PointType = Record

x,y:Word; end;

При вычерчивании используется текущий цвет и текущий стиль линии.

Дуги, окружности, эллипсы.Процедура

Procedure Circle( X,Y: Integer; R: Word );вычерчивает окружность с центром в точке (X,Y) и радиусом R. Окружность выводится текущим цветом. Толщина линии устанавливается текущим стилем, вид линии всегда SolidLine (сплошная).Процедура

Procedure Arc (X,Y: Integer; BegA, EndA, RX, RY:Word);Черчит дугу окружности. Здесь X,Y – координаты центра; BegA, EndA – соответственно начальный и конечный углы дуги; R- радиус. Углы отсчитываются против часовой стрелкии указываются в градусах. Нулевой угол соответствует горизонтальному направлению вектора слева направо. На рис.2 изображены дуги с углами 0 и 90, а также 270 и 540 градусов.

ПроцедураProcedure Ellipse (X,Y: Integer; BegA, EndA, RX, RY:Word);

вычерчивает эллипсную дугу. Здесь X,Y – координаты центра; BegA, EndA – соответственно начальный и конечный углы дуги; RX,RY – горизонтальный и вертикальный радиусы эллипса в пикселах. При вычерчивании дуги эллипса используются те же соглашения относительно линий, что и в процедуре Circle, и те же соглашения относительно углов, что и в процедуре Arc.

Заполнения.Процедура

Procedure SetFillStyle(Fill, Color: Word);

Page 63: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

Устанавливает стиль заполнения. Здесь Fill – тип заполнения; Color – цвет заполнения. С помощью заполнения можно покрывать какие-либо фрагменты изображения периодически повторяющимся узором. Для указания типа заполнения можно использовать следующие константы:Const

EmptyFill = 0; {Заполнение фоном, узор отсутствует}SolidFill = 1; {Сплошное заполнение}LineFill = 2; {Заполнение ----}LtSlashFill = 3; {Заполнение /////}SlashFill = 4; {Заполнение утолщенными ///}

BkSlashFill = 5; {Заполнение утолщенными \\\}LtBkSlashFill = 6; {Заполнение \\\\\}HatchFill = 7; {Заполнение ++++}XHatchFill = 8; {Заполнение ххххх}InterleaveFill = 9; {Заполнение в прямоугольную клеточку}WideDotFill = 10; {Заполнение редкими точками}CloseDotFill = 11; {Заполнение частыми точками}

ПроцедураProcedure FloodFole (X,Y: Integer; Border: Word);

заполняет произвольную замкнутую фигуру, используя текущий стиль заполнения (узор и цвет). Здесь – X,Y – координаты любой точки внутри замкнутой фигуры; Border – цвет граничной линии. Если фигура незамкнута, заполнение “разольется” по всему экрану.Процедура

Procedure Bar (X1,Y1, X2, Y2: Integer);заполняет прямоугольную область экрана используя текущий образец

узора и текущий цвет заполнения. Здесь (X1, Y1) – координаты левого верхнего угла, (X2, Y2) – правого нижнего угла запрашиваемой области.Процедура

Procedure Bar3D(X1,Y1,X2, Y2, Depth:Integer;Top:Boolean);вычерчивает трехмерное изображение параллелепипеда и закрашивает его переднюю грань. Здесь (X1,Y1) и (X2,Y2) – координаты левого верхнего и правого нижнего углов передней грани; Depth – третье измерение трехмерного изображения в пикселах (“глубина”); Top – способ изображения верхней грани. Если Top=True, верхняя грань параллелепипеда вычерчивается. В качестве значения этого параметра может использоваться одна из следующих констант, определенных в модуле Graph:Const

TopOn = True;TopOff = False;

При вычерчивании используется текущий стиль линий (SetLineStyle) и текущий цвет (SetColor). Передняя грань заливается текущим стилем заполнения (SetFillStyle)Процедура

Procedure FillEllipsd (X, Y, RX, RY: Integer);

Page 64: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

обводит линией и заполняет эллипс. Здесь X, Y – горизонтальный и вертикальный радиусы эллипса в пикселах. Эллипс обводится линией, заданной процедурами SetLineStyle и SetColor, и заполняется с использованием параметров, установленных процедурой SetFillStyleПроцедура

Procedure FillEllipse (X, Y, RX, RY: Integer);Обводит линией и заполняет эллипс. Здесь X, Y – координаты центра; RX,RY – горизонтальный и вертикальный линией, заданной процедурами SetLine Style и SetColor, и заполняется с использоваеи параметров, установленных процедурой SetFillStyle.

ПроцедураPprocedure Sector (X,Y:Integer;BegA, EndA,RX, RY:Word);

вычерчивает и заполняет эллипсный сектор. Здесь BegA, EndA – соответственно начальный и конечный углы эллипсного сектора. Остальные параметры обращения аналогичны параметрам процедуры FillEllipse.Процедура

Procedure PieSlice (X,Y:Integer;BegA,EndA,R:Word);вычерчивает и заполняет сектор окружности. В отличии от процедуры Sector, указывается лишь один радиус R, остальные параметры аналогичны параметрам процедуры Sector.

Вывод текста.Описываемые ниже стандартные процедуры и функции поддерживают

вывод текстовых сообщений в графическом режимеПроцедура

Procedure OutText (Text : String)выводит текстовую строку Text, начиная с текущего положения указателя, в состветствии с установленным стилем и выравниванием (см. далее). Аналогичная процедура

Procedure OutTextXY (X,Y:Integer; Text:String)выводит строку, начиная с заданного места. При этом указатель не меняет своего положения.Процедура

Procedure SetTextStyle (Font, Direct, Size:Word)устанавливает стиль текстового вывода на графический экран. Здесь Font – номер шрифта (от 1 до 10); Direct- код направления ( HorizDir=0 – слева – направо; VortDir=1-снизу – вверх); Size – размер шрифта (от 1 до 10).Процедура

Procedure SetTextJustify (Horiz, Vert: Word)задает выравнивание выводимого текста по отношению к текущему положению указателя или к заданным координатам. Здесь Horiz – горизонтальное выравнивание;Vert – вертикальное выравнивание. В качестве фактических параметров можно использовать следующие константы:Const

LeftText = 0; {Указатель слева от текста}

Page 65: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

CenterText = 1; {Симметрично слева и справа, сверху и снизу}RightText = 2; {Указатель справа от текста}BottomText; {Указатель снизу от текста}TopText = 2; {Указатель сверху от текста}.

В некоторых случаях могут пригодиться функцииFunction TextWidth(Txt:String):Word;Function TextHeight(Txt:String):Word;

которые возвращают соответственно длину и высоту текста в пикселах выводимой текстовой строки с учетом текущего стиля вывода, заданного процедурой SetTextStyle.Вопросы для самоконтроля.1. Установление графического режима.2. Контроль ошибок графических операций. 3. Координаты точек на экране.4. Управление цветом.5. Вывод на графический экран линий и точек.6. Вывод многоугольников, дуг, окружностей, эллипсов.7. Заполнение фрагментов графического экрана.

3. Задание.Написать программу, которая выводит на графический экран план

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

4. Список литературы1. Новичков В.С. «Алгоритмические языки в техникуме». – М.: Высшая

школа, 1990. – 222 стр.2. Боон К. «Паскаль для всех». – М.: Энергоатомиздат, 1988. – 188 стр.3. Савельев А.Я. «Языки программирования» (Паскаль, ПЛ/М). – М.: Высшая

школа, 1987. – 142 стр.

СодержаниеЛабораторная работа №1............................................................................................1Лабораторная работа №2..........................................................................................14Лабораторная работа №3..........................................................................................24Лабораторная работа №4..........................................................................................30Лабораторная работа №5..........................................................................................32Лабораторная работа №6..........................................................................................37

Page 66: Лабораторная работа №1psu.kz/arm/upload/umk/78523.doc · Web viewФ СО ПГУ 7.18.3/40 Министерство образования и науки Республики

Лабораторная работа №7..........................................................................................44Лабораторная работа №8..........................................................................................49Лабораторная работа №9..........................................................................................52Лабораторная работа № 10.......................................................................................57