МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «ИВАНОВСКИЙ ГОСУДАРСТВЕННЫЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» КАФЕДРА ИНФОРМАЦИОННЫХ СИСТЕМ И ТЕХНОЛОГИЙ ПРОГРАММИРОВАНИЕ ПАСКАЛЬ МЕТОДИЧЕСКИЕ УКАЗАНИЯ И КОНТРОЛЬНЫЕ ЗАДАНИЯ ПО ИНФОРМАТИКЕ ДЛЯ СТУДЕНТОВ ВСЕХ СПЕЦИАЛЬНОСТЕЙ ИВАНОВО 2016 УДК 681.3 (076) Составители: Ахмадулина Ю.С., Слизнева Т.Е. Программирование. Паскаль.: Методические указания и контрольные задания по информатике для студентов всех специальностей / Ивановский государственный политехнический университет; Сост.: Ю. С. Ахмадулина, Т. Е. Слизнева. - Иваново, 2016. - 27 с. Методические указания содержат информацию для выполнения контрольной работы «Программирование. Паскаль». Задания для самостоятельного выполнения представлены в 10 вариантах. Номер варианта соответствует последней цифре студенческого билета. В каждом разделе приводятся в общем виде операторы, используемые при программировании, рассматриваются примеры составления программ, даются рекомендации, необходимые для выполнения работы, задаются контрольные вопросы. Методические указания предназначены для студентов всех специальностей. Библиогр.: 4 назв. Рецензент: доктор технических наук, профессор кафедры ВПМСИТ Н. А. Коробов Оглавление Язык программирования Паскаль ............................................................................................................ 3 Алфавит и словарь языка Паскаль ............................................................................................................. 3 Типы данных: константы и переменные ................................................................................................... 5 Типы переменных........................................................................................................................................ 5 Алгоритмы линейной структуры ................................................................................................................ 7 Алгоритмы разветвляющейся структуры .................................................................................................. 8 Алгоритмы циклической структуры ......................................................................................................... 10 Например, составим программу для вычисления функции........................................................................ 11 Программирование алгоритмов со структурой вложенных циклов .................................................... 11 Использование подпрограмм .................................................................................................................. 13 Структурный тип данных - массив ........................................................................................................... 14 Пример выполнения контрольной работы ............................................................................................. 15 Контрольная работа №1 по дисциплине «Информатика» для студентов всех специальностей....... 20 Библиографический список…………………………………………………………………………..…………………………………….26 Язык программирования Паскаль Язык программирования Паскаль – язык высокого уровня, относящийся к разряду процедурных (алгоритмических) языков. Разработан в 1970 г. Николаусом Виртом как язык обучения студентов программированию и назван в честь французского учёного Блеза Паскаля. Паскаль вырабатывает навыки соблюдения хорошего строгого стиля программирования, упрощающего разработку сложных программ. Основные привлекательные черты Паскаля — логичность, поддержка концепций структурного и процедурного программирования, работа с динамической памятью, возможность создания своих типов данных. В Паскале программист должен всегда указывать переменные, с которыми работает, и их типы. Строгая типизация данных позволяет снизить количество ошибок в программе. Расширенный вариант этого языка — Turbo Pascal, является очень мощным языком программирования. Интегрированная оболочка Turbo Pascal, разработанная фирмой Borland (ныне Inprise), включающая в себя редактор, компилятор, компоновщик и отладчик, вместе с интерактивной справочной системой сделали разработку программ на Паскале делом простым и приятным. Алфавит и словарь языка Паскаль Для написания программ можно использовать: 1. Прописные строчные буквы латинского алфавита. 2. Цифры от 0 до 9. 3. Шестнадцатеричные цифры от 0 до F. 4. Специальные символы + _ () [] {} * / ‘’ < > плюс минус подчеркивание круглые скобки квадратные скобки фигурные скобки умножить разделить апострофы меньше больше 5. := <> <= # = ; , . : $ ^ @ номер равно точка с запятой запятая точка двоеточие пробел знак денежной единицы тильда коммерческое а Комбинации специальных символов присваивание не равно меньше или равно >= .. больше или равно диапазон значений В программе эти пары символов разделять пробелами нельзя, если они используются как знаки операций. Слова, используемые в Паскале, можно разделить на три группы: зарезервированные слова, стандартные идентификаторы и идентификаторы пользователя. Идентификатор – имя, используемое для обозначения программ, а в программе переменных и постоянных величин, различных процедур, функций, объектов (identification – установление соответствия объекта некоторому набору символов). Зарезервированные слова являются составной частью языка, имеют фиксированное начертание и определенный смысл. Они не могут изменяться программистом и использоваться в качестве имен, вводимых пользователем для обозначения величин. Некоторые зарезервированные слова Absolute And Array Begin Case Const Div Do Downto Else End For Function If Label Mod Абсолютный Логическое И Массив Начало блока Вариант Константа Деление нацело Выполнять Уменьшить до Иначе Конец блока Для Функция Если Метка Остаток от деления Not Or Of Procedure Program Record Repeat String Then To Type Until Uses Var While xor Логическое НЕ Логическое ИЛИ Из Процедура Программа Запись Повторять Строка То Увеличивая Тип До Использовать Переменная Пока Исключающее ИЛИ Стандартные идентификаторы используются для обозначения заранее определенных разработчиками языка типов данных, констант, процедур и функций. Пример: integer, cos, sin, sqrt, read, write и т. д. Идентификаторы пользователя применяются для обозначения меток, констант, переменных, процедур и функций, определенных самим программистом. При этом идентификаторы в программе должны быть уникальными. При написании идентификатора можно использовать прописные и строчные буквы латинского алфавита; идентификатор может начинаться только с буквы или знака подчеркивания; идентификатор может состоять из букв, цифр и знака подчеркивания (пробелы, точки и другие специальные символы запрещены). Русские буквы в программе должны заключаться в апострофы. Типы данных: константы и переменные В Паскале данные разделяются на константы и переменные. В программе константы и переменные определяются идентификаторами (именами) пользователя. Каждая переменная и константа принадлежат к определенному типу данных. Константы – данные, которые не меняют своего значения в процессе выполнения программы. Тип константы автоматически распознается компилятором. Все константы должны быть описаны в разделе, который начинается зарезервированным словом const (constant – константа). Формат: const Имя = значение константы; Пример: Const I=5; Max=100; Min=0; C=(max-min)/2; Переменные – данные, которые могут менять свои значения в процессе выполнения программы. Тип переменных должен быть описан перед тем, как с ними будут выполняться действия. Переменные описываются в разделе, который начинается зарезервированным словом var (variable – переменная). Формат: Var Имя: тип переменной; Пример: Var x, y: integer; Sum: real; i, j: byte; Кроме констант и переменных существуют типизированные константы. Данные этого типа описываются в разделе const, и для них указывается тип, как у переменных. Формат: Const Имя: тип = значение; Пример: Const K: word = $B800; mark: byte = 5; discipline: string=’информатика’; Типы переменных Целочисленный тип. Данные целочисленных типов могут быть представлены как в десятичной, так и в шестнадцатеричной системе. Если число представлено в шестнадцатеричной системе, перед ним без пробела записывается знак $. Диапазон изменений шестнадцатеричных чисел от $0000 до $FFFF. Byte Word 0..255 0..65535 1 байт 2 байта Integer longint 2 байта 4 байта -32768..32767 -2147483648.. 2147483647 Арифметические операции над данными целого типа: +, -, *, /, div (деление нацело), mod (остаток от деления). Операции отношения: =, <>, <, >, <=, =>. Вещественный тип. Для записи вещественных чисел вместо запятой используется точка. Вещественные значения изображаются в форме с плавающей точкой, т.е. парой чисел вида <мантисса>Е<порядок>, и с фиксированной точкой. Например: 4.56Е-05, что означает 4.56 10-5. Real single double extended 2.9Е-39 .. 1.7Е+38 1.5E-45 .. 3.4E+38 5.0E-324 .. 1.7E+308 1.9E-4951 .. 1.1E+4932 6 байт 4 байта 8 байт 10 байт Арифметические операции над данными вещественного типа: +, -, *, /. Операции отношения: =, <>, <, >, <=, =>. Стандартные функции: Функция SIN(X) COS(X) ARCTAN(X) LN(X) EXP(X) SQR(X) SQRT(X) ABS(X) Для функций Назначение синус Х (аргумент задается в радианах) косинус Х (аргумент задается в радианах) арктангенс Х (аргумент задается в радианах) натуральный логарифм Х; ex (экспонента в степени x) Х2 (квадрат Х) (квадратный корень из Х) модуль Х Функция PI Назначение число 3.1415926535897932385 INT(X) целая часть числа Х, результат - real TRUNC (X) целая часть числа Х, результат - integer ROUND(X) округление до ближайшего целого, результат - integer дробная часть числа Х, результат - real Следующее целое число (х+1) Предыдущее целое число (х-1) проверка четности целого числа "X" - функция выдает значение TRUE (истина), если число нечетное, FALSE (ложь) - если число четное FRAC(X) SUCC(X) PRED(X) Odd(X) , , , , , используются математические формулы, позволяющие представить их через стандартные функции: ; ; или arctan(x/sqrt(1-sqr(x)); или arctan(sqrt(1-sqr(x))/x); ; . Порядок выполнения операций: действия в скобках, *, /, div, mod; +, -; =, <>, <, >, <=, =>. Символьный тип. Для данного, соответствующего одиночному символу, используется тип char. Значение символьного данного – любой символ клавиатуры компьютера. В программе значения переменных и констант типа char должны быть заключены в апострофы. Строковый тип. Строка - последовательность любых символов, заключенных в апострофы. Для определения данных строкового типа используется идентификатор string. Булевский тип. Булевский тип данных представляется двумя значениями True (истина) и False (ложь). Применяется в логических выражениях и выражениях отношения. При описании величин этого типа указывают слово boolean. Для размещения в памяти переменной булевского типа требуется 1 байт. Алгоритмы линейной структуры Алгоритм линейной структуры - алгоритм, в котором все предписания выполняются друг за другом в естественном порядке следования. При описании таких алгоритмов в Паскале могут быть использованы следующие операторы: 1) Оператор присваивания а: = V; где а – переменная, v - переменная, константа или выражение. Выражение вида называется рекуррентной формулой и читается как: "новое значение переменной z становится равным старому значению переменной z плюс значение переменной х". 2) Операторы ввода и вывода данных Операторы вывода данных Write (< список вывода >); Writeln (< список вывода >); Операторы ввода данных Read (< список ввода >); Readln (< список ввода >); <Список вывода> может содержать идентификаторы (имена переменных или констант) или текстовые константы (один или несколько символов, заключенных в апострофы), разделенные запятыми, а также форматы. Например, оператор Writeln (‘Полученное значение y=’, y:8:2); выведет полученное значение у = -2,89 с новой строчки, а оператор Write с тем же списком вывода осуществит аналогичный вывод с текущей позиции (без перевода каретки). Оператор Writeln; с пустым списком вывода обеспечит пропуск пустой строки и перевод каретки. < Список ввода > состоит из одного или нескольких идентификаторов, разделенных запятыми. Если в программе стоит оператор Readln (x, у); то во время выполнения программы происходит приостановление, и компьютер будет ожидать ввода двух чисел, разделенных пробелом, т.е. нужно ввести 0.5_2.3<Enter>. Оператор Readln, с пустым <списком ввода> вызовет останов программы до нажатия какой-либо клавиши. 3) Составной оператор Составной оператор – последовательность нескольких операторов, объединённых вместе в операторные скобки begin-end и рассматриваемых как один оператор. Например, Begin x:=0,5; y:=x * x - 6 * sin(x) End; Алгоритмы разветвляющейся структуры Для организации разветвлений в программах используются оператор перехода, условный оператор и оператор выбора. Оператор перехода имеет общий вид записи: GOTO N; где N - метка (LABEL) оператора. Условный оператор имеет два вида записи: IF b THEN a; IF b THEN a1, ELSE а2; где b - логическое выражение (имеющее значение "истина" или "ложь"), а, а1, а2- простой или составной операторы. Оператор выбора имеет вид: CASE <переключатель> OF константа 1: оператор 1; константа 2: оператор 2; ……… константа N; оператор N END; Рассмотрим пример по нахождению действительных корней квадратного уравнения . Уравнение имеет решение, если дискриминант . Если , то уравнение имеет корни Если , то . . Если , то действительных корней уравнение не имеет. Реализуем данный алгоритм в программу, в которой используются операторы перехода и условий. PROGRAM KORNY; VAR A, B, C, D, Xl, X2: REAL; {Раздел описания меток} LABEL 100, 200; BEGIN WRITELN (‘Введите A, B, C’ ); READLN (A, B, C); D: = B*B-4 *A*C; IF D < 0 THEN GOTO 100 ELSE BEGIN X1: = (-B + SQRT(D))/(2 * A); X2: = (-B - SQRT(D))/(2*A); WRITELN (‘Корни уравнения’); WRITELN (‘X1=’, Xl’, X2=’, X2) END; GOTO 200; 100: WRITELN (‘уравнение не имеет действительных корней’); 200: END. B данной программе условный оператор содержит составной оператор для фразы ELSE. Алгоритмы циклической структуры Циклическая структура программы позволяет производить многократные вычисления группы операторов при изменении одного или нескольких параметров одновременно. B языке Паскаль имеются три оператора цикла. Оператор цикла FOR используется для организации цикла с известным числом повторений. Общий вид записи: -при увеличении значения параметра FOR I:= m1 TO m2 DO S; -при уменьшении значения параметра FOR I:=m1 DOWNTO m2 DO S; где I - параметр цикла; m1 - начальное значение параметра; m2 - конечное значение параметра; S - тело цикла, состоящее из простого или составного оператора. Оператор цикла WHILE используется для организации цикла с неизвестным числом повторений. Общий вид записи оператора цикла с предварительным условием: WHILE b DO S; где b - логическое выражение; S - тело цикла, состоящее из простого или составного оператора. Оператор цикла REPEAT используется для организации цикла с неизвестным числом повторений. Общий вид записи оператора цикла с последующим условием: REPEAT S UNTIL b; где S - тело цикла, состоящее из одного или нескольких простых операторов; b - логическое выражение. B отличие от оператора WHILE в операторе REPEAT проверка условия выполняется в конце оператора, поэтому он обеспечивает хотя бы одно вычисление при значении логического выражения TRUE (истина). Вычисление суммы и произведения Если необходимо вычислить сумму значений некоторой функции у при различных значениях аргумента, то целесообразно организовать цикл, в котором не только вычисляются текущие значения функции, но и накапливается их сумма путем сложения полученного слагаемого с суммой предыдущих. Формула, используемая для накопления, имеет вид . При первом выполнении цикла вычисляется значение , которое должно быть равно . Поэтому начальному значению суммы перед циклом следует присвоить значение ноль. Например, составим программу для вычисления функции . PROGRAM SUM_Y; CONST N = 10; VAR I: INTEGER; Y: REAL; BEGIN Y: = O ; {начальное значение суммы} FOR I: = 1 TO N DO Y: = Y + EXP(SQRT(I)) /(2*I); WRITELN (‘Сумма Y=’, Y: 7 : 4) END. Аналогично накапливается и произведение. Для его накопления используется формула , а начальное значение произведения должно быть равно единице. Программирование алгоритмов со структурой вложенных циклов B цикл, называемый внешним, могут входить один или несколько вложенных циклов, называемых внутренними. Организация внешнего и внутреннего циклов осуществляются по тем же правилам, что и простого цикла. Параметры внешнего и внутреннего циклов разные и изменяются не одновременно, т.е. при одном значении параметра внешнего цикла, параметр внутреннего цикла принимает поочередно все значения. Например, составим программу для вычисления функции . Program Example_SP; Var a, b: byte; {переменные-счётчики} p, s: real; {произведение, сумма} Begin s:=0; {начальное значение суммы} {организация внешнего цикла по переменной a} for a:=1 to 7 do begin p:=1; {начальное значение произведения} {организация внутреннего цикла по переменной b} for b:=5 to 10 do p:= p*(exp(b/a)-abs(a-b)); {накапливаем произведение} s:=s+p; {накапливаем сумму} end; {внешний цикл закрыт} Writeln ('sp=', s:8:5); {печать результата} Readln; {задерживаем экран для просмотра результата} End Использование подпрограмм Паскаль поддерживает два типа подпрограмм: процедуры и функции. Функция — это подпрограмма, которая возвращает результат. Вызов функции является выражением, и может использоваться в других выражениях или в правой части оператора присваивания. Процедура — это любая подпрограмма, которая не является функцией. Она предназначена для выполнения законченной последовательности действий. Для объявления процедуры в Паскале используется зарезервированное слово Procedure: Procedure <имя процедуры> (<список формальных параметров>); Для вызова процедуры из основной программы (или другой подпрограммы) нужно записать оператор, состоящий из имени процедуры и списка фактических параметров, которые должны совпадать по количеству, порядку и типам с формальными параметрами процедуры. Рассмотрим пример: Program Example_x; var x, z: real; {Объявляем процедуру с именем Sum} Procedure Sum(var a, b: real); var y: real; {раздел описания локальных переменных процедуры} begin {начало тела процедуры} y:=a+b; writeln('1 число=',a:8:4,'; 2 число=',b:8:4,'; Сумма=',y:8:4); writeln; end; {конец тела процедуры} Begin {начало тела программы} writeln('Введите 2 числа'); Readln (x, z); {обращение к процедуре} Sum (x, z); {тело процедуры выполняется с a=x, b=z} End. {конец тела программы} Результат работы программы: Введите 2 числа 5.789 -368.1254 1 число= 5.7890; 2 число=-368.1254; Сумма=-362.3364 Структурный тип данных - массив Структурный тип данных – это тип данных, который позволяет в одной величине хранить одновременно несколько значений. Массив – это упорядоченная совокупность данных одного типа. Массив обозначают одним именем. Каждый элемент массива имеет имя массива с индексом. Элементы массива упорядочены по значениям индекса. В языке Паскаль индекс заключается в квадратные скобки. Элементы одномерного массива определяются одним индексом, двумерного массива – двумя. Форма описания массива в разделе переменных имеет вид: VAR имя массива: ARRAY [t1] OF t2; где ARRAY (массив), OF (из) – служебные слова; t1 – тип индекса (любой простой кроме стандартных типов REAL и целочисленного); t2 – тип элементов массива. Например, VAR X: ARRAY [1..10] OF REAL; Y: ARRAY [1..3,1..3] OF INTEGER; I, J: BYTE; где X – имя массива, элементы которого X[I] имеют базовый тип REAL; Y - имя массива, элементы которого Y[I,J] имеют базовый тип INTEGER; тип индексов I, J – целочисленный ограниченный. Форма описания массива в разделе типов имеет вид: TYPE имя типа = ARRAY [t1] OF t2; VAR имя массива: имя типа; где t1 – тип индекса, t2 – базовый тип элементов массива. Например, TYPE MATRIX= ARRAY [1..8,1..8] OF REAL; VEKTOR= ARRAY [1..20] OF REAL; VAR M: MATRIX; V: VEKTOR; Для ввода и вывода значений массива используются циклы. Цикл организации ввода значений Цикл организации вывода значений двумерного массива Y с клавиатуры: двумерного массива Y: FOR I:=N TO M DO FOR I:=N TO M DO FOR J:=K TO L DO FOR J:=K TO L DO READ Y[I,J]; WRITE Y[I,J]; Пример выполнения контрольной работы №1 по дисциплине «Информатика» К заданию № 5. Составить программу на языке Паскаль для вычисления значений выражений. B пункте "а" выделить постоянную часть и вычислить ее в константном выражении до выполнения программы; вычислить значение выражения при всех конкретно заданных значениях переменных (если для какой-либо переменной заданы два значения, то это значит, что программа должна выполниться дважды, сначала с одним значением, затем с другим; каждое из них должно вводиться с клавиатуры). B пункте "б" ввести дополнительные функции для промежуточных вычислений. Решение. а) , где , - любое число. В вычисляемом выражении выделим две константы: и . program example_1a; {Раздел описания констант} const c=3+2/5-1-4/5; d=7.6+3+11/17; a=2.1; {Раздел описания переменных} var x, y: real; {x – любое число, a=2,1, a=2/11} {Тело программы – обязательная часть} begin writeln('Задание № 1а'); writeln('Вычисление значения выражения'); writeln ('константа c=3+2/5-1-4/5=', c:4:3); writeln ('константа d=7.6+3+11/17=',d:4:3); writeln ('константа a=', a); writeln ('введите x'); readln (x); {Вычисление значения выражения} y:=a*ln(abs(cos(c/d)*x))+1.2*sin(2/c); writeln ('Ответ: y=',y:4:3); {Задержка экрана} readln end. Результат работы программы Задание № 1а Вычисление значения выражения константа c=3+2/5-1-4/5=1.600 константа d=7.6+3+11/17=11.247 константа a=2.1 введите x 2.15 Ответ: y=2.725 б) program example_1a; const c=3+2/5-1-4/5; d=7.6+3+11/17; a=2/11; var x, y: real; {x – любое число, a=2,1, a=2/11} begin writeln('Задание № 1а'); writeln('Вычисление значения выражения'); writeln ('константа c=3+2/5-1-4/5=', c:4:3,' ','константа d=7.6+3+11/17=',d:4:3); writeln ('константа a=', a); writeln ('введите x'); readln (x); y:=a*ln(abs(cos(c/d)*x))+1.2*sin(2/c); writeln ('Ответ: y=',y:4:3); readln end. Результат работы программы Задание № 1а Вычисление значения выражения константа c=3+2/5-1-4/5=1.600 d=7.6+3+11/17=11.247 константа a=0.181818181818182 введите x -75.32 Ответ: y=1.923 . константа Введём дополнительные промежуточные переменные для последовательного вычисления выражения (по действиям): , , , . Тогда z будет вычисляться как program Example_1b; var x, z, a, b, c, e: real; begin writeln ('Задание № 1б'); writeln ('Введите x'); readln (x); writeln('Вычисление промежуточных функций'); a:= sqrt(x); writeln('a=',a:3:3) ; b:=cos(a)/sin(a); writeln('b=',b:3:3) ; c:=sin(4*x)/cos(4*x); writeln('c=', c:3:3) ; e:=exp(2/5*ln(c)); writeln('e=', e:3:3) ; z:=b+e; writeln ('Îòâåò: z=',z:4:3); readln end. . Результат работы программы Задание № 1б Введите x 0.125 Вычисление промежуточных функций a=0.354 b=2.710 c=0.546 e=0.785 Ответ: z=3.495 К заданию № 6. Составить программу на языке Паскаль, вычисляющую значение функции. Осуществить вывод значения функции. Определить, при каком значении аргумента функция не определена? Выполнить программу в режиме трассировки. Решение. program Exemple_2; var y, x: real; label met1; begin writeln('Введите x'); readln (x); if (x<3) then y:=exp(x*x*ln(3))+ln(abs(3*x))else begin if (x>5.5) and (x<19) then y:=sqrt(ln(cos(x))) else begin if (x>=19) then y:=1/(7*sqrt(x))*arctan((2/x)/sqrt(1-sqr(2/x))) else begin writeln ('функция не определена'); goto met1; end; end; end; writeln ('y=', y:4:3); met1: end. Результат 1 работы программы Результат 2 работы программы Введите x 0.01 y=-2.506 Введите x 3.7 функция не определена Введите x -5.7 y=3174457856531482.000 Результат 3 работы программы Введите x 19.578 y=0.003 Результат 4 работы программы К заданию № 7. Составить программу на языке Паскаль: выяснить, принадлежит ли точка с координатами (X, Y) замкнутой области, заданной уравнениями: y x 2 2,5; y sin x; ; . Область показать на графике, построенном в табличном редакторе Microsoft Excel. Решение. В табличном редакторе MS Excel построим графики функций ; ; и . По построенным графикам определяем замкнутую область (рис. 1). Замкнутая область 2,5 2 1,5 1 y=x^2-2,5 0,5 -2 -1,5 -1 0 -0,5-0,5 0 y=sinx 0,5 1 1,5 2 2,5 -1 x=пи/4 x=пи/2 -1,5 -2 -2,5 -3 Рис. 1. Замкнутая область, ограниченная графиками данных функций Program Example_3; Var x,y: real; Begin Writeln ('Введите x, y'); Readln (x, y); if (y<=(sin(x))) and (y>=x*x-2.5) and (x>=pi/4)and (x<=pi/2)then Writeln ('Точка принадлежит области') else Writeln ('Точка не принадлежит области') End. Результат 1 работы программы Введите x, y 1.2 0.5 Точка принадлежит области Результат 2 работы программы Введите x, y 0.5 -1.5 Точка не принадлежит области К заданию № 8. Вычислить сумму и произведение: а) ; б) . Решение (а): program Example_4; var i: integer; s: real; const a=2; b=6; begin Результат работы программы Сумма равна s= 6.9068 s:=0;{начальное значение суммы}; for i:=a to b do s:=s+(sin(i*i*i)+sqrt(abs(cos(i)))); writeln (' s= ', s:7:4); end. Решение (б): Program Example_4b; Var i, j: byte; p, s: real; Begin Результат работы программы ps=3050.3162 p:=1; for i:=1 to 5 do begin s:=0; for j:=2 to 10 do s:= s+(exp(2/3*ln(i))+j*j*j) end; p:=p*s; Writeln ('ps=', p:4:4); Readln; End. К заданию № 9. Вычислить значение функции Осуществить вывод значений аргумента и функции, сопровождая вывод наименованиями переменных. Решение. program Exaample_5; {Раздел объявления констант} const xn=1; xk=3;dx=0.5; a=-3.75; b=0.24; {Раздел объявления переменных} var x, y: real; begin {присваиваем переменной x начальное значение} x:=xn; repeat {повторять} begin if (x<=2) then y:=a*sqr(x)+7*ln(x)/ln(2) else y:=exp(a*x)*sin(b*x) ; {печатаем промежуточные значения} writeln('x=', x:4:1,' ','y=',y:4:5); x:=x+dx end {до тех пор, пока} until x>xk end. Результат работы программы x= 1.0 x= 1.5 x= 2.0 x= 2.5 x= 3.0 y=-3.75000 y=-4.34276 y=-8.00000 y=0.00005 y=0.00001 К заданию № 10. Составить программу для вычисления и вывода в виде таблицы значений данной функции: Добавить в основную программу подпрограмму-функцию, вычисляющую элементы двумерного массива. 1) Найти произведение отрицательных элементов, стоящих под главной диагональю, и их количество; 2) Среднее арифметическое элементов, стоящих над главной диагональю. program Example_6; const m=4; n=4; var x: array[1..m, 1..n] of real; i, j, k: integer; {k для подсчёта количества элементов} s: real; {s для вычисления суммы элементов} p: real;{p для вычисления произведения} function f(a, b: real):real; {подпрограмма-функция для вычисления элементов массива} begin f:=cos(sqr(i)*j*j*j/7)/sin(sqr(i)*j*j*j/7); end; begin writeln ('Элементы матрицы X:'); s:=0;k:=0;p:=1; for i:=1 to m do {вычисляем элементы матрицы} begin for j:=1 to n do begin {вычисляем элементы массива, обращаясь к подпрограмме-функции} x[i, j]:=f(i, j); write (x[i, j]:6:4,' '); {печатаем массив} if (i>j) and (x[i, j]<0) then {проверка условия "под главной диагональю" и проверка отрицательности элемента массива} begin p:=p*x[i,j]; {считаем произведение} k:=k+1; {считаем количество} end; if (i<j) then {проверка условия "над главной диагональю"} begin s:=s+x[i, j] {считаем сумму} end; end; writeln; end; s:=s/6; {считаем среднее арифметическое} writeln ('Произведение отриц. элементов матрицы, стоящих под главной диагональю p=', p:4:5); writeln('Количество отриц. элементов матрицы, стоящих под главной диагональю k=', k); writeln('Среднее арифметическое элементов, стоящих над главной диагональю s=', s:8:5); end. Результат работы программы Элементы матрицы X: 6.9523 0.4561 1.1504 -3.4526 1.5552 0.1419 -3.4856 -0.4746 0.2931 0.8593 6.3266 1.4483 -0.8681 -1.5815 -0.4870 -0.2044 Произведение отриц. элементов матрицы, стоящих под главной диагональю p=-0.66867 Количество отриц. элементов матрицы, стоящих под главной диагональю k=3 Среднее арифметическое элементов, стоящих над главной диагональю s=-0.72632 Контрольная работа №1 по дисциплине «Информатика» для студентов всех специальностей Задание №1. Найти двоичное, восьмеричное и шестнадцатеричное представление десятичной дроби. № варианта Десятичная дробь 1 55,14 2 88,45 3 40,83 4 31 5 92 6 61,21 7 37,11 8 65,49 9 53,38 10 51,18 Задание №2. Для чисел А, В, С, заданных в различных системах счисления, определить значение указанного выражения в десятичной системе счисления. № варианта 1 2 3 4 5 6 7 8 9 10 А В С Выражение 1111110102 4578 D716 13116 4678 EA16 F216 5328 5778 10001111002 3658 DF16 1011101112 4768 1000100012 3068 3658 10D16 1000111112 2FA16 F216 110110112 3178 1001011002 15C16 111001102 1110110102 1000011102 17C16 10108 2(A+B-C)-min(A,B,C) max(A,B)+2min(B,C) 3min(A,B,C)-(C-B) 3min(A,B,C)-max(A,B,C) 2(A+C)-max(A,B) 2(A+B+C)-max(A,B,C) max(A,B,C)-2min(A,B) 3(B-A)+max(A,B,C) 2min(A,B,C)+max(A,B) (A+C)-2min(A,B,C) Задание №3. Вычислить значение выражения в указанной системе счисления. № варианта 1 2 3 4 5 6 7 8 9 10 Выражение А) 5A16+BE16 А) 249,516-ЕЕ,А16 А) 2A16+BC16 А) 1BA16-FD16 А) 40F,416+160,416 А) 25E,616-1B1,516 А) 12D,316-39,616 А) 30C,716+2А1,816 А) 274,516+DD,416 А) 287,А16-62,816 Б) 341,28-275,28 Б) 1278+2338 Б) 3428+2568 Б) 6438+3258 Б) 2023,58-527,48 Б) 1153,28+1147,68 Б) 665,18+1217,28 Б) 1501,348-1374,58 Б) 166,148-143,28 Б) 1512,48+1015,28 В) 10000001002-1010100012 В) 10101111012-1110000102 В) 11010000,12-1001011010,12 В) 11101010102+101110012 В) 101110102+100101002 В) 111101110,12+1111011110,12 В) 101111112+1100100002 В) 1100101002+10111000012 В) 11110001012-11001101012 В) 10000010012-1111101002 Задание №4. 1.С помощью таблиц истинности проверить, являются ли эквивалентными высказывания: и . 2. Определите для высказывания, будет ли оно логически истинным, противоречивым; ни тем, ни другим: . 3. Постройте таблицу истинности составного высказывания: . 4. Определите для высказывания, будет ли оно логически истинным, противоречивым; ни тем, ни другим: . 5. Покажите, что высказывание логически истинно, а - нет. 6. Определите для высказывания, будет ли оно логически истинным, противоречивым; ни тем, ни другим: . 7. Докажите равносильность . 8. Постройте таблицу истинности высказывания . 9. Постройте таблицу истинности высказывания . 10. Определите для высказывания, будет ли оно логически истинным, противоречивым; ни тем, ни другим: . Задание №5. Составить программу на языке Паскаль для вычисления значений выражений. B пункте "а" выделить постоянную часть и вычислить ее в константном выражении до выполнения программы; вычислить значение выражения при всех конкретно заданных значениях переменных (если для какой-либо переменной заданы два значения, то это значит, что программа должна выполниться дважды, сначала с одним значением, затем с другим; каждое из них должно вводиться с клавиатуры). B пункте "б" ввести дополнительную переменную для промежуточных вычислений. 7 8 7 8 2 1 2 17 111 1) а) z = j·ln sin x +2cos 17 11 , где j = 3; j = 1/3; x – любое число; 2 3 3,5 7 23 б) p = tg x + 3 tg 7x , x=0,2. 2) а) K= y e 9 5 2 13 8 7 , 43 x 3 , где x=2,7; x=18; y-любое число; б) С = 5 arcsin 2 x ln 3) а) С = 1 tg 2a 7 1 . x2 3 13 2 9,13 6 15 x e 9 , 31 6 2 15 , где a – любое число (а 0), x=3.51; x=6.9; б) = 0,58e1/x – tg arcsin2x. 15 5 2 7 K 7 C 8 x , где K- любое целое; С = 5,9; С = 1,2; x = -8; 4) а) y = 3 sin x ln 17 1 C K 0,1 15 б) u = 3x x arcos lnx. 2 7 , x 3 x 2 e xa 145 111 18 20 20,8 7 5) а) y = где x=7; x=11; a – любое число; б) d = x tg 3 x ctg 3 x . 5 3 2 xK 14 8 ln tg 6) а) z = , где К = 6.983 105 , x –любое число; 10 5 3 7,12 23 98 2 41 14 8 98 б) b = arcsin3 1 8 5 arcos ln x 2x 11 7 97 5 :3 2x a e 12 101 , где x=0,7; x=92,8; a-любое число; 7) а) q =arctg 7 97 2,11 5 : 3 12 101 б) W = tg 3 x ctg 4 x . 5 2 x 1 14 8) а) y = cos sin , где z – любое целое (z 0); x=5,38; x=1,09; 9 2 3z 1 11 7 2 б) z = tg 5 ln arccos8 x . 9) a) z = 8 35 x 2 9 sin 2 4 x cos2 5 x : ln , 2 2 7 t 1 15 3 7 9 где t – любое целое; x=2,34; x=5,12; б) q = arcsin x 1 arcsin x . arcsin x 10) б) P = а) y = 1 arctg 2a 2 x2 7 91 38,95 14 3 8 128 2 arccos x , где а=9; x=0,92; x=5,04; arccos x . arccos x Задание №6. Составить программу на языке Паскаль, вычисляющую значение функции. Осуществить вывод значения функции. Определить, при каком значении аргумента функция не определена? Выполнить программу в режиме трассировки. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Задание №7. Составить программу на языке Паскаль: выяснить, принадлежит ли точка с координатами (X, Y) замкнутой области, заданной уравнениями. Область показать на графике, построенном в табличном редакторе Microsoft Excel. 1. y x 2 5; y x. 2. y 2 x 2 ; y x 5. 3. y x 1; y x; x 2; x 5. 4. y cos 2 x; y cos x; x 3 ; x 5 . 4 4 1 5. y sin x; y sin x; x ; x 2 . 3 6. y x 3 ; y x. 7. y x 4 ; y 3x 1. 8. y 2 cos x 1; y 2,5; x 3 ; x 5 4 4. 9. y tgx; x 0,5; y 6,4. 10. y ctgx; x 2; y 2 x 1. Задание №8. Вычислить сумму и произведение: 1. а) ; б) 2. а) . ; б) 3. а) ; б) 4. а) ; б) 5. а) ; б) 6. а) ; . . . . . 7. а) ; б) 8. а) ; б) 9. а) ; 10. а) . . . ; б) . Задание №9. Вычислить значение функции, заданной в таблице. Осуществить вывод значений аргумента и функции, сопровождая вывод наименованиями переменных. Исходные данные а = -0,5 b=2 Диапазон и шаг изменения аргумента t [0,2;3] t =0,15 x 1,3 x 1,3 a=l,5 x [0,8;2] x = 0,1 x 1,2 x 1,2 а = 2,8 b = -0,3 x [l;2] х = 0,05 x l,4 x>l,4 а= 1,65 х [0,7; 2] х = 0,1 № вар Функция Условие 1 2 at ln t y at e cosbt t2 t>2 2 3 ax 7 x y lg x 7 x 3 4 2 a x x 1 W 2 (a bx) x 1 3 ax 7 x Q ln x 7 x a 5 1,5 cos2 ax y 3tgx x2 х>2 а = 2,3 х [0,2; 2,8] х = 0,2 6 3 x x a W ax cos ax e x>a ха а = 2,5 x [l;5] x = 0,5 7 bx lg bx Q bx ln bx bx<l bx 1 b=l,5 x [0,l;l] х = 0,1 8 sin x lg x y 2 cos ax x>3 x 3,5 а =1,2 x [2;5] х = 0,25 9 lg( x 1) f 2 ax sin x>l xl а =20,3 х [0,5; 2] x =0,1 10 x t 1x Z 3 cos x t sin x x 0,5 x>0,5 t = 2,2 x [0,2;2] x = 0,2 Задание №10. Составить программу для вычисления и вывода в виде таблицы значений данной функции. Добавить в основную программу подпрограмму-функцию, вычисляющую элементы двумерного массива. № вар. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Функция Задание 1) Найти количество отрицательных элементов; 2) Произведение элементов, не стоящих на главной диагонали. 1) Найти произведение положительных элементов; 2) Сумму элементов, стоящих под главной диагональю. 1) Найти произведение положительных элементов, стоящих на главной диагонали; 2) Сумму элементов, стоящих на пятой строке. 1) Найти произведение отрицательных элементов, стоящих в первом и втором столбцах; 2) Сумму квадратов элементов, стоящих на главной диагонали. 1) Найти произведение положительных элементов, стоящих в первой и второй строках; 2) Среднее значение элементов, стоящих на главной диагонали. 1) Найти произведение отрицательных элементов, стоящих под главной диагональю; 2) Среднее арифметическое элементов, стоящих над главной диагональю. 1) Найти произведение отрицательных элементов, стоящих над главной диагональю; 2) Среднее арифметическое элементов, стоящих в третьем столбце. 1) Найти произведение элементов, стоящих в пятой строке; 2) Среднее арифметическое положительных элементов. 1) Найти произведение элементов, стоящих на главной диагонали и над ней; 2) Количество положительных элементов, стоящих на главной диагонали и над ней. 1) Найти произведение положительных элементов, стоящих в первой строке; 2) Среднее значение элементов, стоящих на главной диагонали. Библиографический список 1. Павловская Т.А. Паскаль. Программирование на языке высокого уровня: Учебник для вузов. – СПб.: Питер, 2007. – 293 с. 2. Павловская Т.А. Паскаль. Программирование на языке высокого уровня: Практикум. – СПб.: Питер, 2007. – 317 с. 3. Фаронов В. В. Турбо Паскаль 7.0. Практика программирования: учебное пособие / Фаронов В. В. — М.: ОМД Групп, 2003. — 415с. 4. Немнюгин С. А. Turbo Pascal. Программирование на языке высокого уровня: [учебник для вузов по направлению «Информатика и вычисл. техника»]/ Немнюгин С. А. — 2-е изд. — СПб.и др.: Питер, 2007. — 543с.