Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
G-041.07.01.78-2008 |
Создание презентаций MS Power Point. |
Ред. 2. |
Страница 12 из 12 |
ГОСУДАРСТВЕННЫЙ МЕДИЦИНСКИЙ УНИВЕРСИТЕТ ГОРОДА СЕМЕЙ
КАФЕДРА ОБЩЕСТВЕННОГО ЗДРАВООХРАНЕНИЯ И ИНФОРМАТИКИ
Специальность 5B110100 «Сестринское дело» «Общая медицина»
5B110200 «Общественное здравоохранение»
5B110400 «Медико-профилактическое дело»
5B130100 «Общая медицина»
5B130200 «Стоматология»
Предмет Информатика
Курс 1
ИНФОРМАЦИОННО ДИДАКТИЧЕСКИЙ БЛОК
И МЕТОДИЧЕСКИЕ УКАЗАНИЯ
ДЛЯ СТУДЕНТОВ
К ПРАКТИЧЕСКМУ ЗАНЯТИЮ
Тема №
“ Данные логического типа в Turbo Pascal ”
Составитель
старший преподаватель Курманжанов А.Т.
Семей, 2011 г.
Информационно-дидактический блок и методические указания для студентов к практическому занятию на тему « Данные логического типа в Turbo Pascal»
обсуждена на заседании кафедры (курса) от 2011 года
Протокол №
Ответственный по курсу Буланова Р.К.
1. Тема: Данные логического типа в Turbo Pascal
2. Количество учебных часов: 3 академических часа (150 минут).
3. Актуальность темы (мотивация) :
5. Задачи обучения:
Изучить операций над логическими аргументами.
Рассмотреть пример программы на использование в Turbo Pascal типа данных Boolean
Составить простые программы с использованием логических операций.
6. Студент должен знать:
1) понятие типа данных, его предназначение и иерархию
2) логические типы данных, их размеры
3) логические выражения и операции отношения для них
4) правила для логических значении True (истина) и False (ложь)
5) операции булевой алгебры над логическими типами
6) простые программы с использованием логических операций
7. Студент должен уметь:
1) определять логические типы данных, их размеры и диапазон
2) приводить примеры логических выражений
3) составить простые программы с использованием логических операций
4) структурировано правильно распологать программу в Турбо Паскаль
5) проводить логические операции над логическими аргументами
8. Вопросы самопроверки :
а) по базисным знаниям:
б) по теме занятия:
9. Литература
10. Информационно-дидактический блок (аннотация, пособия)
Ι. Теоретическая часть
Язык программирования Паскаль популярен среди программистов по следующим причинам:
1. Прост для обучения.
2. Отражает фундаментальные идеи алгоритмов в легко воспринимаемой форме, что предоставляет программисту средства, помогающие проектировать программы.
3. Позволяет четко реализовать идеи структурного программирования и структурной организации данных.
4. Использование простых и гибких структур управления: ветвлений, циклов.
5. Надежность разрабатываемых программ.
Турбо Паскаль это система программирования, созданная для повышения качества и скорости разработки программ (80-е гг.). Слово Турбо в названии системы программирования это отражение торговой марки фирмы-разработчика Borland International (США).
Понятие типа данных в Турбо Паскаль
Для обработки ЭВМ данные представляются в виде величин и их совокупностей. С понятием величины связана такая важная характеристика, как ее тип.
Тип определяет:
В языке Паскаль тип величины задают заранее. Все переменные, используемые в программе, должны быть объявлены в разделе описания с указанием их типа. Обязательное описание типа приводит к избыточности в тексте программ, но такая избыточность является важным вспомогательным средством разработки программ и рассматривается как необходимое свойство современных алгоритмических языков высокого уровня.
Иерархия типов в языке Паскаль такая:
Логические типы данных
Прямое отношение к программированию имеет дисциплина, которая называется математической логикой. Основу математической логики составляет алгебра логики, или исчисление высказываний. Под высказыванием понимается любое утверждение, в отношении которого можно однозначно сказать, истинно оно или ложно. Например, «Луна - спутник Земли» - истинно; «5>3» - истинно; «Москва- столица Китая» - ложно; «1=0» - ложно. Истина или ложь являются логическими величинами. Логические значения приведенных выше высказываний однозначно определены; другими словами, их значения являются логическими константами. Логическое значение неравенства x < 0, где x переменная, является переменной величиной. В зависимости от значения x оно может быть либо истиной, либо ложью. В связи с этим возникает понятие логической переменной.
Основы формального аппарата математической логики создал в середине XIX в. английский математик Джордж Буль. В его честь исчисление высказываний называют булевой алгеброй, а логические величины булевскими.
Одиночные высказывания могут быть объединены в составные логические формулы с помощью логических операций.
Имеются три основные логические операции: отрицание, конъюнкция (логическое умножение) и дизъюнкция (логическое сложение).
Операция отрицания обозначается в математической логике значком ¬ и читается как НЕ. Это одноместная операция.
Например, ¬ (x = y) читается «не (x равно y)». В результате получится истина если x не равно y, и ложь, если x равно y. Отрицание изменяет значение логической величины на противоположное.
Операция конъюнкции обозначается значком & и читается как И. Это двухместная операция. Например, (x > 0) & (x < 1) читается «x больше 0 и x меньше 1». Данная логическая формула примет значение истина, если x Є (0,1), и ложь в противном случае. Следовательно, результат конъюнкции истина, если истинны оба операнда. Знак операции дизъюнкции V читается как ИЛИ. Например, (x = 0) V (x = 1) читается «x равно 0 или x равно 1». Формула дает истину, если x двоичная цифра (0 или 1). Следовательно, дизъюнкция дает в результате истину, если хотя бы один операнд - истина.
В Турбо Паскале логические значения обозначаются служебными словами True (истина) и False (ложь), а логический тип данных носит название BOOLEAN.
Все реализации языка Pascal, в том числе и Turbo Pascal, вплоть до версии 6.0 содержали только один логический тип данных Boolean, элементы которого могут принимать лишь два вышеуказанных логических значения. В Turbo Pascal версии 7.0 добавлены еще три логических типа данных: ByteBool, WordBool и LongBool.
По аналогии с целыми и символьными типами, подразделяющимися на физические и логические, естественно предположить, что ByteBool, WordBool и LongBool физические типы, Boolean логический. Но в данном случае это не совсем так. Все четыре типа различны. Для Turbo Pascal логический тип Boolean более предпочтителен, так как он использует меньшее количество памяти, остальные типы были введены для обеспечения совместимости разрабатываемых программ с Windows, в которой значению False соответствует 0, а значению True любое, отличное от 0, число.
Название логического типа данных |
Значению False соответствует |
Значению True соответствует |
Размер памяти для логического типа данных |
Boolean |
Число 0 |
1 |
1 байт |
ByteBool |
Число 0 |
Любое число, отличное от 0 |
1 байт |
WordBool |
Число 0 в обоих байтах |
2 байта |
|
LongBool |
Число 0 во всех байтах |
4 байта |
Данные логического типа занимают один байт памяти. При этом значению false соответствует нулевое значение байта, а значению true соответствует любое ненулевое значение байта. Например: false всегда в машинном представлении: 00000000; true может выглядеть таким образом: 00000001 или 00010001 или 10000000.
Однако следует иметь в виду, что при выполнении операции присваивания переменной логического типа значения true, в соответствующее поле памяти всегда записывается код 00000001. В этих операциях операнды логического типа рассматриваются как единое целое - вне зависимости от битового состава их внутреннего представления. Кроме того, следует помнить, что результаты логического типа получаются при сравнении данных любых типов. Логические константы языка Turbo Pascal TRUE (истина) и FALSE (ложь) можно использовать в явном виде или обозначать именем в разделе CONST, например:
const
T=true;
F=false;
L=true;
Логическая переменная тоже может принимать два значения TRUE и FALSE. Логические переменные должны быть описаны предложением:
Var <имя_переменной>: boolean; (Variable переменная).
Например: var L,A,C:boolean;
Следует обратить внимание на то, что в разделе описания переменных необходимо определить тип переменных, используемых в программе. Например,
Var P,Q,R: Integer;
A,B: Char;
F1,F2: Boolean;
В разделе операторов логическому типу переменной можно присвоить значение логической константы, например:
L1:=true; L2:=false; L3:=L1;
Величины логического типа данных можно присваивать, выводить, но нельзя вводить процедурой read.
Пример переменных с булевым значением
x:=true;
y:=5>3
Логические выражения
Логическое выражение есть логическая формула, записанная на языке программирования. Логическое выражение состоит из логических операндов, связанных логическими операциями и круглыми скобками. Результатом вычисления логического выражения является лишь одно из двух значений: true (истина) или false (ложь).
Логическими операндами могут быть логические константы, переменные, функции, операции отношения. Один отдельный операнд является простейшей формой логического выражения.
Для построения логических выражений используются операции отношения, которые обозначаются знаками:
Они необходимы для сравнения переменных, принимающих численные значения, т.е. операции отношения (рис.1) осуществляют сравнение двух операндов и определяют, истинно или ложно соответствующее отношение между ними.
Рис. 1.
Примеры записи отношений: Примеры вычисления отношений:
x<y;
Отношение |
Результат |
12 >= 12 |
true |
56 > 10 |
true |
11 <= 6 |
false |
a+h>=c/d;
abs(m-n)<=1
Операции отношения имеют самый низкий приоритет. Поэтому если операндами логической операции являются отношения, то их следует заключать в круглые скобки. Например, математическому неравенству 1 ≤ x ≤ 50 соответствует следующее логическое выражение: (1<=x) and (x<=50)
Логические операции
Над логическими типами возможны операции булевой алгебры (т.е.логические операции):
not - логическое отрицание «НЕ»
and - логическое «И» (логическое умножение - конъюнкция)
or - логическое «ИЛИ» (логическое сложение - дизъюнкция)
xor - логическое «исключающее ИЛИ» она реализована для логического типа не во всех языках. Эта операция дает значение ИСТИНА, если оба операнда имеют логические значения.
Операции перечислены в порядке убывания приоритетов т.е. при вычислении логических выражений операции выполняются в следующем порядке: not, and, or, операции отношения, арифметические операции. Если порядок выполнения операций нужно изменить, то применяют скобки. Таким образом, сложные условия составляются из простых с помощью вышеуказанных логических операций. Логические операторы Not, And, Or и Xor работают, проверяя значения на 0 (False) или не 0 (True), но всегда возвращают результат с порядковым значением равным 0 или 1.
Результаты выполнения логических операций над переменными А и В логического типа приведены в таблице истинности:
A |
B |
not A |
A and B |
A or B |
A xor B |
true |
true |
false |
true |
true |
false |
true |
false |
false |
false |
true |
true |
false |
true |
true |
false |
true |
true |
false |
false |
true |
false |
false |
false |
При составлении сложных условий операнды логического выражения берутся в скобки (это важно!).
Примеры логических выражений:
5>3; 2<=6; (x<2)and(x>=0); 2*x<>0. |
Следующий пример: |
|
1) x<2*y; 2) true; 3) d; 4) odd (k); |
5) not not d; 6) not (x>y/2); 7) d and (x<>y) and b ; 8) (c or d) and (x = y) or not b, |
|
здесь d, b, c логические переменные; x, y вещественные переменные; k целая переменная. |
Если d=true; b=false; c=true; x=3,0; y=0.5; k=5, то результаты вычисления будут следующими:
В примере использована логическая функция odd (k). Это функция от целого аргумента k, которая принимает значение true, если значение k нечетное, и false, если k четное.
Логический оператор присваивания имеет структуру, представленную на рис.2:
Рис. 2
Примеры логических операторов присваивания:
Функции, связывающие различные типы данных
В таблице приводится список стандартных функций, обеспечивающих связь между различными типами данных
Обращение |
Тип аргумента |
Тип результата |
Действие |
оrd(x) |
Любой порядковый |
I |
Порядковый номер значения х в его типе |
pred(x) |
Любой порядковый |
То же, что для х |
Предыдущее относительно х значение в его типе |
suss(x) |
Любой порядковый |
То же, что для х |
Следующее относительно х значение в его типе |
chr(x) |
Byte |
Char |
Символ с порядковым номером х |
odd(x) |
I |
boolean |
True, если х нечетное; False, если х четное |
Функции ord, pred и succ применимы только к порядковым типам. Из простых типов это все, кроме вещественного.
Функция ord, применяемая к целому числу, дает его собственное значение. Например,
ord(-35)=-35; ord(128)=128
Если аргумент целый, то, например, оператор y:=pred(x) эквивалентен y:=x-1, а y:=succ(x) эквивалентен y:=x+1
Функция chr(x) является обратной к функции ord(x), если x- символьная величина. Это можно выразить формулой: chr(ord(x))=x,
где x- символьная величина.
Например, для кода ASCII справедливо: ord(a)=97; chr(97)= a
Булевский тип также является порядковым, порядок расположения двух его значений таков: false, true. Отсюда справедливы следующие правила:
Правила |
Пример |
ord(false)=0 ord(true)=1 false<true succ(false)=true pred(true)=false |
var A, B: Byte; {целый тип} C, D, E, F: Boolean; {логич. тип} begin A := Ord(False); {A=0} B := Ord(True); {B=1} C := Pred(False); {ошибка} D := Pred(True); {D=False} E := Succ(False); {E=True} F := Succ(True); {ошибка} end. |
Алгоритмическая структура ветвления программируется в Паскале с помощью условного оператора. Раньше мы его описывали в таком виде: If <условие> Then <оператор 1> Else <оператор 2>; Кроме того, возможно использование неполной формы условного оператора: If <условие> Then <оператор>; (Здесь: If - если, Then тогда, Else иначе)
Теперь дадим строгое описание условного оператора в форме синтаксической диаграммы (рис. 3).
Рис.3
То, что мы раньше называли условием, есть логическое выражение, которое вычисляется в первую очередь. Если его значение равно true, то будет выполняться <оператор 1> (после Then), если false, то <оператор 2> (после Else) для полной формы или сразу следующий оператор после условного для неполной формы (без Else).
Составление программ на Turbo Pascal
1. Пример простейшей программы на Turbo Pascal (программы с линейным
алгоритмом) - вычисление площади треугольника по формуле Герона:
S=, где a, b, с стороны треугольника, полупериметр р =;
Программа |
Пояснения к данной программе |
Program Geron; var a,b,c,p,S,Y:real; begin writeln('Вычисление площади треугольника по формуле Герона.'); writeln('Введите стороны треугольника a, b, c:'); readln(a,b,c); p:=(a+b+c)/2; S:=sqrt(p*(p-a)*(p-b)*(p-c)); writeln('Площадь треугольника равна: S=', S); writeln('Для выхода из программы введите число 1.'); readln(y); end. |
Оператор присваивания имеет вид := , например: x:=a+b; b:=1; Присваивание-это вычислительная операция вида: c:=a+b, заключаю- щаяся в вычислении выражения, указанного справа, и записи полу- ченного результата в переменную, указанную слева. Операторы ввода данных: read(x,y,z), readln(a,b,c). Второй из операторов (readln) осуществляет построчный ввод данных.
Операторы вывода данных: write(s), writeln(u,v). Второй из операторов (writeln) осуществляет построчный вывод данных.
Все математические формулы записываются в одну строку. Пример:
S:=sqrt(p*(p-a)*(p-b)*(p-c)); |
2. Теперь, рассмотрим пример программы с алгоритмической структурой ветвления с использованием логических операций.
Для этого дополним программу вычисления площади треугольника по формуле Герона исследованием существования треугольника, если заданы его три стороны. (Исходные данные должны удовлетворять основному соотношению для сторон треугольника: длина каждой стороны должна быть меньше длин двух других сторон). |
Имея возможность в одном условном операторе записывать достаточно сложные логические выражения, мы можем сразу «отфильтровать» все варианты неверных исходных данных. Тогда данную программу можно составить так: |
program tangle; var a,b,c,p,S,Y:real; begin writeln('Вычислите площадь треугольника по трем сторонам'); writeln('и проведите его анализ.'); writeln('Введите стороны треугольника a,b,c:'); read(a,b,c); p:=(a+b+c)/2; S:=sqrt(abs(p*(p-a)*(p-b)*(p-c))); if (a>=(b+c)) or (b>=(a+c)) or (c>=(a+b)) then writeln('Треугольник не существует.') else if (a=b) and (b=c) then writeln('Треугольник равносторонний, его площадь S=',s) else if (a=b) or (b=c) or (a=c) then writeln('Треугольник равнобедренный, его площадь S=',s) else writeln('Треугольник разносторонний, его площадь S=',s); if (a*a=(b*b+c*c)) or (b*b=(a*a+c*c)) or (c*c=(a*a+b*b)) then writeln('Треугольник прямоугольный.'); writeln('Для выхода из программы введите число 1.'); readln(Y); end. |
Program Geron ; var a,b,c,p,S,:real; begin writeln('Введите длины сторон треугольника:'); write('а='); readLn(a) ; write('b='); readLn(b); write ('c='); readLn(c); if (a>0) and (b>0) and (c>0) and (a+b>c) and (b+c>a) and (a+c>b) then begin p:=(a+b+c)/2; S:=Sqrt(p*(p-a)*(p-b)*(p-c)); writeln('Площадь=',S) end else writeln('Неверные исходные данные') End. |
3. Пример программы на использование в Turbo Pascal типа данных Boolean
Программа |
Пояснения к данной программе |
uses crt; Var a, b : boolean; |
1. Аббревиатура CRT будет расшифровываться по-русски как «электронно-лучевая трубка». И действительно, в модуле CRT реализованы специальные процедуры и функции для работы с текстовой информацией на дисплее, позволяющие: управлять текстовыми режимами, организовывать окна вывода на экран, настраивать цвета символов на экране, управлять курсором. Его стандартное местонахождение системная библиотека TURBO.TPL. Для подключения модуля достаточно включить его в директиву USES (использовать) в самом начале программы: USES CRT; {означает: модуль CRT подключен } При подключении модуля CRT исключаются медленная функция MS DOS и повышается скорость вывода информации на дисплей. 2. ClrScr-сокращенная запись функции реализованной в модуле CRT. Она выполняет процедуру очистки текущего окна на экране. |
11. СОДЕРЖАНИЕ ЗАНЯТИЯ.
11.1. Самостоятельная работа.
Задание
1. Вызвать Turbo Pascal , набрать вышеуказанные программы и провести анализ
2. Наберите программу, задайте разные значения переменной, например, 1,5 и т.д. Обратите внимание на результат. Измените в программе знак < на знак > и задайте те же значения. Сравните полученные результаты.
program aba;
var x: real;
t: boolean;
begin
read (x);t:=x<round(x); { арифметическая функция round(x) - округление числа}
writeln(t);
end
3. Наберите программу, дайте для а и в разные значения ,обратите внимание на результат.
Program a1;
Var x,y:Boolean;
A,b:integer;
Begin
Writeln(a,b ввести);
Read(a,b);
X:=true;
Y:=false;
If a>b then writeln (a>b-,x) else writeln (a>b-,y);
Readln;
End.
4. Вычислить значения логических выражений:
а) К mod 7=K div 5-1 при К=15; в) not odd(n)при n=0; д) (x*y<>0) and (y>x) при х=2, y=l;
б) odd(trunc(10*P)) при Р=0.182; г) t and (P mod 3=0) при t=true, P=10101; e) a or not b при a=false, b=true.
5. Если a=true и х=1, то какое значение получит логическая переменная d после выполнения оператора присваивания: a) d:=x<2; б) d:=not a or odd(x);
6. При подключении модуля CRT исключаются медленная функция MS DOS и повышается скорость вывода информации на дисплей. Понятно, что чем «медленнее» работает компьютер, тем заметнее будет эффект от подключения модуля CRT. Эту разницу можно увидеть: для чего просмотрите пример двух программ (без запуска)
Пример:
{Программа использует стандартный вывод}
PROGRAM Standart Output;
VAR i : Byte; {счетчик цикла }
for i : = 1 to 100 do Write (* Турбо Паскаль*);
WriteLn
END.
{Программа использует средства модуля CRT}
PROGRAM CRT_Output;
USES CRT;
VAR i : Byte;
BEGIN
for i : = 1 to 100 do Write (* Турбо Паскаль*);
WriteLn
END.
11.2. Работа с преподавателем:
При появлении затруднений или при ошибочных действиях обратиться к преподавателю для исправления ошибок.
К концу занятия показать преподавателю отчет о выполненной работе и получить зачет по данной работе.
11.3. Контроль исходного и заключительного уровня знаний:
Тестирование на компьютере.
Беседа преподавателя со студентом по вопросам самоподготовки.