Итоговое тестирование по программированию (Паскаль)
Внимание! Все тесты в этом разделе разработаны пользователями сайта для собственного использования. Администрация сайта не проверяет возможные ошибки, которые могут встретиться в тестах.
Итоговое тестирование по программированию (Паскаль)
Система оценки: 5 балльная
Список вопросов теста
Вопрос 1
В каком разделе происходит описание переменных?
Варианты ответов
Вопрос 2
Чем характеризуется переменная?
Варианты ответов
- Именем, значением
- Именем, типом, значением
- Значением, типом
Вопрос 3
Чем заканчивается программа?
Варианты ответов
- Readln.
- END;
- Clrscr;
Вопрос 4
Как записывается оператор вывода?
Варианты ответов
- Writeln ()
- Readln(
- Readkey()
Вопрос 5
Как записывается оператор ввода?
Варианты ответов
- Writeln ()
- Readkey()
- Readln()
Вопрос 6
Записать на языке Turbo Pascal 7.0 следующее выражение: y=5x^2-10x+2;
Варианты ответов
- Y:=5*x*x+10*x+2
- Y:=5_x_x+10x+2
- Y:=5x_x+10x+2
Вопрос 7
Какая строка из перечисленных описывает логическую переменную на языке Паскаль:
Варианты ответов
- Var x: Boolean;
- Var x: integer;
- Var x: real;
Вопрос 8
Какой оператор позволяет вычислить корень квадратный из числа?
Варианты ответов
Вопрос 9
Оператор для организации ветвления в языках программирования – это…
Варианты ответов
- Условный оператор, оператор выбора;
- Оператор для организации диалога с пользователем;
- Оператор цикла.
Вопрос 10
Какое значение примет переменная Х после выполнения оператора Х:= 15 div 4:
Как с помощью оператора вычислить квадратный корень числа?
Математические операции являются неотъемлемой частью программирования. Одной из таких операций является вычисление квадратного корня числа. Квадратный корень — это число, которое при возведении в квадрат равно данному числу. В программировании существуют различные способы вычисления квадратного корня, одним из которых является использование оператора.
Оператор для вычисления квадратного корня присутствует во многих языках программирования. Например, в языке Си и его производных можно использовать оператор sqrt(). В языке Python этот оператор также доступен и обозначается как sqrt().
Пример использования оператора вычисления квадратного корня в языке Python:
import math
x = 16
sqrt_x = math.sqrt(x)
print(«Квадратный корень числа», x, «равен», sqrt_x)
В данном примере мы используем модуль math, который предоставляет функцию sqrt(). Задаем значение числа х, вычисляем квадратный корень с помощью оператора sqrt() и выводим результат на экран. Таким образом, оператор вычисления квадратного корня позволяет нам получить корректный результат в программировании.
Оператор для вычисления квадратного корня числа
Квадратный корень числа – это такое число, которое при возведении в квадрат дает исходное число. В математике квадратный корень числа x обозначается символом √x.
В программировании для вычисления квадратного корня числа x используется оператор sqrt. Оператор sqrt является частью стандартной библиотеки языка программирования и позволяет получить квадратный корень числа.
Пример использования оператора sqrt:
double result = sqrt(x);
В данном примере переменная result будет содержать квадратный корень числа x.
Оператор sqrt можно использовать только с числами, имеющими тип данных, который поддерживает квадратный корень. Обычно это тип данных double, который представляет вещественные числа двойной точности.
Не забывайте, что оператор sqrt возвращает только положительное значение квадратного корня числа. Если вам нужно получить и отрицательное значение, вы должны использовать отрицательное исходное число.
Операторы в программировании
Операторы — это символы или ключевые слова, которые используются в программировании для выполнения операций над данными. Они позволяют выполнять различные арифметические, логические, присваивания, сравнения и другие операции.
Операторы могут быть унарными (требующие одного операнда) или бинарными (требующие двух операндов). Также существуют тернарные операторы, которые требуют трех операндов.
Арифметические операторы
Арифметические операторы используются для выполнения математических операций над числами.
Логические операторы
Логические операторы используются для выполнения логических операций и возврата значения true или false.
Теоретический материал (Паскаль)
Проверьте истинность второго отношения при подстановке следующих значений:
Определение. Выражение, о котором после подстановки в него значений переменных можно сказать, истинно (верно) оно или ложно (неверно), называется булевым (логическим) выражением.
Примечание. Название “булевы” произошло от имени математика Джорджа Буля, разработавшего в XIX веке булеву логику и алгебру логики.
Определение. Переменная, которая может принимать одно из двух значений: True (правда) или False (ложь), называется булевой (логической) переменной. Например,
| К:=True; Flag:=False; Second:=a+sqr(x)>t |
Задача. Вычислить значение модуля и квадратного корня из выражения (х-у).
Для решения этой задачи нужны уже знакомые нам стандартные функции нахождения квадратного корня — Sqr и модуля — Abs. Поэтому Вы уже можете записать следующие операторы присваивания:
| Koren:=Sqrt(x-y); Modul:=Abs(x-y) |
В этом случае программа будет иметь вид:
| Program Znachenia; Uses Crt; Var x, y : integer; Koren, Modul : real; Begin ClrScr; write (‘Введите значения переменных х и у через пробел ‘); readln (x, y); Koren:=Sqrt(x-y); Modul:=Abs(x-y); write (‘Значение квадратного корня из выражения (х-у) равно ‘, Koren); write (‘Значение модуля выражения (х-у) равно ‘, Modul); readln; End. |
Казалось бы, задача решена. Но мы не учли области допустимых значений для нахождения квадратного корня и модуля. Из курса математики Вы должны знать, что можно найти модуль любого числа, а вот значение подкоренного выражения должно быть неотрицательно (больше или равно нулю).
Поэтому наша программа имеет свою допустимую область исходных данных. Найдем эту область. Для этого запишем неравенство х-у>=0, то есть х>=у. Значит, если пользователем нашей программы будут введены такие числа, что при подстановке значение этого неравенства будет равно True, то квадратный корень из выражения (х-у) извлечь можно. А если значение неравенства будет равно False, то выполнение программы закончится аварийно.
Задание. Наберите текст программы. Протестируйте программу со следующими значениями переменных и сделайте вывод.
- х=23, у=5;
- х=-5, у=15;
- х=8, у=8.
Каждая программа, насколько это возможно, должна осуществлять контроль за допустимостью величин, участвующих в вычислениях. Здесь мы сталкиваемся с разветвлением нашего алгоритма в зависимости от условия. Для реализации таких условных переходов в языке Паскаль используют операторы If и Case, а также оператор безусловного перехода Goto.
Рассмотрим оператор If.
Для нашей задачи нужно выполнить следующий алгоритм:
если х>=у,
то вычислить значение квадратного корня,
иначе выдать на экран сообщение об ошибочном введении данных.
Запишем его с помощью оператора If. Это будет выглядеть так.
| if x>=y then Koren:=Sqr(x-y) else write (‘Введены недопустимые значения переменных’); |
Теперь в зависимости от введенных значений переменных х и у, вычисление квадратного корня может выполняться или не выполняться.
В общем случае полная форма конструкции условного оператора имеет вид:
Условный оператор работает по следующему алгоритму.
Сначала вычисляется значение логического выражения, расположенного за служебным словом IF. Если его результат истина, выполняется , расположенный после слова THEN, а действия после ELSE пропускаются; если результат ложь, то, наоборот, действия после слова THEN пропускаются, а после ELSE выполняется .
Управляющая структура if может показаться негибкой, так как выполняемые действия могут быть описаны только одним оператором. Иногда может потребоваться выполнение последовательности операторов. В этом случае хотелось бы заключить всю последовательность в воображаемые скобки. В Паскале предусмотрен этот случай.
Если в качестве оператора должна выполниться серия операторов, то они заключаются в операторные скобки begin-end. Конструкция Begin . End называется составным оператором.
| if then begin оператор 1; оператор 2; . end else begin оператор 1; оператор 2; . end; |
Определение. Составной оператор — объединение нескольких операторов в одну группу. Группа операторов внутри составного оператора заключается в операторные скобки (begin-end).
| begin оператор 1; оператор 2; end; |
С учетом полученных знаний преобразуем нашу программу.
| Program Znachenia; Uses Crt; Var x, y : integer; Koren, Modul : real; Begin ClrScr; write (‘Введите значения переменных х и у через пробел ‘); read (x, y); if x>=y then begin Koren:=Sqr(x-y); Modul:=Abs(x-y); write (‘Значение квадратного корня из выражения (х-у) равно ‘, Koren); write (‘Значение модуля выражения (х-у) равно ‘, Modul); end else write (‘Введены недопустимые значения переменных’); readln; End. |
Составным оператором является и такой оператор
| begin S:=0; end. |
Cимвол “;” в данном случае разделяет оператор присваивания S:=0 и пустой оператор.
Пустой оператор не влечет никаких действий и в записи программы никак не обозначается.
Например, составной оператор
включает лишь один пустой оператор.
Если Вы обратили внимание, программа на языке Паскаль всегда содержит один составной оператор — раздел операторов программы.
Внимание! Перед служебным словом Else разделитель (точка с запятой) не ставится.
Отметим, что большинство операторов в программах на языке Паскаль заканчиваются точкой с запятой, но после некоторых операторов точка с запятой не ставится. Сформулируем общие правила употребления точки с запятой:
-
Каждое описание переменной и определение константы заканчиваются точкой с запятой.
Рассмотрим еще один пример.
Задача. Вывести на экран большее из двух данных чисел.
| Program Example1; Var x, y : integer; Begin writeln(‘Введите 2 числа ‘); readln(x,y); if x>y then writeln (x) else writeln (y); readln; End. |
Можно также использовать и сокращенную (неполную) форму записи условного оператора. Эта форма используется тогда, когда в случае невыполнения условия ничего делать не надо.
Неполная форма условного оператора имеет следующий вид.
Тогда если выражение, расположенное за служебным словом IF. в результате дает истину, выполняются действия после слова THEN, в противном случае эти действия пропускаются.
Задача. Составить программу, которая, если введенное число отрицательное, меняет его на противоположное.
| Program Chisla; Var x : integer; Begin writeln(‘Введите число ‘); readln(x); if x then x:=-x; writeln (x); readln; End. |
Логический тип данных. Логические операции not, and, or. Нахождение значений логических выражений
Переменные логического типа описываются посредством служебного слова Boolean. Они могут принимать только два значения — False (ложь) и True (истина). Описываются они в разделе описания переменных.
| Var Flag : Boolean; |
В языке Турбо Паскаль имеются логические операции, применяемые к переменным логического типа. Это операции not, and, or и хor. В этой теме Вы рассмотрите три логические операции. Обозначения и результаты этих операций приведены в таблице. Рассмотрите ее.
Операция not (НЕ) имеет один операнд и образует его логическое отрицание. Результат операции not есть False, если операнд истинен, и True, если операнд имеет значение ложь. Так,
not True False (неправда есть ложь)
not False True (не ложь есть правда)
Результат операции and (И) есть истина, только если оба ее операнда истинны, и ложь во всех других случаях.
Результат операции or (ИЛИ) есть истина, если какой-либо из ее операндов истинен, и ложен только тогда, когда оба операнда ложны.
Задание. Попробуйте определить результат выполнения булевых операций для высказываний:
-
Школьник на зимних каникулах остается дома или уезжает куда-либо отдыхать.
Логические операции, операции отношения и арифметические операции часто встречаются в одном выражении. При этом отношения, стоящие слева и справа от знака логической операции, должны быть заключены в скобки, поскольку логические операции имеют более высокий приоритет. Вообще принят следующий приоритет операций:
- not
- and, *, /, div, mod
- or, +, —
- операции отношения.
Примечание. Логическую операцию and еще называют логическим умножением, а логическую операцию or — логическим сложением.
Кроме того, порядок выполнения операций может изменяться скобками. Например, расставим порядок действий в логическом выражении:
4 3 2 1
A or B and not (A or B)
Сначала выполняется заключенная в скобки операция or, а затем операции not, and, or. Если подставить вместо переменных А и В значения True и False, то, используя уже рассмотренный порядок действий, получим значение всего выражения, равное True.
Задание. Вычислите значения выражений при a=10, b=20, c=true, d=false:
Внимание! В языке Паскаль нет возможности ввода логических данных с помощью оператора read. Однако предусмотрен вывод значений переменных логического типа с помощью оператора write.
Например, после выполнения оператора write (5>2) на экран будет выведено True.
Вложенные условные операторы
При решении задач часто приходится рассматривать не два, а большее количество вариантов. Это можно реализовать, используя несколько условных операторов. В этом случае после служебных слов Then и Else записывается новый условный оператор. Рассмотрим пример.
Задача. Вычислить значение функции:
Для решения этой задачи рассмотрим координатную прямую и отметим на ней промежутки, на которые разбиваются все значения переменной х.
Начнем записывать условный оператор:
если х>0
то
вычислить у по формуле у=х-12
иначе
Что же должно выполниться в случае «иначе»? На эту ветку оператора попадают все неположительные значения х. Если бы для этих чисел нужно было бы выполнить один и тот же оператор (или группу операторов), то проблемы бы не стояло. Но нам нужно этот промежуток разделить еще на две части (отрицательные и ноль) и для каждой части выполнить свой оператор. Поэтому ветка «иначе» будет содержать еще один условный оператор, и наш вложенный условный оператор будет иметь вид:
| если х>0 то у вычислить по формуле у=х-12 иначе если х=0 то у вычислить по формуле у=5 иначе у вычислить по формуле у=sqr(x); |
Тогда фрагмент программы для решения этой задачи будет выглядеть так:
| if х>0 then у := х-12 else if х=0 then у := 5 else у := sqr(x); |
Итак, когда оператор if появляется внутри другого оператора if, они считаются вложенными. Такое вложение используется для уменьшения числа необходимых проверок. Этот метод часто обеспечивает большую эффективность, однако одновременно он уменьшает наглядность программы. Не рекомендуется использовать более одного-двух уровней вложения if. За вторым уровнем вложения становится трудно восстановить последовательность проверки условий каждым условным оператором.
Если часть else используется во вложенных if, то каждое else соответствует тому if, которое ему непосредственно предшествует. Таким образом, при определении последовательности выполнения фрагментов нет двусмысленности.
Рассмотрите еще один пример.
Задача. Даны целые числа a, b, c. Если a ≤ b ≤ c, то все числа заменить их квадратами, если a>b>c, то каждое число заменить наибольшим из них, в противном случае сменить знак каждого числа.
Для решения этой задачи перепишем условие задачи следующим образом:
a:=a 2 , b:=b 2 , c:=c 2 , если a ≤ b ≤ c
a:=-a, b:=-b, c:=-c, в остальных случаях
Программа для решения этой задачи представлена ниже.
| Program Example3; Var a, b, c : integer; Begin writeln(‘Введите числа a, b, c’); readln(a,b,c); if (a <=b) and (b<=c) then begin a:=sqr(a); b:=sqr(b); c:=sqr(c); end else if (a>b) and (b>c) then begin b:=a; c:=a; end else begin a:=-a; b:=-b; c:=-c; end; writeln(a,b,c); readln; End. |
Задание. Найдите в этой программе (если есть) условный оператор, вложенный условный оператор, составной оператор, булево условие.
Внимание! Подчеркнем еще раз один тонкий момент: поскольку каждый из операторов может быть оператором любого типа (в том числе и условным), и в то же время не каждый из «вложенных» условных операторов может иметь часть else, то возникает неоднозначность трактовки условий. Turbo-Pascal решает эту проблему таким радикальным способом: любая встретившаяся часть else соответствует ближайшей к ней части then.
Оператор выбора CASE
Ранее Вы познакомились с условным оператором If, который позволяет программе выполнять переходы на ту или иную ветвь по значению булева условия. Используя несколько операторов If, можно производить ветвление по последовательности условий. В приведенном фрагменте показано, как при помощи ряда операторов If можно преобразовать целое число (в диапазоне 0-9) к его словесному представлению:
| if Ziphra = 0 then write (‘Нуль’); if Ziphra = 1 then write (‘Единица’); if Ziphra = 2 then write (‘Два’); |
Вы уже, наверное, представили, насколько этот подход однообразный и утомительный. Язык Паскаль предоставляет для этих целей другую управляющую структуру (оператор выбора case), которая позволяет построить ветвление по ряду условий в форме, более удобной для чтения программ.
Оператор выбора позволяет выбрать одно из нескольких возможных продолжений программы. Параметром, по которому осуществляется выбор, служит так называемый ключ выбора (или селектор) — выражение любого типа (кроме типов REAL и STRING).
Общая форма записи следующая:
| case Выражение of значение1 : оператор (группа операторов); значение2 : оператор (группа операторов); . . . . . . . . . . . . . . . . . . . . . . значениеN : оператор (группа операторов) else оператор (группа операторов); end; |
Оператор выбора работает следующим образом. Сначала вычисляется значение выражения, стоящего после зарезервированного слова case, а затем выполняется оператор (или составной оператор), соответствующий результату вычисления выражения.
Может случиться, что в списке выбора не окажется константы, равной вычисленному значению ключа. В этом случае управление передается оператору, стоящему за словом ELSE.
| case NUMBER mod 2 of 0 : writeln (NUMBER, ‘- число четное’) else writeln (NUMBER, ‘- число нечетное’); end; |
Если один оператор выполняется при нескольких значениях, то их можно перечислить через запятую.
| case MONTH of 1, 2, 3 : writeln (‘Первый квартал’); 4, 5, 6 : writeln (‘Второй квартал’); 7, 8, 9 : writeln (‘Третий квартал’); 10, 11, 12 : writeln (‘Четвёртый квартал’); end; |
Оператором может являться не только простой оператор, но также составной и пустой операторы.
| case CODE of 1 : for i := 1 to 5 do writeln (‘*******’); 2 : begin x:=sqr(y-1); writeln (x); end; 3 : end; |
Любому заданному значению селектора соответствует лишь один вход в списке операторов. Константы должны принадлежать тому же типу, что и селектор. Если селектор принимает значение, которому не соответствует ни один вход, то будет выполняться оператор, следующий за словом else. Если же этого оператора нет, то никакие альтернативы не будут выполняться.
Если оператор должен выполняться при нескольких последовательных значениях селектора, образующих некоторый промежуток, можно использовать следующую форму записи:
| case Chislo of 0..9 : write (‘Это число является цифрой’); |
Посмотрите, как применен оператор выбора при решении следующей задачи:
Задача. Написать программу преобразования цифр в слова.
| Program Number1; Var a : integer; Begin writeln(‘Введите цифру ‘); readln(a); if (a<0) or (a>9) then writeln (‘Это число не является цифрой’) else case a of 0 : writeln (‘ноль’); 1 : writeln (‘один’); 2 : writeln (‘два’); 3 : writeln (‘три’); 4 : writeln (‘четыре’); 5 : writeln (‘пять’); 6 : writeln (‘шесть’); 7 : writeln (‘семь’); 8 : writeln (‘восемь’); 9 : writeln (‘девять’); end; readln; End. |
| Program Number2; Var a : integer; Begin writeln(‘Введите цифру ‘); readln(a); case a of 0 : writeln (‘ноль’); 1 : writeln (‘один’); 2 : writeln (‘два’); 3 : writeln (‘три’); 4 : writeln (‘четыре’); 5 : writeln (‘пять’); 6 : writeln (‘шесть’); 7 : writeln (‘семь’); 8 : writeln (‘восемь’); 9 : writeln (‘девять’) else writeln (‘Это число не является цифрой’); end; readln; End. |
Математические операторы
Разберем, какие математические действия мы можем делать в бейсике. Четыре действия нам уже знакомы: сложение, вычитание, умножение, деление. Рассмотрим, как они записываются в бейсике:
За сложение отвечат знак +
За вычитание отвечает знак —
За умножение отвечает знак * Его можно напечатать на дополнительной клавиатуре или с помощью комбинации клавиш shift-8
За деление отвечает знак /
Возвести в степень можно с помощью значка степени ^ Shift-6
Кроме того, в бейсике есть 2 оператора, которых нет в алгебре: это оператор целочисленного деления и оператор вычисления остатка:
Оператор целочисленного деления: \
Оператор вычисления остатка: mod
Поскольку два эти оператора отсутствуют в алгебре, разберем их более подробно:
Целочисленное деление
Данный оператор позволяет разделить одно число (или переменную) на другое до целой части. Дробная часть игнорируется. Например:
Если мы будем делить 10 на 3, то мы либо получим 3 и 1 в остатке, либо(если будем делить до конца), получим 3,33333333333333333(3). Если поделить 10 на 3 до целой части, записав это в виде 10\3, то мы получим 3 целую часть от деления, т.е 3.
Остаток от деления
Данный оператор позволяет вычислить остаток от деления числа А на число B. Например, если мы разделим число 10 на число 3, записав это в виде 10 mod 3, то мы получим остаток от деления 10 на 3, т.е 1.
Необходимо заметить, что эти операторы не могут использоваться «сами по себе». Результат использования оператора обязательно должен быть присвоен какой-то переменной:
Примеры правильного использования оператора:
a=2+3
b=c*8
H=9/3
j=18^a
k=10\2
p=10 mod 4
Задание 1. Записать на языке бейсика следующие действия:
- Умножить значение переменной А на 2, записав в переменную В.
- Увеличить значение переменной G на 15, записав результат в переменную В
- Возвести значение переменной J в 20ю степень, записав результат в переменную U.
- Разделить до целой части переменную U на 250, записав результат в переменную h
- Вычислить остаток от деления значения переменной А на 256, результат записать в переменную K
- Умножить значение переменной А на 2, записав в переменную В.
Ответ: B=A*2 - Увеличить значение переменной G на 15, записав результат в переменную В
Ответ: N=G*15 - Возвести значение переменной J в 20ю степень, записав результат в переменную U.
Ответ: U=J^20 - Разделить до целой части переменную U на 250, записав результат в переменную h
Ответ: h=U\250 - Вычислить остаток от деления значения переменной А на 256,результат записать в переменную K
Ответ: K= A mod 256
Математические функции
Из курса алгебры вам наверняка знакомы некоторые математические функции: Синус, косинус, квадратный корень, и т.д. В бейсике они не сильно отличаются от алгебры, хотя отличия все же есть.
Любая функция записывается в виде Y=f(x), где Y — имя переменной, в которую будет записан результат, f — название функции, х — аргумент функции (т.е от чего мы эту функцию считаем). Аргумент функции может представлять собой как число, так и переменную. Аргумент функции ВСЕГДА находится в скобках.
Например:
a=sin(b)
b=sqr(6)
g=ABS(15)
j=sqr(a^2+5^b)
Следует обратить внимание, что математическая функция не существует сама по себе, ее результат ВСЕГДА должен быть записан в переменную. Способ записи cos(-2) некорректен, правильная запись будет выглядеть как a=cos(2).
Рассмотрим существующие функции более подробно:
| Название | Описание |
|---|---|
| sin(a) | Синус числа а |
| cos(a) | Косинус числа а |
| tan(a) | Тангенс числа а. Примечание: именно tan, а не tg |
| sqr(a) | Квадратный корень из а |
| int(a) | Наибольшее целое число, не превышающее а |
| cint(a) | Целое число, ближайшее к числу а |
| fix(a) | Целое число, равное а без дробной части |
| abs(a) | модуль числа а (абсолютное значение, если по-умному) |
| rnd(a) | случайное число |
Примечание: со случайным числом все сложнее, чем в остальных функциях, эту функцию будем разбирать отдельно. К примеру, она может работать без аргумента.
Задание 2. Записать на языке бейсика следующие действия:
- Переменная А равна синусу от квадрата переменной В
- Переменная В равна квадратному корню суммы переменных А и С
- Переменная С равна тангенсу квадратного корня переменной А
- Переменная В равна целой части частного числа 53 и переменной А
- Переменная А равна модулю квадратного корня из синуса А, возведенному в 15ю степень
- Переменная А равна синусу от квадрата переменной В
Ответ: A=sin(B^2) - Переменная В равна квадратному корню суммы переменных А и С
Ответ: B=sqr(A+C) - Переменная С равна тангенсу квадратного корня переменной А
Ответ: C=tan(sqr(A)) - Переменная В равна целой части частного числа 53 и переменной А
Ответ: B=fix(53/А) - Переменная А равна модулю квадратного корня из синуса А, возведенному в 15ю степень
Ответ: A=(abs(sqr(sin(a))))^15
