
- •Основы алгоритмизации и программирования.
- •2. Файл и связанные с ним понятия
- •3. Краткие сведения об интегрированной среде
- •4. Ввод и редактирование текста программы
- •4.1. Ис Турбо Паскаля и окна.
- •4.2. Работа с исходными файлами в окне редактирования
- •4.2.1. Возможные режимы редактирования
- •4.2.2. Приемы работы с клавиатурой
- •4.3. Работа с блоками
- •4.4. Поиск и замена фрагментов текста
- •5. Работа с файлами
- •5.1. Создание нового исходного файла
- •5.2. Загрузка существующего файла
- •5.3. Сохранение файла
- •5.4. Перезапись файла
- •6. Интерактивная помощь.
- •7. Выполнение работы
- •8. Содержание отчета
- •Лабораторная работа № 2 подготовка программ к выполнению в среде турбо паскаля
- •1. Средства ис для компиляции программ
- •1.1. Команда Compile
- •1.2. Команда избирательной компиляции Make
- •1.3. Команда общей компиляции Build
- •1.4. Команда назначения первого файла Primary file
- •1.5. Команда Clear primary file
- •1.6. Команда получения общего состояния Information
- •2. Исправление синтаксических ошибок в программе по сообщениям компилятора
- •2.1. Классификация сообщений компилятора
- •2.2. Определение места ошибки в программе
- •2.3. Определение причины ошибки
- •3. Порядок выполнения работы
- •4. Контрольные вопросы
- •Лабораторная работа № 3 выполнение программ в среде турбо-паскаль
- •1. Структура простейших линейных программ
- •2. Экраны и окна, поддерживаемые ис
- •3. Режимы выполнения программ в ис и курсор выполнения
- •4. Команды ис для выполнения программ
- •5. Дополнительные возможности по прерыванию выполнения программы
- •5.1. Использование точек останова
- •5.2. Использование клавишCtrl-Break
- •6. Правила ввода исходных данных
- •7. Порядок выполнения работы
- •Исходный текст программы lab3.Pas
- •8. Контрольные вопросы.
- •Лабораторная работа № 4 операции в языке турбо паскаль
- •1. Порядковые типы и операции над ними
- •1.1. Целые типы
- •Поразрядное “не”
- •Поразрядное “и”
- •Поразрядное “или”
- •Поразрядное “исключающее или”
- •1.2. Булевский тип
- •2. Выражения в языке Паскаль
- •Приоритет операций
- •3. Выполнение работы
- •I0, i1, i2, x1, x2, x11, x12, u11, u21, u12, u13, u22, u23, n1, n2, n3, p
- •4. Текст программы oper.Pas
- •5. Контрольные задания
- •6. Варианты заданий для лабораторной работы
- •Содержание
8. Контрольные вопросы.
Какую структуру имеет простейшая линейная программа ?
Дайте понятие блока программы.
Какие экраны поддерживает система Турбо Паскаль?
Какой порядок перехода между экранами поддерживается при выполнении программы:а) в обычном режиме; б) в режиме отладки.
Какими командами осуществляется переход между экраном пользователя и экраном ИС?
Какие окна есть в ИС?
Объясните схему переходов между экранами и окнами ИС, приведенную на рис. 2.
Какие окна появляются при выполнении цепочки клавиш:
а) 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 ?
В каких режимах возможно выполнение программы?
Что такое обычный режим выполнения?
Что такое курсор выполнения?
Как реализуется режим отладки?
Как сбросить режим отладки?
Для чего используется команда Go to cursor?
В чем различие между двумя командами трассировки?
Что такое точка останова? Как ее установить в программе?
Как удалить точку останова? Что при этом удаляется из текста программы?
Как выборочно удалить точки останова?
С помощью какой команды можно просмотреть все точки останова?
В каком порядке показываются точки останова?
Как можно прервать выполнение программы?
Почему для прерывания программы может оказаться недостаточно однократного нажатия Ctrl-Break?
Что происходит при двойном нажатии Ctrl-Break?
Какие действия следует осуществить при неправильном вводе данных, если программа запущена: а) из ДОС; б) из ИС?
Какие ошибки возможны при вводе данных?
Лабораторная работа № 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 операций - целого типа, то будет получен результат целого типа. Если хотя бы один из операндов вещественного типа, то результат получится вещественного типа.
Операция деления всегда возвращает вещественный результат (несмотря на тип операндов).
К данным целого типа применимы также поразрядные операции. Правила выполнения операций отрицания над одним из разрядов: