лабораторные работы паскаль. Практикум по программированию на языке Паскаль Учебное пособие
Скачать 0.89 Mb.
|
Министерство образования Российской Федерации Восточно-Сибирский государственный технологический университет Лабораторный практикум по программированию на языке Паскаль Учебное пособие Улан-Удэ, 2004 2 УДК 681.3.06 Лабораторный практикум по программированию на языке Паскаль: Учебное пособие. / Под общ. ред. Л.В.Найхановой и Н.Ц. Бильгаевой. - 3-е изд. доп. и перераб., - Улан-Удэ, 2004. - 176 с. Учебное пособие предназначено для обучения основным понятиям и конструкциям языка Паскаль, основным приемам, принятым в практическом программировании. Оно построено в виде лабораторного практикума, содержащего краткие теоретические сведения по конкретной теме, контрольные вопросы, задание и методические указания к его выполнению, а также варианты индивидуальных заданий. Пособие ориентировано на студентов младших курсов, изучающих дисциплину "Программрование". Пособие разработано коллективом преподавателей кафедры систем информатики Восточно-Сибирского технологического государственного университета под общей редакцией Л.В. Найхановой и Н.Ц. Бильгаевой. Первое издание выходило в 1994 году. Рецензенты: Хулукшинов Р.Г. - кандидат техничексих наук , доцент ВСГТУ; Мадаева Л.К. - кандидат экономических наук, доцент ВСГТУ. Печатается по решению научно-методического совета Восточно-Сибирского государственного технологического университета. Восточно-Сибирский государственный технологический университет, 2004 г. 3 ПРЕДИСЛОВИЕ Настоящее пособие существенно отличается от имеющихся публикаций по языку Паскаль методикой изложения. По своей структуре все разделы одинаковы и отражают процесс обучения программированию. Они содержат теоретическую часть, в которой кратко изложены основные аспекты языка по рассматриваемой теме, контрольные вопросы и варианты индивидуальных заданий, предназначенные не только для повторения теории, но и для того, чтобы обратить внимание студента на различные приемы практического программирования предлагаемых задач. Достоинством пособия является то, что наряду с фрагментами программ, иллюстрирующих особенности выполнения отдельных операторов, приводятся полные тексты программ с подробными комментариями. Последовательность материала позволяет, начиная с первой же темы, приступить к практическому программированию на языке Паскаль. В пособии рассматриваются стандартный язык Паскаль и Турбо-Паскаль. Это позволяет использовать данное пособие для обучения программированию как на стандартном Паскале, так и на Турбо-Паскале. Описание реальных программ, связанных с разработкой человеко-машинного интерфейса, модульного программирования и особенностей файловой системы, ориентировано на интегрированную среду Турбо-Паскаля. Пособие предназначено для студентов всех специальностей, изучающих дисциплину "Программирование и алгоритмические языки". Однако, простота и последовательность изложения материала, наличие большого количества примеров, методических рекомендаций и программ с тестовыми примерами делают это пособие общедоступным. Оно с успехом может быть использовано для самостоятельного изучения языка Паскаль. Пособие содержит предисловие, шестнадцать лабораторных работ и заключение, в подготовке которых приняли участие следующие преподаватели кафедры систем информатики ВСГТУ: лабораторная работа N 1 - С.Б. Ябжанова, Базарон С.А; лабораторная работа N 2 - А.Е. Бордоева, Н.Ц. Бильгаева; лабораторная работа N 3 - Н.Ц. Бильгаева; лабораторная работа N 4 - Л.П. Бильгаева, Н.Н Аюшеева; лабораторная работа N 5 - С.В. Дамбаева, Л.В. Найханова, Н.Ц. Бильгаева; лабораторная работа N 6 - С.В. Дамбаева, Л.В. Найханова, Морохоев В.В.; лабораторная работа N 7 - С.В. Дамбаева, Л.В. Найханова; лабораторная работа N 8 - Л.П. Бильгаева, С.Д. Данилова; лабораторная работа N 9 - Л.П. Бильгаева, Базарон С.А; 4 лабораторная работа N 10 - Л.П. Бильгаева, Н.Н. Аюшеева; лабораторная работа N 11 - Л.В. Найханова; лабораторная работа N 12 - С.Д. Данилова, Л.Б. Доржиева, Л.В.Найханова; лабораторная работа N 13 - Л.П. Бильгаева; лабораторная работа N 14 - В.П. Дармахеев, Е.А. Хартикова, Л.В.Найханова; лабораторная работа N 15 - Е.А. Хартикова, Е.Г. Чимитова, Л.В.Найханова; лабораторная работа N 16 - Н.Ц. Бильгаева, Л.В. Найханова; введение, заключение - Л.В. Найханова, Н.Ц. Бильгаева. Все замечания и пожелания по пособию авторы просят направлять на кафедру систем информатики ВСГТУ по адресу: 670042, г. Улан-Удэ, ул. Ключевская, 40а. 5 ЛАБОРАТОРНАЯ РАБОТА N1 Тема: "Стандартные типы данных и выражения" Цель работы Ознакомиться со стандартными типами данных и выражениями языка Паскаль. Краткие сведения из теории 1.1. Стандартные типы данных Тип данных определяет возможные значения констант, переменных, функций, выражений, принадлежащих к этому типу, форму представления в ЭВМ и операции, которые могут выполняться над ними. Все типы данных делятся на простые и сложные. Простые типы - это стандартные и переменные типы данных. Переменные типы - это ограниченные, перечислимые, регулярные, строковые, структурные и ссылочные. Сложные типы - это типы данных, которые задаются в разделе типов и строятся на базе простых. В настоящей работе будут рассмотрены только стандартные типы. Стандартными являются целый со знаком INTEGER, целые без знака BYTE и WORD, действительный REAL, логический BOOLEAN и символьный CHAR. Данные представляются в программе в виде констант и переменных. При выполнении программы в каждый момент времени любая переменная имеет некоторое значение (константу). Это значение и переменная должны относиться к одному типу данных. 1.1.1. Данные целого типа со знаком Константа целого типа (целая константа) - это последовательность цифр со знаком ('+', '-') или без него. Примеры констант целого типа: -324, 16, 0, +9352, 1024. Диапазон целых чисел зависит от конкретного типа ЭВМ. Для 16-разрядного процессора диапазон изменяется в пределах от -32768 до +32767. Переменные, принимающие в качестве своих значений константы целого типа, относятся к целому типу (тип INTEGER). Над данными целого типа можно выполнять следующие арифметические операции, которые дают целый результат: + сложение; - вычитание; * умножение; DIV деление с отбрасыванием дробной части; MOD получение целого остатка при делении целого данного на целое. Пример: A, B, N - переменные целого типа, принимающие значения A = 25, B = 2, N = - 17. В этом случае допустимы следующие операции: операция результат A + 51 76 B - A -23 B * N -34 A DIV B 12 A MOD B 1 1.1.2. Данные целого типа без знака Данные целого типа без знака предоставляет Турбо-Паскаль. К ним относятся числа без знака длиной в один или два байта. Им соответствуют типы BYTE и WORD. Диапазон представления данных типа BYTE изменяется от 0 до 255, а данных типа WORD - от 0 до 65535. Над данными указанных типов можно выполнять те же операции, что и над данными типа INTEGER. 6 Данные типа BYTE и WORD удобно использовать для индексации массивов, а также в тех случаях, когда переменные принимают только положительные значения. 1.1.3. Данные действительного типа Константы действительного типа могут быть представлены в двух формах: с фиксированной точкой и плавающей точкой. Константы с фиксированной точкой изображаются десятичным числом с дробной частью, которая может быть и нулевой. Дробная часть отделяется от целой с помощью точки. Примеры констант действительного типа с фиксированной точкой: 35.62; -12.005; 55.0. Константами с плавающей точкой являются числа, представленные с десятичным порядком. Они имеют вид: ± mE ± p, где m - мантисса, E - признак записи числа с десятичным порядком, p - порядок числа. Для записи мантиссы m могут использоваться целые числа и действительные числа с фиксированной точкой. В качестве p могут использоваться только целые числа. Примеры записи чисел с плавающей точкой: математическая запись запись на языке Паскаль 2 * 10 n , где n = -4 2E-4 0,32 * 10 n , где n = 4 0.32E+4 -12,75 * 10 n , где n = 11 -12.75E11 Примеры записи действительного числа 253 с плавающей точкой: 0.253E+3, 2.53E+2, 25.3E+1, 253.0E0, 2530E-1, 25300E-2 и т.д. Переменные действительного типа REAL - это переменные, которые в качестве значений принимают числа с фиксированной или плавающей точкой. Над данными действительного типа можно выполнять следующие операции, дающие действительный результат: + сложение; - вычитание; * умножение; / деление. Данные целого и действительного типа называют арифметическими данными. Диапазон представления чисел действительного типа изменяется от 10 -n до 10 n (n = 38). Для различных процессоров отличие в представлении действительных чисел состоит в количестве значащих цифр мантиссы; при работе с 16-разрядным процессором - это 11 неполных шестнадцатеричных цифры ( ± 7FFFFFFFFFF). 1.1.4. Данные логического типа В языке Паскаль имеются две логические константы: TRUE (истина), FALSE (ложь). Логическая переменная принимает одно из этих значений и имеет тип BOOLEAN. Над данными логического типа выполняются следующие операции: OR логическое сложение (или); AND логическое умножение (и); NOT логическое отрицание (не). Логические операции OR и AND являются бинарными и выполняются над двумя величинами, операция NOT - над одной величиной и является унарной операцией. Логический тип определяется таким образом, что FALSE < TRUE. Результатом любой логической операции является логическая переменная со значением FALSE или TRUE. В таблице 1 приведены результаты операций над логическими данными. Таблица 1 A B NOT A A OR B A AND B 7 TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE TRUE FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE TRUE FALSE FALSE Примечание: каждая логическая операция имеет свой ранг старшинства. Самой старшей является операция отрицания. Далее в порядке убывания старшинства следуют умножение и сложение. 1.1.5. Данные символьного типа Символьная, или литерная, константа - это любой символ языка, заключенный в апострофы. Примеры символьных констант: 'B' , ';' , '+' , '5'. Символьная константа занимает один байт памяти. Примечание. Чтобы представить апостроф как символьную константу его повторяют дважды: ''. Внешние апострофы (по одному слева и справа) не входят в константу, они являются признаком символьной константы. Символьная переменная типа CHAR - это переменная, принимающая значение символьной константы. Все символы языка Паскаль упорядочены, т.е. каждый символ имеет свой порядковый номер. Это позволяет применять к символьным данным операции сравнения: <, >, =, <>, >=, <=. Например, результат операции сравнения 'A' < 'B' будет истинным, так как сравниваются их порядковые номера, а они равны 66 и 67 соответственно. 1.1.6. Данные строкового типа В Турбо-Паскале допускается использование последовательности символов, заключенной в апострофы, длиной не более 256 символов. Например: 'Sigma', 'Alfa', 'Группа 623-1a' и т.д. Такие последовательности относятся к строковым типам данных. Более подробно строковые данные рассмотрены в лабораторной работе N 8. 1.2. Выражения В любом языке программирования определены два типа выражений: арифметические и логические. В состав выражения могут входить константы, переменные, стандартные функции, объединенные круглыми скобками и знаками операций. Константы, входящие в выражение, могут быть объявлены либо в разделе CONST, либо непосредственно в самом выражении. Переменные должны иметь уникальное имя, называемое идентификатором, и описываются в разделе VAR. Идентификаторы могут содержать до 16 символов, причем первый символ должен быть либо буквой, либо символом "_" (подчеркивание). В идентификаторах разрешается использовать как строчные, так и прописные буквы латинского алфавита, цифры и специальные символы. 1.2.1. Стандартные функции При записи стандартных функций следует учитывать следующие правила: 1) имя функции записывается буквами латинского алфавита; 2) аргумент (параметр) функции записывается в круглых скобках после имени функции; 3) аргументом функции может быть константа, переменная или арифметическое выражение. В таблице 2 приведены основные стандартные функции. Таблица 2 Функция Назначение Тип аргумента Тип функции ABS(x) Вычисление абсолютного значения х REAL INTEGER REAL INTEGER SQR(x) Вычисление квадрата х (х*х) REAL INTEGER REAL INTEGER 8 SIN(x) Вычисление синуса х REAL INTEGER REAL REAL COS(x) Вычисление косинуса х REAL INTEGER REAL REAL ARCTAN(x) Вычисление арктангенса х REAL INTEGER REAL REAL EXP(x) Вычисление экспоненты REAL INTEGER REAL REAL EXP10(x) 10 n , где n=х REAL INTEGER REAL REAL LN(x) ln x REAL INTEGER REAL REAL LOG(x) log x REAL INTEGER REAL REAL SQRT(x) Вычисление квадратного корня из х REAL INTEGER REAL REAL TRUNC(x) Определение целой части от х REAL INTEGER INTEGER INTEGER ROUND(x) Округление х в сторону ближайшего целого REAL INTEGER NTEGER INTEGER ODD(x) TRUE, если x - нечетное FALSE, если х - четное INTEGER BOOLEAN SUCC(x) а) х+1 б) следующий символ после х в упорядоченном множестве символов INTEGER CHAR INTEGER CHAR PRED(x) а) х-1 б) предыдущий по отношению к х символ в упорядоченном множестве символов INTEGER CHAR INTEGER CHAR ORD(S порядковый номер символа S в упорядоченном множестве символов CHAR INTEGER CHR(I) определяет символ, стоящий под номером I в упорядоченном множестве символов INTEGER CHAR В данной таблице не приведены стандартные функции работы со строковыми данными. Они рассмотрены в лабораторной работе N 8. Примеры использования стандартных функций: 1) X = 21.53 TRUNC(X) = 21 ROUND(X) = 22 2) X = -2.7 TRUNC(X) = -2 ROUND(X) = -3 3) ORD('5') = 53 ORD('5') = 58 4) CHR(66) = 'B', CHR(57) = '9' 5) PRED('B') = 'A' PRED(100)= 99 6) SUCC('C') = 'D' SUCC(12) = 13 Примечания: 1. В Паскале нет операции возведения в степень. При необходимости вычисления а n , n = х, используют имеющиеся стандартные функции, например: a n = Exp(n * Ln(A)). 2. Из таблицы стандартных функций следует справедливость равенств: PRED(S) = CHAR(ORD(S) - 1) CHR(ORD(S)) = S SUCC(S) = CHAR(ORD(S) + 1) ORD(CHR(I)) = I 9 3. Значения FALSE и TRUE можно рассматривать как упорядоченное множество, состоящее из двух элементов. При этом определены следующие значения стандартных функций: ORD(FALSE) = 0 SUCC(FALSE) = TRUE ORD(TRUE) = 1 PRED(TRUE) = FALSE. 1.2.2. Арифметические выражения Арифметическое выражение представляет собой совокупность одного или нескольких арифметических констант, переменных, функций, соединенных знаками арифметических операций и круглыми скобками. Следовательно, константа, переменная, функция являются частными случаями арифметического выражения. При записи выражений необходимо выполнять следующие правила: 1. Все составные части выражения записываются в одну строку. Поднимать и опускать символы над строкой не разрешается. 2. Использовать в выражениях можно скобки только одного типа - круглые. Применение в выражениях фигурных и квадратных скобок запрещается, так как они имеют особое назначение. Число открывающихся скобок всегда должно равняться числу закрывающихся скобок. 3. Нельзя записывать последовательно два знака арифметических операций, их необходимо разделить круглой скобкой. 4. Вычисление выражений производится слева направо в соответствии со старшинством операций. Установлен следующий в порядке убывания приоритет арифметических операций: а) умножение, деление; б) DIV, MOD; в) сложение, вычитание. Необходимый порядок вычислений в выражениях задается с помощью скобок. Выражения в скобках вычисляются первыми. Если выражений в скобках несколько, и они вложены друг в друга, то вычисление начинается в самых внутренних скобках и далее последовательно переходит во внешние скобки. Если аргумент функции задан в виде выражения, то сначала определяется значение этого выражения, а затем значение функции. Если операции, следующие одна за другой, имеют одинаковое старшинство, то они выполняются последовательно в порядке их записи. 1.2.3. Логические выражения Логические выражения строятся из логических данных, логических операций и операций отношения. В операциях отношения могут участвовать арифметические и логические выражения, а также символьные данные. Результатом логического выражения является значение TRUE или FALSE . При вычислении логических выражений принят следующий приоритет операций (по старшинству): 1) арифметические операции; 2) операции отношений; 3) логические операции. При наличии скобок сначала выполняются действия в скобках (в первую очередь самые внутренние), а затем вне скобок. В круглые скобки обязательно заключаются части выражения, стоящие слева и справа от логических операций AND и OR. Пример. Определить результат логического выражения (A > 3) AND (C = 5) OR NOT (A + C < X) при A = 1, C = 3, X = 0. 10 C заданными значениями переменных, входящих в логическое выражение, оно принимает вид: (1 > 3) AND (3 = 5) OR NOT (1 + 3 < 0) Результат вычислений в скобках: (FALSE) AND (FALSE) OR NOT (FALSE). Логические операции выполняются в следующей последовательности NOT - AND - OR: 1) NOT (FALSE) = TRUE; 2) (FALSE) AND (FALSE) = FALSE; 3) (FALSE) OR (TRUE) = TRUE; Результат рассмотренного логического выражения равен TRUE. Контрольные вопросы 1. Перечислите стандартные типы данных в Паскале. 2. Укажите отличие данных действительного и целого типов. 3. Какие переменные называют логическими и какие значения они могут принимать? 4. Какие логические операции вы знаете? 5. Что представляет собой условие? 6. Что понимается под символьными данными? 7. Какие данные называют арифметическими? 8. Перечислите правила записи стандартных функций. 9. Перечислите стандартные функции, предназначенные для работы с арифметическими данными? 10.Перечислите стандартные функции, предназначенные для работы с символьными данными? 11.Что представляет собой арифметическое выражение? 12.Перечислите правила записи арифметических выражений. 13.Что представляет собой логическое выражение? 14.В чем отличие арифметического выражения от логического? 15.Каков порядок вычисления значения логического выражения? Содержание отчета Контрольная работа по рассмотренной теме. Варианты индивидуальных заданий 1. Какие из приведенных ниже записей являются неправильными и почему? а) 7. б) -6.1 в) 0.0 г) 9 д) .0E-2 е) 0.1E-5 ж) -5.3E4 з) +2.3E+3.5 и) -71 к) 0.31 л) .456 м) 2,1 2. Чему равно значение следующих функций? а) TRUNC(5.61) г) TRUNC(-5.61) б) ROUND(17.16) д) ROUND(17.96) в) ROUND(-17.16) е) ROUND(-17.96) 3. Какие из приведенных ниже записей функций являются неправильными и почему? а) ODD(17.1) г) COS(32.1) б) COS(5) д) SIN(0.5) в) SUCC(3.2) е) PRED(7) 4. Какие из приведенных выражений являются правильными с точки зрения языка Паскаль? а) 'A' < 'C' г) '1' > '9' б) FALSE < TRUE д) 'A' < 'B' AND 1 < 2 в) 'O' OR '9' е) ('D' > 'G') AND (1 < 2) 5. Записать на языке Паскаль следующие арифметические выражения: a) ln ( ) cos sin ( ) x x y x x a b − − + ⋅ − 1 2 2 2 б) ( ) log a b a b e arctg x + − ⋅ ⋅ 3 2 1 11 в) x y c x d x z x + + + + − 1 1 г) x a b a b c a b + − − ⋅ − 1 3 2 2 6 1 д) ( ) x a b arctg x e n 3 3 4 0 0001 2 − − ⋅ ⋅ , e) ( ) ( ) e x y x x x y 2 2 1 2 1 2 1 3 3 2 2 − ⋅ − + − − ln cos sin 6. Вычислить значения логических выражений при заданных значениях переменных: а) x>0 AND y=3 OR x + y > 5 AND x-y < 0 при х = 5 и у = 15; б) a<0 AND b<0 AND c<0 при а = 5, в = -3, с = -25.3; в) x > 2 OR y < 3 OR z = y AND x + y + z > 0 при х = 12, у = -20, z = 0; г) x > 0 AND y > 0 OR x < 0 AND y < 0 при х = -2, у = 9; д) x * x + y * y < 49 AND x * x + y * y > 1 при х = 3, у = 4; е) (A < B) AND (X + A < B) OR (C < M) OR E при A = 15.5, B = 8.2, C = -10.6, M = 0, X = 7, E = TRUE. 12 ЛАБОРАТОРНАЯ РАБОТА N2 0>0>0> |