Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование / WORD / МУ1 ЛР ЯП.DOC
Скачиваний:
40
Добавлен:
15.04.2015
Размер:
600.06 Кб
Скачать

8. Контрольные вопросы.

  1. Какую структуру имеет простейшая линейная программа ?

  2. Дайте понятие блока программы.

  3. Какие экраны поддерживает система Турбо Паскаль?

  4. Какой порядок перехода между экранами поддерживается при выполнении программы:а) в обычном режиме; б) в режиме отладки.

  5. Какими командами осуществляется переход между экраном пользователя и экраном ИС?

  6. Какие окна есть в ИС?

  7. Объясните схему переходов между экранами и окнами ИС, приведенную на рис. 2.

  8. Какие окна появляются при выполнении цепочки клавиш:

а) F6 - Alt-F6 - F5 - Alt-F6 - F5 - Alt-F6 - Alt-F6 - F6

б) F6 - Alt-F6 - Alt-F6 - F5 - Alt-F6 - F6 - F5

в) F5 - F6 - Alt-F6 - F5 - Alt-F6 - F6 - F5 ?

  1. В каких режимах возможно выполнение программы?

  2. Что такое обычный режим выполнения?

  3. Что такое курсор выполнения?

  4. Как реализуется режим отладки?

  5. Как сбросить режим отладки?

  6. Для чего используется команда Go to cursor?

  7. В чем различие между двумя командами трассировки?

  8. Что такое точка останова? Как ее установить в программе?

  9. Как удалить точку останова? Что при этом удаляется из текста программы?

  10. Как выборочно удалить точки останова?

  11. С помощью какой команды можно просмотреть все точки останова?

  12. В каком порядке показываются точки останова?

  13. Как можно прервать выполнение программы?

  14. Почему для прерывания программы может оказаться недостаточно однократного нажатия Ctrl-Break?

  15. Что происходит при двойном нажатии Ctrl-Break?

  16. Какие действия следует осуществить при неправильном вводе данных, если программа запущена: а) из ДОС; б) из ИС?

  17. Какие ошибки возможны при вводе данных?

Лабораторная работа № 4 операции в языке турбо паскаль

Цель работы: изучить особенности применения стандартных операций (арифметические, поразрядные, логические) и стандартных функций Турбо Паскаля; закрепить навыки работы с отладчиком ИС.

1. Порядковые типы и операции над ними

От всех прочих порядковые типы отличаются тем, что возможное множество значений конечно, то есть все значения можно пронумеровать, начиная с нуля. К любому порядковому типу применимы следующие три стандартные функции: Ord(x), Pred(x), Succ(x).

Ord(x) – в точку вызова функция возвращает порядковый номер значения x среди множества значений данного порядкового типа. Всегда возвращает значение целого типа.

Pred(x) - возвращает в точку вызова значение, предшествующее в данном порядковом типе значению x. Возвращает значение того же типа, что и тип аргумента.

Succ(x) - возвращает в точку вызова значение, следующее в данном порядковом типе за значением x. Возвращает значение того же типа, что и тип аргумента.

1.1. Целые типы

Shortint - занимает 1 байт в памяти со знаком. Диапазон значений: от -128 до +127.

Byte - однобайтовый тип. Данные этого типа только положительные. Диапазон значений: от 0 до 255.

Integer - 2 байта со знаком. Диапазон значений: от -32768 до +32767.

Word - 2 байта без знака. Диапазон значений: от 0 до 65535.

Longint - занимает 4 байта со знаком. Диапазон значений: приблизительно 2 миллиарда.

Для каждого значения этих типов нужно различать три стороны:

  • само значение числа;

  • внутреннее представление этого значения в виде двоичного кода;

  • представление этого кода в памяти ЭВМ.

Рассмотрим пример, демонстрирующий различие между первой и второй отмеченными сторонами. Два типа - Byte и Shortint занимают в памяти по одному байту. Формат их внутреннего представления имеет вид:

7 0 -------номера разрядов

27 20--------веса разрядов

S тип Shortint

Знаковый разряд

7 0 -------номера разрядов

27 20--------веса разрядов

тип Byte

Старший разряд

Для типа Shortint знак записывается в самом старшем разряде. Для типа Byte самый старший бит используется для представления значения числа, а не его знака. Исходя из этого один и тот же код в памяти ЭВМ для этих типов будет соответствовать разным значениям:

для типа Shortint 11111111 = -1

1 1 1 1 1 1 1 1

для типа Byte 11111111 = +255

-1 для Shortint получена потому, что 1 в знаковом разряде соответствует отрицательному числу. Отрицательные числа хранятся в так называемом дополнительном коде (ДК). Он получается в 2 приема:

  • нужно проинвертировать все разряды числа ( 0 1 1 0);

  • далее к младшему разряду прибавляется единица. Полученное изображение и будет ДК числа.

Рассмотрим, в чем заключается различие между целыми типами по третьей стороне. Значения многобайтовых типов (Integer, Word и Longint) хранятся в памяти не так, как пишутся. Они размещаются в памяти, начиная с младших байтов, т.е. в порядке, обратном порядку их записи.

Пример:

Пусть запись целой многобайтовой константы имеет вид:

$ 12 34 - здесь 2 байта.

Старший Младший

байт байт

Этому значению числа будет соответствовать следующий код в памяти: 34 12

возрастания адресов слева направо

Следующие стандартные процедуры и функции могут применяться и использоваться с аргументами целых типов:

Abs(x) - возвращает значение модуля в точке вызова.

Chr(x) - возвращает значение модуля в точке вызова символа с кодом, равным значению аргумента.

Dec(x) - выполняет уменьшение первого аргумента на единицу или на заданное вторым аргументом значение.

Inc(x) - увеличивает первый аргумент на единицу или на заданное вторым аргументом значение

аргумент может быть или Integer или Word

Lo(x) - возвращает в точку вызова значение младшего байта.

Hi(x) - возвращает в точку вызова значение старшего байта.

Swap(x) - выполняет следующее действие над двухбайтовыми аргументами: меняет местами старший и младший байты.

Odd(x) - возвращает в точку вызова логическое значение “истинно”, если значение аргумента нечетно, или “ложно”, если значение аргумента четно

Random (x) - возвращает в точку вызова случайное число из диапазона от 0 до значения аргумента (перед первым вызовом Random надо вызвать Randomize для инициализации датчика случайных чисел).

Следующие функции всегда возвращают вещественное значение при целочисленных аргументах:

Sin (x), Cos (x), Arctan (x), Ln (x), Exp (x),

Sqrt (x) - извлечение квадратного корня из аргумента,

Sqr(x) - возведение аргумента в квадрат.

Следующие две функции при вещественном аргументе всегда возвращают целые значения:

Round(x) - округляет вещественное значение до ближайшего большего целого и возвращает его в точку вызова.

Trunc(x) - отсекает дробную часть и возвращает результат в точку вызова.

Есть функция, выполняющая обратное действие:

Frac(x) - отбрасывает целую часть и возвращает в точку вызова дробную

Над данными целых типов , как и над любых других типов, можно производить операции отношения. Эти операции записываются следующим образом:

x = y x > y x < y x <> y x >= y x <= y.

Следующие арифметические операции могут применяться с использованием данных целых типов:

«+» - сложение, «-» - вычитание, «*» - умножение, «/» - деление, .

div - операция целочисленного деления (без остатка),

mod - остаток от целочисленного деления.

Первые 3 операции могут использоваться и в том случае, если оба аргумента целые или хотя бы один из аргументов - вещественного типа. В каждой из этих операций вырабатываются разные типы результатов.

Если оба операнда у первых 3 операций - целого типа, то будет получен результат целого типа. Если хотя бы один из операндов вещественного типа, то результат получится вещественного типа.

Операция деления всегда возвращает вещественный результат (несмотря на тип операндов).

К данным целого типа применимы также поразрядные операции. Правила выполнения операций отрицания над одним из разрядов:

Соседние файлы в папке WORD