Одной из дисциплин, изучаемой студентами 1 курса бакалавриата различных направлений (в частности, «Электроэнергетика и электротехника», «Инноватика», «Информационная безопасность») является «Информатика». Изучение основ программирования является неотъемлемой составляющей данной дисциплины.
В ходе выполнения лабораторной работы на тему «Логический и символьный типы данных» студенты главным образом должны научиться разрабатывать простейшие линейные программы в системе Турбо-Паскаль с использованием логических выражений.
Для проведения лабораторной работы было подготовлено методическое пособие, основанное прежде всего на учебных пособиях [1, 2]. Также при подготовке этого пособия был учтен опыт создания методических разработок на кафедре ИТАС ПНИПУ [3–7].
В первую очередь, студенты читают раздел данного пособия, называющийся «Краткие теоретические сведения», в котором изложены следующие аспекты, связанные с программированием на языке Турбо-Паскаль: 1) основы алгебры логики; 2) логические величины, операции и выражения в Турбо-Паскаль; 3) логический оператор присваивания; 4) символьный тип данных; 5) функции, связывающие различные типы данных (ord, pred, succ, low, high, chr, odd).
Изучение раздела методического пособия «Краткие теоретические сведения» во многом направлено на систематизацию студентом знаний, полученных на лекциях.
Далее студенты выполняют индивидуально либо в тетради, либо на компьютере в текстовом редакторе задания по данной теме, осваивая тем самым особенности записи на языке Турбо-Паскаль логических выражений, а также особенности вычисления логических выражений. Рассмотрим задания из методического пособия. Для третьего задания приведен также пример выполнения.
Задание № 1. Вычислить значения логических выражений, записанных на языке Турбо-Паскаль:
1) not odd(20)
2) not false and true
3) (3<>0) and (4>4)
4) odd(round(8.27))
5) 10 mod 7 = 17 div 5
6) false or (201 mod 3 <> 0)
Задание № 2. Какое значение получит логическая переменная t после выполнения оператора присваивания, если x=false и m=2?
1) t:=m>6;
2) t:=ord(x)<>m;
3) t:=not x and odd(m+1);
Задание № 3. Написать оператор присваивания, в результате выполнения которого логическая переменная q получит значение true, если выполняется указанное условие, и значение false в противном случае.
1) x — отрицательное или равное нулю число.
2) Число x не делится нацело на число y.
3) Каждое из чисел x, y, z равно 2.
4) Только одно из чисел x, y, z не равно 3.
5) Из чисел x, y и z только два отрицательны.
6) Цифра 4 входит в десятичную запись двузначного целого числа x.
Пример выполнения задания № 3.
Рассмотрим следующее условие. Пусть для некоторого целого числа x должны быть одновременно выполнены два требования: число больше 95 и остаток от деления данного числа на 3 равен 1.
Пусть числу x соответствует некоторая переменная x типа integer.
Требование о том, что число должно быть больше 95, запишется следующим образом:
x>95
Требование о том, что остаток от деления данного числа на 3 должен быть равен 1, следует записать так:
x mod 3 = 1
Т. к. для числа должны быть одновременно выполнены два требования, то воспользуемся логической операцией and и запишем необходимый оператор присваивания:
t:=(x>95) and (x mod 3 = 1);
Обратите внимание, что в записи оператора присваивания использованы круглые скобки, т. к. операции отношения > и = имеют меньший приоритет, чем операция and.
Затем студенты решают эти задания по очереди на доске под руководством преподавателя.
Далее студенты выполняют индивидуально по вариантам задания на компьютере, осваивая тем самым особенности написания в системе Турбо-Паскаль простейших программ с использованием логических выражений и логических операторов присваивания.
Рассмотрим один из вариантов, включающий в себя 2 задания.
Задание № 1. Пользователь вводит с клавиатуры некоторое трехзначное число x и цифру y. Написать программу на языке Турбо-Паскаль, печатающую значение true, если цифра y входит в десятичную запись числа x, и false в противном случае.
Задание № 2.Пользователь вводит с клавиатуры некоторые вещественные числа x и y. Написать программу на языке Турбо-Паскаль, печатающую значение true, если данные числа x и y являются координатами точки, лежащей в четвертой координатной четверти, и false в противном случае.
Приведем пример выполнения подобных заданий.
Пример выполнения заданий.
Рассмотрим следующее высказывание: «Треугольник со сторонами a, b, c является равнобедренным».
Из курса геометрии известно, что равнобедренным называется треугольник, у которого две стороны равны. Т. е., у треугольника должны быть равны либо стороны a и b, либо стороны b и с, либо стороны a и с. На языке Турбо-Паскаль это требование будет записано, используя логическую операцию or (т. к. для нас важно равенство хотя бы двух сторон, а не всех сторон сразу), следующим образом:
rs:=(a = b) or (b = c) or (a = c);
Таким образом, переменной rs будет присвоено значение true, если данное требование выполняется, и значение false в противном случае.
Также необходимо учесть, что любая сторона треугольника меньше суммы двух других сторон и является строго большей нуля. Это требование важно для того, чтобы проверить, могут ли вообще введенные пользователем значения являться сторонами треугольника. Запишем это условие на языке Турбо-Паскаль, воспользовавшись логической операцией and (т.к. каждая сторона должна удовлетворять этому требованию):
tr:=(a>0) and (b>0) and (c>0) and (a<b+c) and (b<a+c) and (c<a+b);
Таким образом, переменной tr будет присвоено значение true, если данное условие выполняется, и значение false в противном случае.
Для записи всего высказывания на языке Турбо-Паскаль объединим два условия, рассмотренных выше, с помощью операции and, т. к. условия должны выполняться одновременно:
vys:=rs and tr;
Таким образом, переменной vys будет присвоено значение true, если высказывание истинно, и значение false в противном случае.
На рис. 1 представлен текст данной программы в системе Турбо-Паскаль.
Рис. 1. Текст программы для примера выполнения заданий
Рассмотрим особенности данной программы.
Все переменные, соответствующие сторонам треугольника (a, b, c), и переменные, в которых будет храниться результаты вычисления логических выражений (rs, tr, vys), объявлены в разделе описания переменных var.
Исполняемые операторы программы располагаются между служебными словами begin и end.
C помощью процедур write выводится подсказка пользователю о том, что необходимо ввести значения сторон треугольника a, b, c соответственно.
C помощью процедуры readln пользователю предлагается ввести значения переменных a, b, c соответственно. После ввода значения каждой из переменных необходимо нажать клавишу «Enter».
Далее выполняется вычисление логического выражения, предназначенного для проверки того, что у данного треугольника хотя бы две стороны равны, и присваивание его значения переменной rs.
Затем выполняется вычисление логического выражения, предназначенного для проверки того, что введенные пользователем числа могут являться сторонами треугольника, и присваивание его значения переменной tr.
Далее выполняется вычисление логического выражения, предназначенного для проверки истинности всего высказывания в целом, т. е. для проверки того, что данный треугольник равнобедренный, и присваивание его значения переменной vys.
Для вывода значения высказывания используется стандартная процедура writeln.
С помощью стандартной процедуры readln пользователю предлагается завершить выполнение программы, нажав клавишу «Enter».
Рассмотрим особенности выполнения программы для некоторых значений, вводимых пользователем.
Пусть пользователь ввел значения сторон a=5, b=6, c=7. На экран было выведено значение FALSE, т. к. такой треугольник с такими сторонами хоть и может существовать, но он не является равнобедренным, поскольку значения всех сторон различны (рис. 2).
Рис. 2. Пользователь ввел значения a=5, b=6, c=7
После выполнения заданий на компьютере студент должен оформить отчет, содержащий постановку каждого задания, тексты программ и результаты выполнения программ. Отчет в распечатанном виде студент должен защитить, ответив на вопросы преподавателя. Примеры вопросов для защиты отчета:
1) В каком случае результатом дизъюнкции является «истина»?
2) Какими служебными словами обозначаются логические значения в языке Турбо-Паскаль?
3) В каких случаях логическая операция xor, используемая в языке Турбо-Паскаль, дает в результате значение «истина»?
4) Расположите логические операции, используемые в языке Турбо-Паскаль, в порядке убывания приоритета: а) and; б) xor; в) or; г) not.
5) Что в логическом операторе присваивания, записанном на языке Турбо-Паскаль, расположено слева от знака присваивания, а что — справа?
6) Каким ключевым словом обозначают символьный тип данных в языке Турбо-Паскаль?
7) Какие простые типы данных языка Турбо-Паскаль относятся к порядковым?
8) Чему равно значение выражения ord(false), записанного на языке Турбо-Паскаль?
9) Чему равно значение выражения pred(true), записанного на языке Турбо-Паскаль?
10) Чему равно значение выражения odd(4), записанного на языке Турбо-Паскаль?
По мере накопления опыта преподавания дисциплины «Информатика» организация данной лабораторной работы и соответствующее данной работе методическое пособие будут совершенствоваться.
Литература:
1. Семакин И. Г., Шестаков А. П. Лекции по программированию: Учебное пособие. Изд. 2-е, доп. — Пермь: Изд-во Перм. ун-та, 1998. — 279 с.
2. Программирование на языке высокого уровня Паскаль. Лекция 1: Основные понятия языка [Электронный ресурс] — Режим доступа: http://www.intuit.ru/studies/courses/628/484/lecture/6259. (Дата обращения: 28.06.2013).
3. Файзрахманов Р. А. Проектирование автоматизированных информационных систем на основе объектно-ориентированного подхода: учебное пособие / Р. А. Файзрахманов, А. В. Архипов; Пермский государственный технический университет.— Пермь: Изд-во ПГТУ, 2011.— 222 с.
4. Полевщиков И. С. Особенности проведения практического занятия по теме «Количественная оценка информации» в рамках дисциплины «Теория информации и информационных систем» // Педагогика и современность. — 2013. — № 4 — М.: Издательство «Перо» — С. 78–80.
5. Файзрахманов Р. А., Липатов И. Н. Цифровое моделирование случайного процесса с использованием формирующего фильтра // Вестник Ижевского государственного технического университета. — 2011. — № 1 — С. 135–138.
6. Полевщиков И. С. Особенности проведения практического занятия по теме «Избыточность сообщений» в рамках дисциплины «Теория информации и информационных систем» // Педагогика и современность. — 2013. — № 5 — М.: Издательство «Перо» — С. 101–103.
7. Файзрахманов Р. А. Автоматизация научных исследований: учебное пособие / Р. А. Файзрахманов, И. Н. Липатов; Пермский государственный технический университет. — Пермь: Изд-во ПГТУ, 2011. — 161 с.