TURBO PASCAL

Новости           

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности

Гостевая книга

От автора

Целый и логический типы данных

Условный оператор

Повторение

  1. Какая функция используется при записи выражения y = x2 + 3x - 7 на языке Паскаль?
  2. Записать на языке Паскаль следующие выражения:
    y=5x5 - 10x + 2;
    z=14x4 - 5x3 + 11x - 17.
  3. Какая функция используется при записи выражения y = |x - 4| + 12 на языке Паскаль?
  4. Записать на языке Паскаль следующие выражения:
    a = x3 + |x2 - 13x + 5| - 11;
    s = |3x4 + 12x3 - 4x + 7| - 13x.

Целый тип данных:

описание - идентификатор integer;
диапазон значений от -32 768 до 32 767;
операция: ''+''- сложение; ''-'' - вычитание; ''*'' - умножение.

Так как в результате деления одного целого числа на другое не всегда получается целое число, то применяют следующие две операции: ''div'' - целая часть от деления; ''mod'' - остаток от деления.

Примеры

19 div 4=4; 19 mod 4=3;
12 div 4=3; 12 mod 4=0;
-21 div 4=-5; -21 mod 4=-1;
-7 div (-4)=1; -7 mod (-4)=-3.

Примечание: Переменной целого типа присваивать значение обычной операции деления ''/'' нельзя, так как при делении одного целого числа на другое целое число результат не всегда является целым числом.

Решение задач

  1. Найти целую часть и остаток от деления целого числа a на целое число b.
  2. Найти сумму цифр заданного трехзначного числа.

Логический тип данных

описание: идентификатор Boolean;
значения: FALSE (ложь), TRUE (истина);
размер выделяемой памяти: 1 байт.

Свои значения переменные логического типа получают обычно в результате выполнения операций сравнения (отношения); ''<'' (меньше), ''>'' (больше), ''<='' (меньше или равно), ''>='' (больше или равно), ''<>'' (не равно), ''='' (равно). Результат отношения равен TRUE, если отношение удовлетворяется для значений входящих в него операндов, а FALSE в противном случае.

Помимо операций отношения в языке Турбо Паскаль существуют четыре логические операции, применяемые только к переменным логического типа. Обозначения и названия этих операций приведены в таблице 1.

    Таблица 1

Значение операнда

Значение операции

X

Y

not X

X and Y

X or Y

X or Y

false

false

true

false

false

false

false

true

true

false

true

true

true

false

false

false

true

true

true

true

false

true

true

false

Логические операции, операции отношения и арифметические операции часто встречаются в одном выражении. Причем отношения, стоящие слева и справа от знака логической операции, должны быть заключены в скобки, поскольку логические операции имеют более высокий приоритет. Вообще, в логическом выражении принят следующий приоритет операций:

NOT
AND,*, DIV, MOD
OR, XOR, +, -
операции сравнения

Порядок выполнения операций определяется скобками. Например, в логическом выражении A OR B AND NOT(A OR B) сначала выполняется заключенная в скобки операция OR, а затем операции NOT, AND, OR.

В языке Паскаль нет возможности ввода логических данных с помощью оператора read. Однако предусмотрен вывод значений переменных логического типа с помощью оператора write. В этом случае для идентификаторов FALSE и TRUE автоматически отводятся по 6 позиций: две - перед словом TRUE и одна - перед FALSE.

Задание

Вычислить значение выражений:

and (b>5) and (a<20) and (b<30)
not(a<15) or not(b<30)
c or d and (b=20)
если a=10, b=20, c=true, d=false.

Условный оператор

Примечание. Для занятия необходимо подготовить плакаты (таблицы, рис. 2), поясняющие работу условного оператора.

Полный условный оператор

If <условие> Then <оператор 1> Else <оператор 2>

Выполнение условного оператора начинается с вычисления значения логического выражения, записанного в условии. Простые условия записываются в виде равенств или неравенств. Сложные условия составляют из простых с помощью логических операций. Если условие истинно, то выполняется < оператор 1>, в противном случае - <оператор 2>. Если в качестве оператора должна выполниться серия операторов, то они объединяются в операторные скобки Begin-End.

Разбор оператора можно выполнить на следующем простом примере.

Пример:

Вывести на экран большее из двух данных чисел.

Program Example_2;
Var x, y : integer;
Begin
Writeln('введите 2 числа');
Readln(x,y); {вводим два целых числа через пробел}
If x>y Then Writeln(x) {если (If)x больше y, то (Then) выводим x,}
Else Writeln(y); {иначе (Else)выводим y}
Readln;
End.

Введем два числа 5 и 7 - значение переменной x равно 5, а значение переменной y - 7 (x=5, y=7). Условие x>y не выполняется, так как 5 не больше 7, - работает оператор, стоящий после else, то есть writeln(y), а следовательно, на экране появится 7.

Примечание. Обратите внимание учащихся на то, что перед служебным словом else разделитель точка с запятой не ставится.

Неполный условный оператор

If<условие> Then <оператор>

Ветвь Else может отсутствовать, если в случае невыполнения условия ничего делать не надо. Например, если значение переменной x меньше 0, то поменять его на противоположное. В программе такой условный оператор выглядит следующим образом:

If x<0 Then x:= -x;

В первом случае условный оператор называется полным, а во втором - неполным.

Пример

Написать программу, проверяющую, принадлежит ли число, введенное с клавиатуры, интервалу (0,5).

Решение

Обозначим: x - число, вводимое с клавиатуры пользователем (это переменная целого типа). Принадлежность числа x интервалу (0,5) определяется следующей системой неравенств:
X принадлежит заданному интервалу лишь в том случае, если одновременно выполняются оба условия:

Program Example_3;
Var x : Integer;
Begin
Writeln('Введите число x');
Readln(x);
If (x>0) And (x<5) Then Writeln(x,' принадлежит интервалу(0,5)')
Else Writeln(x,' не принадлежит интервалу');
End.

Вложенные операторы условия

Часто приходится выбирать путь решения задачи не из двух, а из нескольких возможных. В программировании это можно реализовать, используя несколько условных операторов. В этом случае после служебных слов Then и Else записывается новый условный оператор.

Пример:

Даны целые числа a, b, c. Если a<=b<=c, то все числа заменить их квадратами, если a>b>c, то каждое число заменить наибольшим из них, в противном случае сменить знак каждого числа.

Решение

Условие задачи перепишем следующим образом:

a = a2, b = b2, c = c2, если a <= b <= c

a = c, b = c, если a>b>c

a = -a, b = -b, c = -c, в остальных случаях.

Program Example_4;
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 a:=c; b:=c End
Else Begin a:=-a; b:=-b; c:=-c End;
Writeln(a:3,b:3,c:3);
Readln
End.

Примечание. Если элементами вложенных условных операторов служат неполные условные операторы (как например, в задаче, рассмотренной выше), то могут возникать неясности, связанные с установлением границ условных операторов. В таких случаях служебное слово else относится к ближайшему if.

Задание

В приведенной выше программе изменим условный оператор следующим образом:

If (a<=b) And (b<=c) Then Begin a:=sqr(a); b:=sqr(b); c:=sqr(c)
Else If (a>b) And (b>c) Then Begin a:=c; b:=c End;
Else Begin a:=-a; b:=-b; c:=-c End;
End;

Как изменится выполнение данной программы? Сформулируйте условие задачи, выполняемой данной программой.

Решение

  1. Определить значение логического выражения:

    (-3>=5) Or Not(7<9) And(0<3)

  2. Имеется условный оператор: If D<>10 Then writeln('ура!') Else Writeln('плохо...');. Можно ли заменить его следующими операторами:

     

    If D=10 Then Writeln('ура!') Else Writeln('плохо...');

    If Not(D=10) Then Writeln('ура!') Else Writeln('плохо...');

    If Not(D=10) Then Writeln('плохо...') Else Writeln('ура!');

    If Not(D<>10) Then Writeln('плохо...') Else Writeln('ура!').

  3. Какими будут значения переменных j, k после выполнения условного оператора: If j>k Then j:=k-2 Else dec(k,2);, если исходные значения переменных равны:

     

    1. j = 3, k = 5;
    2. j = 3, k = 3;
    3. j = 3, k = 2.
  4. Запишите условный оператор, в котором значение переменной вычисляется по формуле: a + b, если a - нечетное и a*b, если a - четное.
  5. Вычислить значение функции:

    { x2 + 5, при x>3 , x-8, при x<=3

  6. Найти наибольшее из трех данных чисел.
  7. Вывести на экран номер четверти, которой принадлежит точка с координатами (x, y), при условии, что x и y отличны от 0.

     

  8. Вычислить значение функции:

    { x-12, при x>0, 5, при x=0, x2, при x<0

  9. Даны три целых числа, найти среднее из них. Средним назовем число, которое больше наименьшего из данных чисел, но меньше наибольшего.
  10. Написать фрагмент программы, подсчитывающий сумму только положительных из трех данных чисел.
  11. Даны три числа. Написать фрагмент программы, подсчитывающий количество чисел, равных нулю.
  12. После выполнения операторов

    a := 0;

    If a<>0 Then; a := 2

    значение переменной равно двум. Объясните почему.

  13. Используя составной оператор, упростите следующий фрагмент программы:

    If a>b Then c := 1;
    If a>b Then d := 2;
    If a<=b Then c := 3;
    If a<=b Then d := 4.

    Каким будет значение переменной a после выполнения операторов:

    a := 3;

    If a<4 Then Begin Inc(a,2); Inc(a,3); End.

  14. Составьте программу нахождения произведения двух наибольших из трех введенных с клавиатуры чисел
  15. Если целое число M делится нацело на целое число N, то вывести на экран частное от деления, в противном случае - сообщение ''M на N нацело не делится''.
  16. Найти количество положительных (отрицательных) чисел среди четырех целых чисел A, B, C и D
  17. Чему равны значения переменных a и b после выполнения последовательности действий:

    a := 15 Div (16 Mod 7); b := 34 Mod a *5 - 29 Mod 5*2;
    a := 4 * 5 Div 3 Mod 2; b :=4 * 5 Div ( 3 Mod 2);
    a := a*b; b:= b*b.

  18. Составьте программу, которая определяла бы вид треугольника (если данные отрезки позволяют его построить).
  19. Составьте программу, которая уменьшает первое число в пять раз, если оно больше второго по абсолютной величине.
  20. Составьте программу вычисления выражения:
    1. max(x + y + z, xyz) + 3;
    2. min(x2 + y2, y2 + z2) - 4, если x, y, z введены с клавиатуры.

  21. Составьте программу, которая из трех введенных с клавиатуры чисел возводит в квадрат положительные, отрицательные оставляет без изменения.

    Содержание

 

На главную страницу
(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

    Rambler's Top100 PROext: Top 1000
    Rambler's Top100 Яндекс цитирования
Hosted by uCoz