Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по TURBO PASCAL.doc
Скачиваний:
18
Добавлен:
04.11.2018
Размер:
1.13 Mб
Скачать
    1. Самостоятельные задания

Во всех заданиях используйте «защиту от дурака», если это уместно.

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

  • Дано два чётных числа. Вывести сначала то, что меньше, потом то, что больше.

  • Найти сумму цифр введенного трёхзначного числа.

  • Дано два целых числа: a, b. Найти:

  1. min (a, b) ;

  2. max (a+b, a–b) ;

  3. min (a*b, a+b, 2*a–b) .

  • Даны длины трёх отрезков. Определить, можно ли из них составить треугольник.

  • Ввести с клавиатуры дату (день, месяц, год), записать ее, назвав месяц словами. Например: Введите день месяц год через пробел: 22 9 1978 Это 22 сентября 1978 года!

  • Придумать интересное задание на использование оператора case.

  1. Стандартные типы переменных

    1. Общий обзор стандартных типов.

До сих пор мы работали только с переменными целого типа. Сейчас мы кратко познакомимся со всеми стандартными типами. Более подробно они будут рассмотрены далее. В нижеследующей таблице приведены характеристики всех стандартных типов.

Таблица 5. Стандартные типы

Вид типа

Имя

типа

Диапазон возможных значений

Объём памяти

Значащих цифр

Целые типы

Byte

0 … 255

1 байт

-

Shortint

-128 … 127

1 байт

-

Word

0 … 65535

2 байта

-

Integer

-32768 … 32767

2 байта

-

Longint

-2147483648…2147483647

4 байта

-

Веществен-ные типы

Single

1.5e-45 … 3.4e38

4 байта

7 – 8

Real

2.9e-39 … 1.7e38

6 байт

11-12

Double

5.0e-324 … 1.7e308

8 байт

15-16

Extended

3.4e-4932 … 1.1e4932

10 байт

19-20

Comp

-263 … 263-1

8 байт

целые числа

Логический тип

Boolean

False и True

1 байт

-

Символьные типы

Char

один любой символ

1 байт

-

String

Строка символов

256 байт

-

    1. Целые типы

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

      1. Тип byte

Переменная этого типа может принимать значения от 0 до 255. Если вы попробуете присвоить ей большее значение, то компьютер вместо этого значения возьмёт остаток от деления на 256. Это происходит из-за того, что в представлении компьютера числа идут «по кругу» и после 255 идёт 0. Эmоm нюанс иллюстрирует программа, которая пытается прибавить к 250 число 10.

Program Byte_Example;

Var b : byte;

Begin

b := 250;

writeln (b);

{$R-} { Выключить проверку границ, см. ниже }

b := b + 10;

writeln (b);

End.

На экране будут напечатаны два числа: 250 и 4. На самом же деле, 250+10=260. Это число в переменной типа byte компьютер запомнить не может, потому записывает 260 mod 256 = 4. Эти опасные случаи надо учитывать, создавая свои программы.

Впрочем, компьютер может сам следить за этим. Вы наверное уже обратили внимание на строку {$R–}. Это директива компилятору. Она используется для того, чтобы компилятор знал каким способом компилировать программу. В данном случае он отключает проверку на превышения границ. Если вместо этого написать {$R+}, то программа напечатает только одно число 250, после чего компьютер выдаст сообщение об ошибке: "Range check error" – превышение границ. Это позволяет избежать ошибок связанных с переполнением, однако при такой проверке программа работает немного медленней.

Так зачем же надо использовать тип byte, если он имеет такой маленький диапазон значений? Ответ прост: для экономии памяти. Переменная такого типа занимает в памяти компьютера всего 1 байт.

      1. Тип shortint

Этот тип также позволяет сохранять только 256 разных целых чисел, но уже и с отрицательными значениями. Его диапазон от –128 до 127. В памяти компьютера этот тип также занимает один байт. При переполнении (попытке записать число, выходящее за диапазон возможных значений) компьютер начнёт считать от –128. Например, в его «арифметике»: 127 + 1 = –128, поэтому:

127 + 10 = (127+1) + 9 = –128 + 9 = –119.

Имейте это ввиду!

      1. Тип word

Если целой переменной выделить не 1 байт, а 2 байта, то она сможет принимать в 256 раз больше разных значений, то есть числа от 0 до 65535 (65536 = 2562). При попытке присвоить такой переменной большее значение, будет использован лишь остаток от деления на 65536.

      1. Тип integer

Integer – первый тип, с которым мы познакомились. Уже упоминалось, что он позволяет хранить числа от –32768 до 32767. Для этого типа есть даже специально определённая константа maxint, которая хранит максимальное целое число, представимое этим типом. Попробуйте выполнить:

Program Maxint_Demo;

begin

Writeln (maxint); { Напечатает 32767 }

end.

Однако избавиться от переполнения условием

if a > maxint

Then ... ...

невозможно, так как если переменная a имеет тип integer, то она не может быть больше, чем maxint. А при попытке записи большего значения получится неверный результат. Поэтому если ваша программа выдаёт заведомо неверный ответ (слишком маленький или даже отрицательный), первым делом проверьте, не происходит ли переполнения. Для контроля ставьте автоматическую проверку переполнения. Если в самом деле причина в этом, то задайте другие начальные данные или используйте целый тип longint.

      1. Тип longint

Это целый тип, который работает с самым большим диапазоном

от –2147483648 до 2147483647

Максимальное значение хранится в константе maxlongint. Этого диапазона хватает для многих практических целей, но для хранения переменной этого типа необходимо уже 4 байта.