Лекции по программированию на паскале


Содержание

Лекция 2: Язык Паскаль и системы программирования на Паскале

1. Понятие о языках программирования.

3. Система программирования TURBO PASCAL 7.0.

1. Понятие о языках программирования.

Мы все, несомненно, имеем некоторое представление о языке, как средстве общения. Русский, английский или японский язык — это естественные языки общения людей, созданные в процессе длительной эволюции. Однако наряду с естественными языками современная цивилизация широко использует так называемые искусственные (или формальные) языки. Примерами формальных языков являются язык дорожных знаков, язык арифметических формул и многие другие. В общем случае язык — это не просто набор символов, слов или предложений. Язык всегда имеет внутреннюю структуру (синтаксис), т.е. правила построения своих конструкций (слов, фраз) и семантику, определяющую смысл конструкций языка.

В естественных языках семантика определяется неформально, так что смысл слова или фразы зависит, в том числе и от «окружения», т.е. от соседних слов и фраз и сформулировать семантические правила практически невозможно.

В формальных языках и синтаксис и семантика характеризуются строгими правилами (например, дорожный знак «кирпич» имеет точный смысл — запрет въезда). С точки зрения семантики формальные языки проще естественных. Компьютеры (точнее компьютерные программы) способны «понимать» только формальные языки, поскольку только формальная семантика может дать алгоритм «приписывания смысла» любой языковой конструкции.

Любая программа общается с пользователем на некотором формальном языке, даже если он называется «подмножеством естественного языка». Система команд компьютера также является формальным языком. Этот язык носит название машинного языка. Процессор компьютера способен понимать непосредственно только машинный язык (который для него является «естественным»).

Каждая команда — некоторый достаточно длинный набор цифр, которые кодируют название операции, адреса операндов и результата операции. Писать безошибочно последовательности таких команд весьма сложно и малопроизводительно. Поэтому уже на заре программирования весьма актуальным вопросом стало создание языков программирования более высокого уровня.

Программисты обычно пишут тексты программ на языке программирования высокого уровня. Это также формальный язык, однако, занимающий промежуточное положение между естественным языком человека и машинным языком. Он более удобен для человека, чем машинный язык, однако, его неспособен непосредственно понимать процессор. Процессор оказывается примерно в такой же ситуации, как Вы, приехав в страну, где говорят на языке, который Вы не понимаете. Какой выход из этого положения? Очевидно, необходим переводчик с языка программирования на машинный язык. Таким переводчиком является специальная программа (входящая в состав программного обеспечения компьютера), называемая транслятором. Транслятор переводит текст программы с языка программирования на машинный язык. Все программы, написанные на языке высокого уровня, обычно проходят предварительно трансляцию в машинный код, который затем исполняется на процессоре. Такой транслятор называется компилятором. Транслятор — основная часть системы программирования, в которую обычно входят также средства редактирования, отладки, оптимизации, документирования программ.

Существует много различных языков программирования высокого уровня — Бейсик, Фортран, С, Паскаль и др. и соответствующих систем программирования. Мы в дальнейшем будем иметь дело исключительно с языком Паскаль — одним из лучших и популярных языков программирования.

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

В 80-х годах фирма Borland International разработала на базе Паскаля язык Турбо-Паскаль и мощную систему программирования, включающую интегрированную диалоговую среду разработки программ на Турбо-Паскале. Турбо-Паскаль вышел в ряд ведущих языков программирования в системе MS DOS, а затем и Windows. Развитие системы Турбо-Паскаль прошло через ряд версий, одной из последних является объектно-ориентированная версия Турбо-Паскаль 7.0 — наиболее совершенная система программирования в среде MS DОS, имеющая солидную инструментальную поддержку, библиотеки стандартных модулей и большой опыт проектирования на ней прикладных систем.

В середине 90-х годов был разработан преемник Турбо-Паскаля — система визуального программирования DELPHI с языком OBJECT PASCAL. OBJECT PASCAL в настоящее время является одним из самых мощных языков программирования прикладных систем.

Основу систем программирования Турбо Паскаль и DELPHI составляют компиляторы с языков Турбо Паскаль и OBJECT PASCAL соответственно. Это — мощные оптимизирующие компиляторы фирмы Borland, являющиеся лучшими в мире. Они позволяют получать экономичный и высокоэффективный программный код.

Замечание Режим работы компиляторов задается опциями компилятора, которые имеют по умолчанию некоторые предопределенные значения. Можно управлять опциями компилятора из программы с помощью директив компилятора. Например <$I->— выключение контроля операций ввода-вывода.

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

Основными конструкциями языка, из которых строится программа, являются: переменные, константы, выражения, операторы и описания. Паскаль представляет мощный механизм для конструирования операторов и обрабатываемых типов данных. Фактически всё, что можно сделать на компьютере — можно сделать на Турбо-Паскале. Он обеспечивает разнообразные потребности и является языком практического программирования. По своей распространенности в системе MS DOS он уступает в настоящее время только языку С, однако, имеет существенные преимущества при обучении основам программирования благодаря своей чёткой, хорошо продуманной структуре, логичности и прозрачности конструкций. Впрочем, это не означает, что он лишен некоторых внутренних противоречий и ограничений, как и все другие языки программирования, но в целом он, на сегодняшний день, является одним из наиболее совершенных языков программирования.

3. Система программирования TURBO PASCAL 7.0.

Важнейшим компонентом системы программирования Турбо Паскаль, обеспечивающим взаимодействие с пользователем, является интегрированная среда разработки (IDE) — одна из лучших интегрированных сред систем программирования MS DOS. Интерфейс с пользователем построен на базе главного меню и диалоговых панелей-окон и включает в себя большой набор функций: редактирования программных текстов, управления файлами, компиляции, выполнения компилированных программ, отладки, настройки среды. В ней имеется также гипертекстовая справочная система по Турбо Паскалю.

Неотъемлемым компонентом системы программирования является библиотека стандартных модулей TURBO.TPL, в которой сосредоточены все стандартные (встроенные) подпрограммы, а также средства текстового ввода-вывода, которые могут использоваться в программах на Турбо Паскале.

Система TURBO PASCAL 7.0 поддерживает модульную разработку программ на Турбо Паскале путем проектирования и отладки текстов программ и модулей. При этом редактор интегрированной среды поддерживает разработку хорошо структурированных программных текстов и построен по принципам синтаксически-ориентированного редактора (распознает и выделяет цветом и подсвечиванием ключевые слова, поддерживает структурирование программного текста). Компилятор содержит большой набор структурированных сообщений об ошибках стадии компиляции и выполнения.

Вместе с тем классическая идеология разработки программ, характерная для TURBO PASCAL 7.0, основную нагрузку возлагает на программиста и отличается достаточно высокой трудоёмкостью программирования, т.к. предполагает разработку программистом всего текста программы, включая функции интерфейса с пользователем. Использование имеющейся в Турбо Паскале библиотеки поддержки проектирования пользовательских интерфейсов — TURBO VISION, несомненно, является прогрессом в разработке прикладных программ на Турбо Паскале, однако повышает требования к квалификации программистов и не изменяет качественно процесс разработки.

Качественно новый стиль программирования даёт визуальное программирование, реализованное в системе DELPHI.

Не нашли то, что искали? Воспользуйтесь поиском:

Паскаль — Урок 1: Первые знания, операторы, структура

Итак, с сегодняшнего дня мы начинаем линейку уроков по изучению самого простого языка программирования — Pascal. Из чего буде состоять этот урок? Сегодня мы обсудим структуру программы, написанной на pascal, основные операторы, типы переменных.

Вся программа состоит из следующих частей:

1) Описание переменных

2) Основной программы:

Если всё это представить в виде алгоритма, то получается так:

— Переменные а и б — численные;

Теперь давайте разберемся с тем, а как это делается в программе.

Для задания типа переменных используется служебное слово var, сами переменные могут быть любыми латинскими буквами. Также есть тип переменных. Тип переменных может быть строковый, целочисленный, а может быть массивом и т.д. Для начала нам потребуется два типа — это тип integer и тип real. Тип integer — тип для целых чисел (1; 288; 3;4; 512; -2; -100 и т.д.). Его проще использовать, да и чаще встречается. Тип real — тип дробных чисел (1,289; 8, 56 и т.д.). В этом типе нужно работать, если есть деление, корень и др.

Начало программы даёт служебное слово begin, а конец — end. Для вывода какого-то необходимого слова или числа используется команда writeln (‘нужное’), а для ввода — read (что-то).

Это абсолютно бестолковая программа, которая выводит то, что Вы ввели.

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

Лекции по программированию на паскале

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

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

Cимволы языка-это основные неделимые знаки, в терминах которых пи- шутся все тексты на языке.

Элементарные конструкции -это минимальные единицы языка, имеющие самостоятельный смысл. Они образуются из основных символов языка.

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

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

Действия, заданные операторами, выполняются над данными. Предложе- ния алгоритмического языка, в которых даются сведения о типах данных, называются описаниями или неисполняемыми операторами.

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

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

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

  • металингвистическая символика, называемая Бэкуса-Наура формулами;
  • синтаксические диаграммы;
  • скобочные конструкции.

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

2. ОСНОВНЫЕ СИМВОЛЫ

Основные символы языка-буквы, цифры и специальные символы-состав- ляют его алфавит. ТУРБО ПАСКАЛЬ включает следующий набор основных символов:

  1. 26 латинских строчных и 26 латинских прописных букв:
  2. _ подчеркивание
  3. 10 цифр:
  4. знаки операций:
  5. ограничители:
  6. спецификаторы:
  7. служебные (зарезервированные) слова:

Кроме перечисленных, в набор основных символов входит пробел. Про- белы нельзя использовать внутри сдвоенных символов и зарезервирован- ных слов.

3. ЭЛЕМЕНТАРНЫЕ КОНСТРУКЦИИ

Элементарные конструкции языка ПАСКАЛЬ включают в себя имена, чис- ла и строки.

Имена (идентификаторы) называют элементы языка — константы, метки, типы, переменные, процедуры, функции, модули, объекты. Имя — это пос- ледовательность букв и цифр, начинающаяся с буквы. В именах может ис- пользоваться символ _ подчеркивание. Имя может содержать произвольное количество символов, но значащими являются 63 символа.

Не разрешается в языке ПАСКАЛЬ использовать в качестве имен слу- жебные слова и стандартные имена, которыми названы стандартные конс- танты, типы, процедуры, функции и файлы.

Для улучшения наглядности программы в нее могут вставляться пробе- лы. По крайней мере один пробел требуется вставить между двумя последовательными именами, числами или служебными и стандартными име- нами. Пробелы нельзя использовать внутри имен и чисел.

Примеры имен языка ПАСКАЛЬ:

Числа в языке ПАСКАЛЬ обычно записываются в десятичной системе счисления. Они могут быть целыми и действительными. Положительный знак числа может быть опущен. Целые числа записываются в форме без десятичной точки, например:

Действительные числа записываются в форме с десятичной точкой или в форме с использованием десятичного порядка, который изображается буквой Е:

ПАСКАЛЬ допускает запись целых чисел и фрагментов действительных чисел в форме с порядком в шестнадцатиричной системе счисления:

Строки в языке ПАСКАЛЬ — это последовательность символов, записан- ная между апострофами. Если в строке в качестве содержательного сим- вола необходимо употребить сам апостроф, то следует записать два апострофа. Примеры строк:

‘СТРОКА’ ‘STRING’ ‘ПРОГРАММА’ ‘АД»ЮТАНТ’

4. КОНЦЕПЦИЯ ТИПА ДЛЯ ДАННЫХ

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

При обработке данных на ЭВМ такая классификация еще более важна. В любом алгоритмическом языке каждая константа, переменная, выражение или функция бывают определенного типа.

В языке ПАСКАЛЬ существует правило: тип явно задается в описании переменной или функции, которое предшествует их использованию. Кон- цепция типа языка ПАСКАЛЬ имеет следующие основные свойства:

  1. любой тип данных определяет множество значений, к которому при- надлежит константа, которые может принимать переменная или выражение, или вырабатывать операция или функция;
  2. тип значения, задаваемого константой, переменной или выражением, можно определить по их виду или описанию;
  3. каждая операция или функция требует аргументов фиксированного ти- па и выдает результат фиксированного типа. Отсюда следует, что транслятор может использовать информацию о ти- пах для проверки вычислимости и правильности различных конструкций. Тип определяет:
  4. возможные значения переменных, констант, функций, выражений, при- надлежащих к данному типу;
  5. внутреннюю форму представления данных в ЭВМ;
  6. операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.

Обязательное описание типа приводит к избыточности в тексте прог- рамм, но такая избыточность является важным вспомогательным средс- твом разработки программ и рассматривается как необходимое свойство современных алгоритмических языков высокого уровня. В языке ПАСКАЛЬ существуют скалярные и структурированные типы данных.

К cкалярным типам относятся стандартные типы и типы, определяе- мые пользователем.

Стандартные типы включают целые, действительные, символьный, логические и адресный типы. Типы, определяемые пользователем, — пере- числяемый и интервальный.

Структурированные типы имеют четыре разновидности: массивы, мно- жества, записи и файлы.

Кроме перечисленных, TURBO PASCAL включает еще два типа — проце- дурный и объектный.

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

  1. все возможные значения порядкового типа представляют собой ограниченное упорядоченное множество;
  2. к любому порядковому типу может быть применена стандартная функция Ord, которая в качестве результата возвращает порядко- вый номер конкретного значения в данном типе;
  3. к любому порядковому типу могут быть применены стандартные функции Pred и Succ, которые возвращают предыдущее и последую- щее значения соответственно;
  4. к любому порядковому типу могут быть применены стандартные функ- ции Low и High, которые возвращают наименьшее и наибольшее значения величин данного типа.

В языке ПАСКАЛЬ введены понятия эквивалентности и совместимости типов. Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется одно из двух условий:

  1. Т1 и Т2 представляют собой одно и то же имя типа;
  2. тип Т2 описан с использованием типа Т1 с помощью равенства или последовательности равенств. Например:

Менее строгие ограничения определены совместимостью типов. Напри- мер, типы являются совместимыми, если:

  1. они эквивалентны;
  2. являются оба либо целыми, либо действительными;
  3. один тип — интервальный, другой — его базовый;
  4. оба интервальные с общим базовым;
  5. один тип — строковый, другой — символьный.

В ТУРБО ПАСКАЛЬ ограничения на совместимость типов можно обойти с помощью приведения типов. Приведение типов позволяет рассматривать одну и ту же величину в памяти ЭВМ как принадлежащую разным типам. Для этого используется конструкция

представляет собой значение кода символа ‘Z’ в двухбайтном представ- лении целого числа, а

даст значение 22, поскольку целое число 534 имеет тип Word и занима- ет два байта, а тип Byte занимает один байт, и в процессе приведения старший байт будет отброшен.

5. СТАНДАРТНЫЕ ТИПЫ ДАННЫХ

К стандартным относятся целые, действительные, логические, символьный и адресный типы.

ЦЕЛЫЕ типы определяют константы, переменные и функции, значения которых реализуются множеством целых чисел, допустимых в данной ЭВМ.

тип диапазон значений требуемая память
Shortint -128 .. 127 1 байт
Integer -32768 .. 32767 2 байта
Longint -2147483648 .. 2147483647 4 байта
Byte 0 .. 255 1 байт
Word 0 .. 65535 2 байта

Над целыми операндами можно выполнять следующие арифметические операции: сложение, вычитание, умножение, деление, получение остатка от деления. Знаки этих операций:

Результат арифметической операции над целыми операндами есть вели- чина целого типа. Результат выполнения операции деления целых величин есть целая часть частного. Результат выполнения операции получения остатка от деления — остаток от деления целых. Например:

Oперации отношения, примененные к целым операндам, дают результат логического типа TRUE или FALSE ( истина или ложь ).

В языке ПАСКАЛЬ имеются следующие операции отношения: равенство =, неравенство <>, больше или равно >=, меньше или равно , меньше = in

Выражения входят в состав многих операторов языка ПАСКАЛЬ, а также могут быть аргументами встроенных функций.

9. ОПЕРАТОР ПРИСВАИВАНИЯ

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

10. ОПЕРАТОРЫ ВВОДА И ВЫВОДА

Рассмотрим организацию ввода и вывода данных с терминального уст- ройства. Терминальное устройство — это устройство, с которым работает пользователь, обычно это экран (дисплей) и клавиатура.

Для ввода и вывода данных используются стандартные процедуры ввода и вывода Read и Write, оперирующие стандартными последовательными файлами INPUT и OUTPUT.

Эти файлы разбиваются на строки переменной длины, отделяемые друг от друга признаком конца строки. Конец строки задается нажатием кла- виши ENTER.

Для ввода исходных данных используются операторы процедур ввода:

Первый из них реализует чтение К значений исходных данных и прис- ваивание этих значений переменным А1, А2, . АК. Второй оператор реализует чтение К значений исходных данных, пропуск остальных значе- ний до начала следующей строки, присваивание считанных значений пере- менным А1, А2, . АК. Третий оператор реализует пропуск строки ис- ходных данных.

При вводе исходных данных происходит преобразование из внешней формы представления во внутреннюю, определяемую типом переменных. Пе- ременные, образующие список ввода, могут принадлежать либо к целому, либо к действительному, либо к символьному типам. Чтение исходных данных логического типа в языке ПАСКАЛЬ недопустимо.

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

Значения исходных данных могут отделяться друг от друга пробелами и нажатием клавиш табуляции и Enter.

Для вывода результатов работы программы на экран используются операторы:

Первый из этих операторов реализует вывод значений переменных А1, А2. АК в строку экрана. Второй оператор реализует вывод значений переменных А1, А2, . АК и переход к началу следующей строки. Третий оператор реализует пропуск строки и переход к началу следующей строки.

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

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

Форма представления значений в поле вывода соответствует типу пе- ременных и выражений: величины целого типа выводятся как целые деся- тичные числа, действительного типа — как действительные десятичные числа с десятичным порядком, символьного типа и строки — в виде сим- волов, логического типа — в виде логических констант TRUE и FALSE.

Оператор вывода позволяет задать ширину поля вывода для каждого элемента списка вывода. В этом случае элемент списка вывода имеет вид А:К, где А — выражение или строка, К — выражение либо константа целого типа. Если выводимое значение занимает в поле вывода меньше позиций, чем К, то перед этим значением располагаются пробелы. Если выводимое значе- ние не помещается в ширину поля К, то для этого значения будет отве- дено необходимое количество позиций. Для величин действительного типа элемент списка вывода может иметь вид А:К:М, где А — переменная или выраже- ние действительного типа, К — ширина поля вывода, М — число цифр дробной части выводимого значения. К и М — выражения или константы целого типа. В этом случае действительные значения выводятся в форме десятичного числа с фиксированной точкой.

Пример записи операторов вывода:

11. СТРУКТУРА ПРОГРАММЫ

Программа на языке ПАСКАЛЬ состоит из заголовка, разделов описаний и раздела операторов.

Заголовок программы содержит имя программы, например:

Описания могут включать в себя раздел подключаемых библиотек (мо- дулей), раздел описания меток, раздел описания констант, раздел опи- сания типов, раздел описания переменных, раздел описания процедур и функций.

Раздел описания модулей определяется служебным словом USES и со- держит имена подключаемых модулей (библиотек) как входящих в состав системы TURBO PASCAL, так и написанных пользователем. Раздел описания модулей должен быть первым среди разделов описаний. Имена модулей от- деляются друг от друга запятыми:

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

Описание констант позволяет использовать имена как синонимы конс- тант, их необходимо определить в разделе описаний констант:

В разделе описания переменных необходимо определить тип всех пере- менных, используемых в программе:

Описание типов, прцедур и функций будет рассмотрено ниже. Отдель- ные разделы описаний могут отсутствовать, но следует помнить, что в ПАСКАЛЬ — программе должны быть обязательно описаны все компоненты программы.

Раздел операторов представляет собой составной оператор, который содержит между служебными словами последовательность операторов. Операторы отделяются друг от друга символом ;.

Текст программы заканчивается символом точка.

Кроме описаний и операторов ПАСКАЛЬ — программа может содержать комментарии, которые представляют собой произвольную последователь- ность символов, расположенную между открывающей скобкой комментариев и закрывающей скобкой комментариев .

Текст ПАСКАЛЬ — программы может содержать ключи компиляции, кото- рые позволяют управлять режимом компиляции. Синтаксически ключи ком- пиляции записываются как комментарии. Ключ компиляции содержит символ $ и букву-ключ с последующим знаком + (включить режим) или — (выклю- чить режим). Например:

<$E+>— эмулировать математический сопроцессор; <$F+>— формировать дальний тип вызова процедур и функций; <$N+>— использовать математический сопроцессор; <$R+>— проверять выход за границы диапазонов.

Некоторые ключи компиляции могут содержать параметр, например:

— включить в текст компилируемой программы назван- ный файл.

Пример записи простой программы:

12. БИТОВАЯ АРИФМЕТИКА

Битовая или поразрядная арифметика введена в TURBO PASCAL для обеспечения возможности работы с двоичными разрядами (битами). Опера- ции битовой арифметики применимы только к целым типам.

Первая группа операций — логические операции not, and, or и xor.

Операция not является одноместной, она изменяет каждый бит целого числа на обратный.

Операции and, or и xor — двуместные, операнды этих операций — целые величины одинаковой длины. Операции выполняются попарно над всеми двоичными разрядами операндов.

Вторая группа операций — это операции сдвига влево shl и сдвига вправо shr:

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

13. ОПЕРАТОР ПЕРЕХОДА

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

14. ЭЛЕМЕНТЫ СТРУКТУРНОГО ПРОГРАММИРОВАНИЯ

Структуризованная программа (или подпрограмма) — это программа, составленная из фиксированного множества базовых конструкций. Расс- мотрим основные определения и способы образования этих конструкций в схемах алгоритмов.

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

Конструкция, представляющая собой последовательное выполнение двух или более операций, называется следованием.

Конструкция, состоящая из развилки, двух операций и слияния, назы- вается ветвлением. Одна из операций может отсутствовать.

Конструкция, имеющая линии управления, ведущие к предидущим опера- циям или развилкам, называется циклом.

Конструкции следование, ветвление и цикл можно представить как операции, так как они имеют единственный вход и единственный выход. Произвольную последовательность операций можно представить как одну операцию.

Операция может быть реализована любым оператором языка ПАСКАЛЬ (простым или составным), либо группой операторов, за исключением опе- ратора перехода GOTO.

В языке ПАСКАЛЬ количество базовых конструкций увеличено до шести, это:

  • следование;
  • ветвление;
  • цикл с предусловием;
  • цикл с постусловием;
  • цикл с параметром;
  • вариант.

Далее рассмотрим, как эти базовые конструкции реализуются в языке ПАСКАЛЬ.

15. УСЛОВНЫЙ ОПЕРАТОР

Условный оператор в короткой форме работает по правилу: если бу- левское выражение истинно, то выполняется оператор , далее вы- полняется оператор, следующий за условным. Если булевское выражение B ложно, то будет выполняться оператор, следующий за этим условным опе- ратором.

16. ЦИКЛ С ПРЕДУСЛОВИЕМ

17. ЦИКЛ С ПОСТУСЛОВИЕМ

18. ЦИКЛ С ПАРАМЕТРОМ

19. ОПЕРАТОРЫ ЗАВЕРШЕНИЯ ЦИКЛА

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

В версии ТУРБО ПАСКАЛЬ 7.0 определены стандартные процедуры Break и Continue. Процедура Break выполняет безусловный выход из цикла. Проце- дура Continue обеспечивает переход к началу новой итерации цикла.

20. ОПЕРАТОР ВАРИАНТА

Кроме этих операций для работы с величинами множественного типа в языке ПАСКАЛЬ используется операция

проверяющая принадлежность элемента базового типа, стоящего слева от знака операции, множеству, стоящему справа от знака операции. Ре- зультат выполнения этой операции — булевский. Операция проверки при- надлежности элемента множеству часто используется вместо операций от- ношения, например:

При использовании в программах данных множественного типа выполнение операций происходит над битовыми строками данных. Каждому значению множественного типа в памяти ЭВМ соответствует один двоичный разряд. Например, множество

представлено в памяти ЭВМ битовой строкой

Подмножества этого множества представлены строками:

Величины множественного типа не могут быть элементами списка вво- да — вывода.

В каждой конкретной реализации транслятора с языка ПАСКАЛЬ коли- чество элементов базового типа, на котором строится множество, огра- ничено. В TURBO PASCAL количество базовых элементов не должно превы- шать 256.

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

Проиллюстрируем применение данных множественного типа на примере.

Пример. Составить программу, которая вырабатывает и выводит на эк- ран дисплея наборы случайных чисел для игры в «Спортлото 5 из 36».

Для заполнения каждой карточки спортлото необходимо получить набор из пяти псевдослучайных чисел. К этим числам предъявляются два требо- вания:

  1. числа должны находиться в диапазоне 1..36;
  2. числа не должны повторяться.

Знакомство со средой PascalABC

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

В бесплатной мини-версии задачника доступно 270 заданий по всем основным разделам. Этого вполне достаточно для самостоятельного освоения начального уровня программирования. Скачать версию 3.0 можно здесь . В настоящее время данная версия больше не поддерживается и разработчики работают над PascalABC.Net . Итак, начинаем pascal abc обучение.

Внешний вид интерфейса программы PascalABC

Окно среды программирования выглядит стандартно. В нем присутствует строка меню (1), ниже располагается панель инструментов быстрого доступа (2). Далее расположена рабочая зона редактора кода.

Внешний вид интерфейса программы

Вверху отображены ярлыки открытых файлов с текстами программ (3). Одновременная работа с несколькими текстами значительно упрощает создание программ. Можно копировать и переносить участки кода из одного файла в другой (4).

В режиме выполнения программы можно увидеть зону ввода данных и вывода результатов (5).

Работа с PascalABC

После набора текста программы необходимо выполнить ее сохранение и задать имя. Для этого можно воспользоваться командой Файл-Сохранить как или соответствующей кнопкой на панели инструментов.

Давайте имя отличное от предлагаемого по умолчанию. Это облегчит вам в дальнейшем поиск нужного кода.

Запуск

Теперь можно запустить программу для проверки ее работы. Команда запуска Программа -Выполнить или кнопкой в виде зеленого треугольника на панели инструментов. Перед запуском выполняется компиляция кода. Если в коде есть ошибки, то появится красная строка с описанием ошибки.

Ошибки в программе

Курсор будет указывать место вероятной ошибки, но это не всегда совпадает с её описанием. Вот, например, на скриншоте выше курсор указывает на переменную Y, но ошибка содержится в строке выше. Там пропущен символ «точка с запятой», который обязательно должен быть по завершению каждой командной строки. После исправления ошибки, снова запускаем выполнение программы.

Остановка

Остановка программы происходит по ее завершению. Но возможны случаи, когда программу необходимо остановить принудительно. Для этого есть кнопка «Стоп» на панели инструментов или команда Программа — Завершить.

Настройка текстового редактора

По умолчанию в редакторе кода задан минимальный размер шрифта. Если вы испытываете дискомфорт при наборе текста, то зайдите в меню Сервис — Настройки редактора. Установите желаемый размер шрифта.

Настройка редактора Pascal ABC

Работа с электронным задачником

Зайдите в меню Сервис — Создать шаблон программы. У вас откроется следующее окно (смотрите ниже)

Здесь нужно написать название группы заданий. Смотрим на список и вписываем нужную группу в точности как она записана в списке окна. После указания имени группы заданий, подсказка поменяется.

Теперь будет указано количество доступных заданий в этой группе или будут перечислены номера конкретных заданий. Вы добавляете номер к названию группы без пробела. Нажимаем кнопку Загрузка. Откроется вкладка с выбранным заданием. В новом файле будет присутствовать автоматически сгенерированный код. Его удалять нельзя.

Теперь для просмотра текста задания нажмем на кнопку запуска программы.

Посмотрите на окно выше. Оно разделено на три части. В первой части дано условие задачи, для которой нужно написать код. Во второй части желтым цветом указаны числа. Это исходные данные, сгенерированные задачником. Они будут прочитаны командой Read. В третьей части отображается результат, который будет получен при выполнении вашей программы. Теперь закрываем окно и дописываем код.

Запускаем на выполнение. Если нет ошибок, то получим окно.

Нужно провести несколько повторных запусков программы, чтобы пройти все тесты. И только после прохождения всех тестов задание получит статус «Задание выполнено!» Теперь можно переходить к выполнению следующего задания.

Уроки программирования на языке Pascal!Урок 1. Описание и первая программа.

Язык программирования Pаscal — весьма несложный язык и ознакомившись с ним, вы сможете с лёгкостью перейти в объектно ориентированное программирование. Начнём.Для работы мы будем использовать среду разработки Free Pascal(или можете использовать Turbo Pascal)
Любой язык программирования имеет описательную часть,(В Assembler — она называется Data Segment) в которой мы описываем то с чем будем работать. Переменные, константы,типы и проч. Первое с чем стоит ознакомится это блок описания переменных. Данный блок начинается с зарезервированного слова «var»(от англ. variables — переменные).
Именная переменных могут быть любые, но желательно придавать им некий смысл. Например сумма -S, произведение — P, и т.д. Главное запомнить два правила: 1)Имя переменной начинается с буквы(не с цифры). 2) Имя переменной не должно содержать кириллицу(русские буквы).
Далее.
Каждая переменная должна быть охарактеризована типом. Типы могут быть как стандартными, так и пользовательскими. Переменная может характеризоваться как числами, так и символами.

BYTE целое число от 0 до 255, занимает одну ячейку памяти (байт).

BOOLEAN логическое значение (байт, заполненный единицами, или нулями), true, или false.

WORD целое число от 0 до 65535, занимает два байта.

INTEGER целое число от –32768 до 32767, занимает два байта.

LONGINT целое число от –2147483648 до 2147483647, занимает четыре байта.
REAL
число с дробной частью от 2.9*10-39.до 1.7*1038, может принимать и отрицательные значения, на экран выводится с точностью до 12-го знака после запятой, если результат какой либо операции с REAL меньше, чем 2.9*10-39, он трактуется как ноль. Переменная типа REAL занимает шесть байт.

DOUBLE
число с дробной частью от 5.0*10-324.до.1.7*10308, может принимать и отрицательные значения, на экран выводится с точностью до 16-го знака после запятой ,если результат какой либо операции с DOUBLE меньше, чем 5.0*10-324, он трактуется как ноль. Переменная типа DOUBLE занимает восемь байт.

CHAR символ, буква, при отображении на экран выводится тот символ, код которого хранится в выводимой переменной типа CHAR, переменная занимает один байт.

STRING строка символов, на экран выводится как строка символов, коды которых хранятся в последовательности байт, занимаемой выводимой переменной типа STRING; в памяти занимает от 1 до 256 байт – по количеству символов в строке, плюс один байт, в котором хранится длина самой строки.

Переменная типа байт будет иметь следующий вид:
var
a:byte;
так-же к одному типу можно приписывать множество переменных:
var
a,b,c,d,e:integer;

Так же — типы могут задаваться пользователем с помощью описательного блока Type.
Сперва указывается название типа, а затем описание типа. В качестве описания типа может быть множество.

С данным блоком мы познакомимся более подробно в следующих уроках.
Третий описательный блок — константы.
константы — не имеют типа(за исключением типизированных констант, но об этом позже). Они делятся на числа и символы.

Для написания простейшей программы, этого достаточно. Дальше мы это рассмотрим более подробно. А теперь напишем вашу первую программу.

Суть программы будет в проведении арифметических действий над двумя числами и записи результата в третье.
Сперва опишем переменные.
var
a,b,c:real;
(напомню, что переменные типа real(иначе числа с плавающей точкой или числа с плавающей запятой), могут содержать в себе дробные числа(в отличии от integer). Два данных типа наиболее часто используются в базовых уроках).
После описания идут программные скобки. В разных языках они разные, в Pascal программные скобки представлены в виде слова Begin(Открывающая скобка) и End.(Закрывающая).
В коде они выглядят так:
Begin
End.
Таких скобок может быть несколько, однако основные скобки, всегда заканчиваются словом End.(с точкой).
Арифметические действия в Паскале изображаются стандартными символами.
«+»-сложение
«-» — вычитание
«/»-деление
«*»-умножение
Чтобы записать результат выполнения в переменную используется команда присвоения. — «:=»;
Но прежде чем выполнять данные действия, необходимо внести значения переменных в программу. Для того, чтобы программа запросила вод данных, используется команда Read().
Поскольку арифметические действия будут выполнятся над 2мя числами — программа должна запросить на ввод — 2 числа.

Read(a,b);
(Обратите внимание, что операторы(строки выполняющие какие либо действия) разделяются точкой с запятой).
Но помимо ввода, данных, нам необходимо вывести результат на экран. Для этого используется команда Write().
Оформим нашу программу.

var
a,b,c:real;
begin
read(a,b);
c:=a+b;
write(c);
end;
Алгоритм нашей программы можно описать так: Ввод данных, подсчёт суммы введённых чисел и запись их в переменную результата. Вывод переменной результата.
Оператором Write, можно выводить не только переменные, но и просто текст! Текст для вывода берётся в кавычки.

Операторы Pascal не восприимчивы к регистру.(Другими словами, неважно большими или маленькими буквами писать).
Теперь, после того как вы записали программу, нажмите комбинацию клавиш Ctrl+F9 или Run на панели инструментов, для запуска программы. Что мы видим? Программа выполнилась и сразу закрылась. (Если это не так, значит у вас возникли ошибки, окно в нижней части экрана, должно уведомить вас об этом). Что бы увидеть результат выполнения программы, нажмите F5.
Попробуйте составить программу, которая не суммирует, а делит или умножает числа.
Так же внизу представлены некоторые бинарные(для двух чисел) команды, без описания. Попробуйте узнать — что они делают и для какого типа данных предназначены(real или integer):
+

/
*
div
mod
А на сегодня всё. Если этот пост будет одобрен, увидимся на следующем уроке. Удачи)

Язык паскаль онлайн

Методические указания часть 1 | Язык программирования «Turbo Pascal»

    Browse: Home / Лекции Паскаль / Методические указания часть 1 | Язык программирования «Turbo Pascal»

Программирования и алгоритмические языки методические указания часть 1 Язык программирования «Turbo Pascal»

ВВЕДЕНИЕ

Эти методические указания предназначены для студентов первого курса по направлению подготовки «Электроника» (0908) по специальности «Электронные системы» (6.090803) дневной формы обучения и служат для помощи студентам во время подготовки и выполнения лабораторных работ по дисциплинам «Программирование и алгоритмические языки» в первом семестре при изучении языка программирования «Turbo Pascal».

Целью проведения лабораторных работ является овладение алгоритмического языка программирования «Turbo Pascal», приобретение навыков в разработке алгоритмов методом по шаговой детализации на основе базовых логических структур, изучения и освоения основных методов и приемов программирования, ознакомление с процессом прохождения заданий во время их решения на ЭВМ, получение практических навыков работы за компьютером по отладки и тестированию программ.

Цикл лабораторных работ выполняется в течение семестра и охватывает основные темы курса «Программирование и алгоритмические языки» первого семестра. Теоретической основой для выполнения лабораторных работ является курс лекций, теоретические сведения в начале каждой лабораторной работы данных методических указаний, практические занятия и учебная литература.

Язык «Pascal» специально разрабатывалась Н. Виртом как учебная.Именно ее целесообразно использовать как первый язык программирования, чтобы научиться программированию.Овладев этот язык, в дальнейшем без особого труда можно самостоятельно перейти на любой другой язык программирования высокого уровня.Несмотря на изначальное предназначение языка «Pascal» как учебной, ее дальнейшая реализация фирмой Borland Inc в виде языка «Turbo Pascal» и «Object Pascal» позволила подняться на высшую ступень наравне с ведущими мощными языками программирования такими, как «С», «Java «и др. Современные реализации этого языка дают возможность проектировать различные приложения, от решения небольших задач численного характера до разработки сложных программных систем.

Язык отразила важнейшие концепции технологии разработки программ: развитая система типов данных, ориентация на принципы структурного программирования, поддержка процесса по шаговой разработки.

Описания лабораторных работ выполнены по единой структуре и включают в себя цель работы, краткие теоретические сведения, методические указания для подготовки к работе и ее выполнения, индивидуальные задания к лабораторной работе, контрольные вопросы для подготовки к защите работы.Тематика лабораторных работ охватывает практически все основные типы данных и основные операторы языка «Turbo Pascal».

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

1) Название лабораторной работы.

2) Тема лабораторной работы.

3) Краткие теоретические сведения.

4) Методические указания.

5) Задания для лабораторной работы своего варианта с соответствующими указаниями.

6) Блок-схемы программ.

После выполнения лабораторной работы для ее защиты необходимо составить отчет, который в себя включает: пункты 1-6 плана работы, текст программы, результаты выполнения указаний и тестов по программе, вывод по работе.

Лабораторная работа защищается на лабораторном занятии или на консультации (по разрешению преподавателя).Студент, не защитил две предыдущие работы не допускается к следующей. Также к лабораторной работе не допускается студент, который не имеет плана проведения текущей лабораторной работы.

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

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

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

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

1 Лабораторная работа №1 .ОПЕРАТОРЫ условного перехода

Цель работы: получение навыков по составлению простых программ с использованием условных операторов; знакомство с задачами, для решения которых требуются условные операторы; получение навыков по использованию простых типов данных, операторов ввода — вывода.Получение навыков по составлению простейших блок — схем.

1.1 теоретические сведения

типы данных

Таблица 1.1 — Типы данных языка программирования Turbo Pascal

типы данных простые действительны Real 2.9e-39..1.7e38
Single 1.5e-45..3.4e38
Double 5.0e-324..1.7e308
Extended 3.4e-4932..1.1e4932
Comp -9.2e18..9.2e18
ординальные перечисленные
диапазонные
логический Boolean False, True
цели Shortint -128..127
Integer -32768..32767
Longint -2147483648 .. 2147483647
Byte 0..255
Word 0..65535
символьный Char
сложенные массив Array
файл File
множество Set
строка String
запись Record
указательные

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

Для всех ординальных и действительных типов указанные операции отношения = (равно), <> (не равно), (больше),> = (не менее).Результат отношение определяется как отношение значений ординальных номеров или значений операндов.

В таблице 1.2 описаны стандартные операции над данными простых типов.Принятые обозначения: И Ипteger (целый) B Вооlеап (логический) R Rеаl (действительный).

Таблица 1.2 — Операции над данными простых типов

операция содержание Тин операндов Тип результата
+ плюс И, R И, R
минус И, R И, R
* умножения И, R И, R
DIV целочисленных деления И И
МОD Остаток от деления И И
/ Диленные И, R R
OR арифметическое ИЛИ И И
логическое ИЛИ В В
AND арифметическое И И И
логическое И В В
NOT арифметическое НЕТ И И
логическое НЕТ В В
XOR Арифметическое «раздельное» ИЛИ И И
Логическое «раздельное» ИЛИ B В
SHL Арифметический сдвиг влево I И
SHR Арифметический сдвиг вправо И И

Если в операциях +, -, * хотя бы один из операндов имеет тип Real, то результат тоже будет тип Real.

Для всех ординальных типов обозначенные функции Succ, Pred и Ord:

Ord (x) — ординальное номер x;

Succ (x) — следующее за x ординальное значения;

Pred (x) — ординальное значения, предшествует х.

Применение функции Succ до максимального значения или функции Pred до минимального значения любого ординальное типа приводит к неопределенному результату.

Целый тип (Shortint, Integer, Longint, Byte, Word).Целый результат дают следующие функции:

Abs (x) — модуль целого значения x;

Addr (x) — адрес первого байта переменной x;

Hi (x) — значение старшего байта целого значения x;

Lo (х) — значение младшего байта целого значения x;

Round (x) — закругленное значение действительного значения x;


SizeOf (x) — размер в байтах памяти, необходимой для хранения значения x или типа х;

Sqr (x) — квадрат целого значения х;

Swap (x) — переставляет старший и младший байты целого значения x;

Trunc (х) — целая часть действительного значения х.

Символьный тип (Char).Данные символьного типа принимают значения упорядоченного набора символов, изображенных в конкретном ПК. Значение символьного типа записываются одним символом, ставится в одинарные кавычки, например ‘A’.В ПК преимущественное применение имеет кодирования символов в системе АSCII (American Standard Code for Information Interchange — американский стандартный код для обмена информацией).

Для символьных данных обозначенные следующие функции:

Chr (х) — символ АSCII с кодом х — байтового типа,)

Ord (х) — АSCII — код символа х;

UpCase (х) — переводит малую латинскую букву х в большую, остальные символы не меняется.

Логический тип (Boolean).Данные логического типа могут принимать значения True и False.Считают, что значений False логический результат дают следующие функции:

КеуРrеssed — возвращает True, если была нажму и любая клавиша, в противном случае — False;

Odd (х) — возвращает True, если целое число х — нечетное и False, если х — четное.

Действительный тип (Real, Single, Double, Extended, Comp).Действительный результат дают следующие функции:

Abs (х) — модуль действительного значения х:

ArcTan (x) — главное значение арктангенса в радианах;

Cos (x) — косинус х — в радианах)

Exp (x) -значение экспоненциальной функции;

Frac (x) — дробная часть x;

Int (х) — целая часть действительного значения x;

Ln (x) — значение натурального логарифма х;

Sin (x) — синус х — в радианах)

Sqr (x) — квадрат действительного значения х;

Sqrt (х) — квадратный корень из х.

Операторы. Оператор присваивания состоит из левой и правой частей, разделенных знаком присвоение «=». В левой части находится имя переменной или функции, а в правой — выражение, имя другой переменной или имя функции.Действие оператора присваивания заключается в вычислении выражения или функции и замены текущего значения переменной в левой части на вычисленное значение выражения в правой части.Тип переменной, стоит слева, и тип правой части должны быть одинаковыми. Существует единственное исключение: переменной действительного типа можно присваивать целочисленных значения. Присваивать можно данные любых типов, кроме файловых.

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

1) операция отрицания NOT;

2) мультипликативные операции *, /, DIV, MOD, AND, SHL, SHR;

3) аддитивные операции +, -, OR, XOR;

4) операции отношения =, <> <>, =, IN.

Оператор перехода состоит из ключевого слова Goto, за которым следует метка.Выполнение этого оператора приводит к тому, что управление выполнением программы передается на оператор, перед которым имеется соответствующая метка. При использовании оператора перехода должны выполняться следующие правила:

1) областью действия метки тот блок, в котором она описана и переход возможен только внутри этого блока;

2) запрещается переход внутрь структурного оператора.

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

Операторы ввода-вывода Read, Readln, Write, Writeln позволяют работать с различными физическими устройствами: клавиатурой, дисплеем, принтером, дисководами и др.Рассмотрим организацию ввода с клавиатуры и вывод на дисплей.

Оператор ввода Read предназначен для предоставления необходимых значений данным программы.Формат оператора: Read (а1, а2, …, an), где а1, а2, …, an — переменные допустимых типов.Значение а1, …, аn при вводе отделяются пробелом, введение завершаются нажатием клавиши Enter (возврат каретки или клавиша ввода).Количество вводимых значений и их типы должны соответствовать количеству и типам переменных в операторе Read.В противном случае возникает ошибка ввода-вывода.Например, во время выполнения программы

Var i: integer;

begin

Read (c, i) end.

Правильным является введение: А 1234.

Оператор ввода Readln аналогичный оператору Read, однако следующий оператор ввода-вывода будет вводить или выводить данные с новой строки.

Оператор вывода Write служит для вывода значений переменных, выражений и строк символов.Формат оператора: Write (а1, а2, …, аn), где а1, …, an — переменные допустимых типов, выражения или строки.Строка, когда в иводиться, берется в одинарные кавычки.

Можно осуществлять также отформатировано вывода данных. Для этого после имени переменной через двоеточие ставится число — количество знакомест на дисплее, которые выделяются для вывода значения данной переменной.Например, во время выполнения программы

Var i: Integer;

begin

Write (i: 6, i + i: 6, s: 10) end.

результат будет выглядеть: _ _1234_ _2468_ _ _ _Формат.

Если выводится переменная или выражение, имеющие тип Real, то можно указать общее количество знакомест и количество знакомест для вывода десятичной части значения переменной или выражения.Например,

Write (-Pi: 10: 5,29 / 3: 7: 4) выдает .Результат: _ _-3.14159_9.6667.

Оператор вывода Writeln аналогичный оператору Write, однако следующий оператор ввода-вывода будет вводить или выводить данные с новой строки.

Составной оператор (операторные скобки) используется тогда, когда правила языка предусматривают только один оператор, а программисту надо выполнить последовательность операторов.Выполнение составного оператора заключается в последовательном выполнении всех включенных в него операторов. Составленному оператора входят ключевое слово begin, последовательность операторов и ключевое слово end.Пара слов begin и end называется операторных скобками.После begin и перед end точку с запятой можно не ставить.

Условный оператор служит для выполнения или невыполнения некоторого оператора в зависимости от истинности тех или иных условий.Условный оператор состоит из ключевого слова If, за которым следует выражение логического типа, ключевого слова then и оператора.По оператором может идти ключевое слово else и новый оператор.

Выполнение условного оператора заключается в вычислении логического выражения. Если его значение True, то выполняется оператор, стоящий за словом then.Если значение выражения-условия False и условный оператор не содержит слова else, то его выполнение завершается.Если есть слово else, то выполняется оператор, стоящий после него.

Общие виды условного оператора:

If then или If then ;

If else else ;

Первая форма называется сокращенной (неполной), вторая — полной форме условного оператора. Точка с запятой перед else не ставится.

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

Таким образом, конструкция следующего вида:

If then If then else ;

If then

begin If then else end.

Примеры сокращенной и полной форм условного оператора:

If x> y then z = x;

If x> y then Write ( ‘X больше Y’)

else begin z = y; Write ( ‘X не превышает Y’) end;

Оператор выбора предназначен для выполнения одного из нескольких возможных операторов.Он состоит: из ключевого слова Case, за которым следует селекторная выражение; ключевого слова of; последовательности операторов, каждому из которых предшествует метка (или список меток, или некоторый диапазон значений меток), которая отделена от оператора двоеточием (:) ключевого слова end.Как и условный оператор, оператор выбора может содержать ключевое слово else, которое должно стоять последним перед end.

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

Общий вид оператора выбора;

Case of

Метки и значение выражения-селектора должны быть одного и того же ординальное типа. В списке меток они отделяются друг от друга запятой. Каждая метка должна быть уникальной в списках меток, то есть встречаться только один раз.Метки оператора выбора не описываются в разделе Label и на них нельзя переходить оператором Goto.

Var letter: Char;

begin

readln (letter)

Case UpCase (letter) of

A, ‘E’, ‘I’, ‘J’, ‘O’, ‘U’, ‘Y’: Write ( ‘Латинская громкая’);

‘B’ .. ‘D ‘,’ F ‘..’H ‘,’ K ‘..’N ‘,’ P ‘..’T ‘,’ V ‘..’X ‘,’ Z ‘: Write (‘ Латинская согласная ‘)

else Write ( ‘Символ не является латинской буквой’)

end end.

2 Лабораторная работа №2.Оператор цикла

Цель работы: получение навыков по использованию операторов циклов; программирования вычислительных процессов с известным числом повторений; разработка и программирование алгоритмов итерационной циклической структуры.

2.1 теоретические сведения

Операторы повторения предназначены для организации циклов.Язык Паскаль содержит три оператора повторения: For, While, Repeat.

Оператор цикла с параметром состоит из ключевого слова For, за которым следуют переменная цикла; знак присвоения; выражение, определяющее начальное значение переменной цикла; ключевое слово to или downto; выражение, определяющее конечное значение переменной цикла; ключевое слово do, оператор, выполняется в цикле (простой или составной).Общий вид оператора цикла с параметром:

For = to do ;

For = Downto Do ;

Переменная цикла, начальный и конечный выражения должны быть одного и того же ординальное типа. Во время выполнения переменная цикла приобретает последовательных значений данного ординальное типа в порядке их увеличения (если есть слово to) или уменьшение (если есть слово downto).Количество исполнений тела цикла вычисляется для выполнения операторов и равна — + 1 (если есть слово to) или — + 1 (если есть слово downto ).Если в цикле со словом to (Downto) начальный выражение больше (меньше) от конечного, то тело цикла не выполняется ни разу.Внутри тела цикла не следует заменять значение переменной цикла, хотя такое изменение не фиксируется как ошибка и не влияет на количество исполнений тела цикла. После окончания работы оператора цикла For значение переменной цикла равна конечному значению.Если тело цикла не исполнилось, то значение переменной не определено.

Var c: Char;

bgin For c = ‘z’ downto ‘a’ do Writeln (c) end.

В результате будут выведены малые буквы латинского алфавита в обратном порядке.

Блок-схема оператора For изображена на рисунке 1.4.

Оператор цикла с предусловием состоит из ключевого слова While, за которым следуют выражение логического типа, ключевое слово и исполняемый в цикле оператор (простой или составной).Выражение задает условие продолжения выполнения цикла.

Общий вид оператора цикла с предусловием:

While do ;

Выполнение этого цикла осуществляется следующим образом. Сначала вычисляется значение логического выражения.Если это значение False, то тело цикла не выполняется; если значение True, то тело цикла выполняется, после чего снова вычисляется выражение.Чтобы предотвратить «зацикливания», следует предусмотреть изменение значения выражения внутри тела цикла.

Рисунок 2.1 — Блок — схема оператора For

Например, следующая программа вычисляет сумму

Var s, p: Real;

begin

while p until ;

Выполнение этого цикла происходит так. Сначала выполняется тело цикла, а затем определяется значение логического выражения.Если значение Тruе, то выполнение цикла прекращается; если значение False, то снова происходит выполнение тела цикла, затем снова вычисляется выражение.Если в теле цикла необходимо выполнить несколько операторов, то операторные скобки begin и end можно опускать, их роль играют слова Repeat и until.

Например, программа находит ту же сумму, что и в предыдущем примере:

Var s, p: Real;

begin

s: = 0; г. = 0.1; Repeat s = s + sиn (г); р: = р + 0.1 until р> 2; witeln (s) end.

Блок-схемы операторов циклов с предусловием и после условием изображены на рисунке 2.2.

Рисунок 2.2 — Блок-схемы операторов циклов while, repeat

Пример решения лабораторного задачи:

2.2 методические указания

а) изучить возможности языка программирования для реализации вычислительных процессов циклической структуры с известным числом повторений в цикле и когда число повторений неизвестно;

б) разработать алгоритмы решения задач своего варианта, записав их в виде блок-схем;

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

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

2.3 контрольные вопросы

  1. Оператор цикла с параметром.
  2. Блок-схема оператора цикла с параметром.
  3. Оператор цикла с предусловием.
  4. Блок-схема оператора цикла с предусловием.
  5. Оператор цикла с постусловием.
  6. Блок-схема оператора цикла с постусловием.

3 Лабораторная работа №3.РАБОТА С массив чисел

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

3.1 теоретические сведения

Перечислен тип является ординальное типу, что создается программистом. (Ординальнисть — свойство типа.Ординальное является тип с ограниченным количеством констант.Каждая константа имеет свой порядковый номер. К ординальных относятся цели, символьный, логический, перечислен, диапазонный типы) перечислен тип задается перечислением всех своих значений, которые являются идентификаторами, причем каждое значение может принадлежать только одному перечисленному типа.Ординальное номер первой константы есть 0, а следующих 1,2 … В отличие от данных других ординальных типов, данные перечисленного типа не могут быть непосредственно введены или выведены, их можно присваивать, сравнивать, принимать следующее, предыдущее значение, определять ординальное номер.

Приведем примеры описания данных перечисленного типа:

Type month = (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec)

s: (CPM, MSXDOS_2_0, PCDOC, UNIX)

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

Приведем примеры описания данных диапазонного типа:

Type spring = mar..may;

Var sm: spring;

В данном случае считают, что перечисленный тип, содержащий mar и may, уже описанный ранее.

Масивов тип является составным или структурным типом.Массив состоит из фиксированного числа компонент, каждая из которых имеет один и тот же тип.Компоненты массива называются его элементами. Элементы массива могут иметь тип и тип, введенный пользователем. Тип элементов массива называется базовым. Элементы массива размещены упорядоченно, каждый имеет свой номер, который называется индексом. Доступ к элементам массива осуществляется путем указания порядкового номера (индексации). Индексом может быть любое выражение ординальное типа. Тип индекса определяет границы изменения значений индекса, количество элементов в массиве.

Описание одномерного масивов типа состоит из ключевого слова array, по которому в квадратных скобках записано тип индекса, ключевого слова of и описание типа элементов.

Общий вид описания масивов типа:

Type = array [ ] of ;

Const n = 10;

Type rgb = (red, green, blue)

ar = array [0..n] of Integer;

Var matrix: array [1 ..8,1 .. 8] of Real;

color: array [rgb] of Byte;

Следует отметить, что типы переменных а и с не эквивалентны, так как переменная а имеет тип аr, а переменная с не является типа аr.

Если базовым типом является масивов, то получаем многомерный массив.В приведенном примере переменные ar2 и matrix является двумерными массивами.Описание переменной matrix эквивалентен такому описанию

Var matrix: array [1..8] of array [1..8] of Real;

То есть многомерные массивы можно описать двумя формами:

Type = array [ ] of array [ ] ofarray [ ] of ;

Type = array [ , … ] of ;

Оператор присваивания можно применять к массиву как к единому целому. Для этого необходимо, чтобы массивы были одного и того же типа. В результате выполнения оператора а = b все значения элементов массива b будут присвоены соответствующим элементам массива а.

Так, для описанных выше переменных правильным является оператор аr2 [3] = а (поскольку аr2 [3] является массив того же типа, что и массив а).Оператор присваивания с = а неправильный, поскольку массивы а и С не эквивалентных типов.

Доступ к элементам массива.Элементы массива изображаются в программе с помощью имени элемента массива, который состоит из имени массива и индекса в квадратных скобках. Для приведенного выше примера color [green] — байтовая величина, matrix [4,7] — действительная величина, аr2 [10] — величина типа аr.Для многомерных массивов допускается такая форма записи доступа к элементу: matrix [1] [2], аr2 [4] [0] — соответственно то же, что и matrix [1,2], аr2 [4,0].

Констант массив описывается так же, как и обычный массив, но после описания базового типа ставится знак =, по которому в круглых скобках перечислены через запятую значения элементов массива.

Type rgb = (red, green, blue)

Const color: array [1..4] of rgb = (red, green, blue, green)

table: array [1..5] of Real = (0,0.5,1,1.5, -8e10)

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

Type rectangle = array [1..4,1..2] of Integer;

Const box: rectangle = ((0,0), (0,1), (5,1), (5,0));

Задавать символьные констант-массивы можно двумя способами:

Const vocal: array [1..7] of Char = ( «А», «Е», «И», «J», «В», «U», «Y»);

Const vocal: array [1..7] of Char = ‘АЕИJОUY «.

Пример решения лабораторного задачи:

3.2 методические указания

а) изучить правила организации массивов и синтаксис описания в программе одномерных и двухмерных массивов (матриц)

б) изучить организацию вложенных циклов с учетом порядка перебора элементов матрицы;

в) изучить правила использования приемов программирования в структурах с вложенными циклами;

г) разработать алгоритм решения задач своего варианта, записав их в виде блок-схем;

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

3.3 контрольные вопросы

  1. Задания одномерного массива.
  2. Формы задания многомерного массива.
  3. Доступ к элементам массива.
  4. Тип индекса массива.
  5. Тип элементов массива.
  6. Перечислен тип данных.
  7. Диапазонный тип данных.

4 Лабораторная работа №4.ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ подпрограммы ПОЛЬЗОВАТЕЛЯ

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

4.1 теоретические сведения

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

Все процедуры и функции делятся на два класса: стандартные (зарезервированные) и определяемые пользователем. Стандартные процедуры и функции являются частью языка, они заранее не описываются. Процедуры и функции, определенные пользователем, обязательно описываются в разделе описания подпрограмм. Само описание не предусматривает выполнения никаких действий. Для выполнения процедуры в программные является оператор вызова процедуры. Функция будет выполнена, если ее имя встретится в некотором выражении.

Процедура имеет ту же структуру, что и Паскаль-программа, и состоит из заголовка и блока (тела).Заголовок процедуры содержит ключевое слово Procedure, имя процедуры и, если необходимо, список формальных параметров с указанием типа каждого из них.Тип параметра должен быть простым или описанным с помощью имени ранее введенного типа.

Например, описание вида:

Procedure sum (n: Integer, а именно: array [1..50] of Real)

не допускается. Этот заголовок следует описать так:

Type ar = array [1..50] of Real;

Procedure sum (n: Integer, а именно: ar)

Блок процедуры аналогичный блока Паскаль-программы, за исключением лишь того, что после последнего end процедуры ставится точка с запятой, а не точка. Могут присутствовать все разделы, кроме раздела подключения модулей.

Общий вид описания процедуры:

Procedure ( );

begin

Например, процедура frame формирует на экране рамку размером 10х10 из знаков ‘*’.Левый верхний угол рамки имеет координаты (x, y). Программа demo_procedure строит на экране две рамки.

Program demo_procedure;

Procedure frame (x, y: Byte)

begin

For i: = 1 to 8 do begin GotoXY (x, y + i) Write ( ‘* *’) end;

begin

ClrScr; fram (31,2) frame (41,12)

Функция имеет ту же структуру, что и процедура, кроме того, что функция может возвращать дополнительно еще один результат простого типа через заголовок (а не только через параметры-переменные, как процедура).Заголовок функции содержит ключевое слово Function, имя функции, необязательный список формальных параметров с указанием типа каждого из них и имени типа функции.

Общий вид описания функции:

Function ( )

begin

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

Например, функция ch (x) вычисляет значение гиперболического косинуса.

Программа demo_function находит значение выражения: y = ch (1) + ch (2).

Program demo_function;

Function ch (x: Real): Real;

begin

Ch = (Exp (x) + Exp (-x)) / 2

begin

Y = ch (1) + ch (2) Writeln ( ‘y =’, y)

Параметры процедур и функций.Они позволяют при каждом вызове процедуры или функции работать с объектами, задаются в момент вызова через список фактических параметров.Список формальных параметров в заголовке процедуры или функции определяет имена, под которыми эти объекты известны внутри подпрограммы, а также тип необходимых фактических параметров.Между формальными и фактическими параметрами существует соответствие: первый фактический параметр соответствует первому формальному, второй — второму и т.д.

Количество формальных и фактических параметров должна быть одинаковой. Типы формальных и фактических параметров должны совпадать. Исключением является передача параметров строчной типа. В этом случае с помощью директивы компилятора <$ V +>можно активизировать проверку совпадения длин фактических и формальных параметров. По умолчанию установлен режим <$ V +>.

Turbo Pascal поддерживает следующие виды параметров: параметры-значения, параметры-константы, параметры-переменные и без типичные параметры-переменные.

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

Параметр константа.Это локальная константа для подпрограммы. Этот параметр полностью подобен параметра значение за исключением того, что его значение нельзя изменять в подпрограмме. Для описания параметров-констант в заголовке подпрограммы существует ключевое слово const, которое ставится перед соответствующими параметрами.

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

Type st80 = string [80];

Procedure demo (a, b: Byte; c: Char; var s: st80; var n: Byte)

В процедуре demo параметры a, b и c являются параметрами-значениями, а параметры s i n — параметрами-переменными.

Для параметров-переменных можно не указывать их типов. Тогда параметр бестиповых параметром переменной.Такие параметры совместимы с любым типом.

Область действия метки и имени (принцип локализации).Описание или определение метки или имени (константы, типа, переменной, процедуры, функции) распространяется на весь блок, в котором содержится это описание или определение. Область, в которой справедливое определение или описание метки или имени, называется областью действия этой метки или имени.

Если имя или метка описаны или обозначенные в блоке основной программы, то они называются глобальными. Если же имя или метка описаны или обозначенные внутри блока, то они называются локальными. Имя или метка глобальные относительно блока, если они описаны или обозначенные в блоке, включая данный блок. Описание или определения локальной метки или имени вне «своего» блока неопределенны. Если во вложенном блоке описана или данная локальная метка или имя, совпадающее с глобальной, то областью действия этой локальной метки или имени будет «свой» блок, за его пределами действует описание или определение глобальной метки или имени.

Например, во время выполнения программы:

Program demo_var;

Var a, b, c, d: Integer;

Procedure change (c: Integer; var d: Integer);

Var b: Integer;

begin

a = 1; b = 1; c = 1; d = 1

begin

a = 0; b = 0; c = 0; d = 0; change (c, d)

Write ( ‘a =’, a, ‘b =’, b, ‘c =’, c, ‘d =’, d)

a = 1 b = 0 c = 0 d = 1.

Переменная а является глобальной для программы demo_var, область ее действия распространяется и на процедуру change. Изменение значения а внутри процедуры change вызывает изменение ее значение и в основной программе.В процедуре change описана локальная переменная b, значение ее действительно только внутри этой процедуры.Глобальная переменная b своего значения не меняет.Переменная с, как параметр значение, тоже локальной и своего значения за пределами процедуры change не меняет.Присвоение внутри процедуры change новое значение переменной d, как параметра-переменной, вызывает изменение фактического параметра d.

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

Рекурсивные процедуры и функции.Если процедура или функция вызывает сама себя, то она называется рекурсивной. Глубина рекурсии, то есть количество вызовов, системой Тurbo Pascal не ограничивается.Реально она зависит от ресурсов памяти конкретного компьютера.

В общем случае рекурсивность — это не свойство самой процедуры или функции, а свойство ее описания.Рекурсия — мощный инструмент для решения многих задач.Рекурсивная подпрограмма, как правило, короче и нагляднее, но во время выполнения требует больше времени и памяти за счет повторных обращений к самому себе и дублирование локальных переменных.

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

Блок-схема программы, в которой есть подпрограмма, и блок-схема подпрограммы приведены на рисунке 4.1.

Рисунок 4.1 — Блок — схема программы по подпрограммой

Пример решения лабораторного задачи:

4.2 методические указания

а) изучить правила записи подпрограмм различных типов и средств обращения к ним;

б) изучить способы передачи параметров в подпрограммы ;

в) усвоить правила записи программ, которые используют подпрограммы различных видов;

г) разработать алгоритмы решения задач своего варианта, записав их в виде блок-схем;

д) подготовить текстовый вариант программы и предварительных данных.

4.3 контрольные вопросы

  1. Подпрограммы-процедуры в программе.
  2. Подпрограммы-функции в программе.
  3. Разница между процедурами и функциями.
  4. Формальные и фактические параметры.
  5. Принцип локализации.
  6. Особенности составления блок-схемы программы, имеет подпрограммы.
  7. Процедурный тип данных.
  8. Рекурсия.

5 Лабораторная работа №5.ОТДЕЛКА символьной ДАННЫХ

Цель работы: получение навыков по алгоритмизации и программирования задач, которые обрабатывают символьные данные; освоить ввода и вывода символьных данных, их обработки; научиться использовать стандартные процедуры и функции обработки символьных данных.

5.1 теоретические сведения

Теоретические сведения о символьного типа данных (char) приведены в первой лабораторной работе.

Строка — это последовательность произвольных символов.Строчные константы при использовании берутся в апострофы.В строке может содержаться от 0 до 255 символов. Описание строчной типа состоит из ключевого слова string, по которому в квадратных скобках записано максимальное количество символов, которое может иметь переменная описываемого типа.

type line = string [80];

begin

s: = ‘Произвольная последовательность символов’; t = ‘TURBO’; writeln (s, », t)

Символы строки имеют номера от 0 до 255, причем ASCII код символа с номером 0 равна текущей длине данной строки.Отдельный символа строки можно обратиться за помощью индекса, так же, как при обращении к элементу массива. Так, s [11] = ‘о’ — 11-й символ строки s, t [0] — нулевой символ строки t, причем Ord (t [0]) = 5 — текущая длина строки t.

Операции над строками.Над данным строчной типа определены операции сложения, отношение и оператор присваивания. Также их можно вводить с клавиатуры и выводить на экран.

Сцепление двух или более строк в один реализуется с помощью операции сложения или конкатенации, которая обозначается знаком «+». Добавляться могут строки произвольной длины, но необходимо, чтобы длина строки-результата не превышала 255.

‘Turbo’ + » + ‘Pascal’ + ‘v.7.1’ ‘Turbo Pascal v.7.1 «

«ТРАН ‘+’ ‘+’ ЗИСТОР » транзистор»


Во втором примере пара апострофов, идущие подряд, изображает пустой символ.Он не отображается на экране и не имеет порядкового номера.

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

«Pascal ‘=’ Pascal ‘True

Оператор присваивания используется для присвоения строчной переменной результата выражения, имеет строковый тип. Если с правой стороны от оператора присваивания иметь строка, содержащая больше символов, чем может содержать переменная, стоит слева, то лишние праве символы отбрасываются.В операторе присваивания допускается смешивание символьного и строкового типов. Если в данном случае символьной величине присваивается строка, текущая длина которого больше 1, то возникает ошибка во время выполнения.

var s, t: string [12];

begin

c = ‘T’; s = c + ‘urbo’; t = ‘A’;

Стандартные подпрограммы обработки строк.Во время дальнейшего описания процедур и функций под типом anystring понимать любой строчный тип.

Процедуры. Delete (Var s: anystring; n, m: Integer) — извлечение m символов из строки s, начиная с n- го символа.Если n больше длины строки, то не происходит никаких действий.Если n + m больше длины строки, то изымаются все символы до конца строки.Значение n должно лежать в пределах 1..255.

s = ‘Turbo’ Delete (s, 2,3) ‘To’

s = ‘Turbo’ Delete (s, 9,4) ‘Turbo’

s = ‘Turbo’ Delete (s, 4,3) ‘Tur «

Insert (s: anystring; Var t: anystring; n: Integer) — вставка строки s в строку t перед символом с номером n.Если n больше длины строки t, то происходит конкатенация t i s. Если длина результата превышает максимальную длину строки t, то в t остаются только левые символы.Значение n должно лежать в пределах 1..255.

Пусть t имеет тип string [9].

t = ‘Tuo’ Insert ( ‘rb’, t, 3) ‘Turbo’

t = ‘Turbo’ Insert ( ‘INST.COM «, t, 2)’ TINST.COM»

Str (n: Integer <или Real>; Var s: anystring) — преобразование целого или действительного значения n в строку s.Строка s должен иметь достаточную длину.После n может быть указан формат, как в операторе вывода Write.Если в формате указано количество позиций, которая больше длины строки s, то лишние праве символы будут отброшены.

В следующих примерах переменная r имеет тип Real и значение 567.89, s имеет тип string [5], г. имеет тип string [10].

Выражение Число Результат

Str (13: 4, s) _ _13 ’13’

Str (13: 6, s) _ _ _13 ‘1’

Str (r: 10 p) 5.6789E + 02 ‘5.6789E + 02’

Str (r 8, p) 5.68E + 02 ‘5.68E + 02’

Str (r: 8: 2, p) _ _ 567.89 «567.89»

Str (-r: 12: 2, p) _ _ _ _ _ -567.89 «-567.»

Val (s: anystring; Var n: Integer <или Real>; c: Integer) — преобразование строки s в число n.Строка s должен быть изображением некоторого числа и не должен содержать начальных и конечных пробелов. Если преобразование состоялось успешно, то с = 0, в противном случае значение n не определено, а переменная с равна номеру первого ошибочного символа в строке s.

Val ( ‘1234’, n, c) Для n произвольного типа его значение 1234 i с = 0.

Val (’12 .34 ‘, n, c) c = 3, n не определено для n целого типа;

с = 0, n = 12.34 для n действительного типа.

Val ( ‘- 149 _’, n, c) с = 5, n не определено для n произвольного типа.

Функции. Concat (s1, s2, …, sn: anystring): anystring — конкатенация строк s1, …, sn в один в указанном порядке.Если длина строки-результата превысит 255, то возникнет ошибка во время выполнения.

Concat ( ‘Turbo’, », ‘Pascal’) ‘Turbo Pascal «

Сору (s: anystring; n, m: Integer): anystring — результатом является m символов из строки s, начиная с символа с номером n. Если n больше длины строки s, то результатом функции будет пустой символ.Если n + m больше длины строки s, то результатом функции будут конечные символы, начиная с символа с номером n. Значение n должно лежать в пределах 1..255.

Copy ( ‘Turbo Pascal «, 7,6)’ Pascal ‘

Copy ( ‘Turbo Pascal «, 14,3)’ ‘

Copy ( ‘Turbo Pascal «, 9,7)’ scal»

Copy (s, n, 1) s [n], если

Length (s: anystring): Byte — результатом является текущая длина строки s есть количество в нем символов.

Pos (s, t: anystring): Byte — результатом является наименьший номер символа, начиная с которого строка s входит в строку t, если вхождение нет, то результатом будет 0.

Pos ( ‘AB’, ‘BABBABBAB’) 2

Pos ( ‘Turbo’, ‘Pascal’) 0

Пример решения лабораторного задачи:

5.2 методические указания

а) изучить правила записи символьных данных (констант, переменных, массивов) и описание способа их ввода и вывода;

б) ознакомиться с основными стандартными процедурами и функциями, которые позволяют обрабатывать символьные строки.Обратить внимание на вызов подпрограмм и на типы формальных параметров;

в) разработать алгоритмы решения задач своего варианта, записав их в виде блок-схем;

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

5.3 контрольные вопросы

  1. Строчный тип данных.
  2. Символьный тип

3.Операции со строками.

4.Стандартные процедуры для действий со строками.

  1. Стандартные функции для действий со строками.

6 Лабораторная работа №6.ОБРАБОТКИ файловой структуры данных, использование ЗАПАСОВ

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

6.1 теоретические сведения

Запись — это составленный или структурный тип данных, содержащий фиксированное количество компонент, каждая из которых может иметь свой тип.Тип компонент записи может быть произвольным: простым, составленным или указательным.

Описание записного типа состоит из ключевого слова Record, за которым следует список компонент с указанием их типов.Завершает описание, ключевое слово end.Компонента записи называется полем.

Общий вид описания записного типа:

Type = Record

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

Над данным записного типа, как над одним целым, определены две операции: селекция (выделение) компоненты и оператор присваивания.Для селекции компоненты некоторого записи после имени переменной записного типа ставится знак «. «(Точка), по которому указывается имя поля.В операторе присваивания можно употреблять только записи, идентичные по структуре.

Например, для задания информации о студенте можно ввести записной тип student со структурой

Type exam = (phisik, program, math)

mark = Array [exam] of 0..100;

date = Record

student = Record

Var s, s1: student;

Размер s.name имеет тип string И40], величина s.sesion имеет тип mark, величина s.sesion [math] есть диапазонного типа 0..100.Поле birthday имеет, в свою очередь, записной тип, поэтому доступ к его полей будет иметь вид: s.birthday.day — день, s.birthday.year — год рождения.

Присвоение конкретного значения переменной s может иметь следующий вид:

s.name = ‘Суботiна Лилия Геннадьевна’; s.group:=’ПЕ-071 ‘;

s.birthday.day:=29; s.birthday.month = 3; s.birthday.year = 1988;

s.sesion [phisik] = 90; s.sesion [program] = 95; s.sesion [math] = 100.

оператор присоединения with.Использование полей является громоздким из-за того, что постоянно отмечается имя переменной-записи. Для сокращения подобных записей используют оператор присоединения with.Этот оператор задает область действия, в которой для записи, указанном после with, идентификация поля происходит с помощью простого имени поля.

Общий вид оператора присоединения:

with do ;

Таким образом, приведенный выше фрагмент будет выглядеть:

with s do begin

name = «Суботiна Лилия Геннадьевна ‘; group = ПЭ-991 ‘;

with birthday do begin

day = 29; month = 3; year = 1980;

sesion [phisik] = 90; sesion [program] = 95; s.sesion [math] = 100

Вложенные операторы присоединения допускают сокращенную форму записи.

with a do

with b do

with c do

with a, b, c do

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

y: Record x, y: Integer end;

Внутри блока операторов переменная вещественного типа х отличается от целочисленной переменной у.х, а переменная записного типа в — от целочисленной переменной у.у.внутри оператора

with y do

переменные х и у обозначают соответственно переменные у.х и у.у, а настоящая переменная x недоступна.

Записи с вариантами.Данные описанного выше записного типа имеют, строг o фиксированную структуру, то есть количество полей и их тип задаются только раз и не изменяются.В языке Паскаль предусмотрено так называемые записи с вариантами, которые позволяют создавать гибкие структуры.

Запись с вариантами состоит из фиксированной и вариантной частей, причем фиксированную часть можно опускать. Фиксированная часть является обычным записи, а вариантная состоит из ключевого слова Case, за которым следует описание поля — селектора вариантов, ключевого слова of и описания вариантов.Каждый вариант состоит из списка полей, определенных для данного варианта. Поля каждого варианта и описание их типа берутся в круглые скобки.

Общий вид описания записного типа с вариантами:

Type = Record ;

Case of

Значением селектора должна быть одна из описанных меток. Эти метки не имеют ничего общего ни с метками оператора перехода goto, ни с метками оператора выбора Case.Значение селектора определяет, какой из вариантов и, соответственно, какие из имен полей доступны в момент выполнения программы.

Все имена полей должны отличаться друг от друга, даже если они встречаются в различных вариантах.

Запись может содержать только одну вариантную часть, которая идет по фиксированной частью. Допускаются вложенные варианты, то есть полем некоторого варианта может быть запись с вариантами. Если для некоторой метки соответствующее поле пустым, то этот факт записывается так:

Например, описанный выше тип student можно расширить за счет изменения его структуры.Ввести поле-селектор sex (пол).Для студентов — мужчин определить поле логического типа mil_serv (military service — воинской обязанности).Для студенток создать вложенную вариантную часть с полем-селектором логического типа married (замужем или нет).Если замужем, то в поле naiden_name записать девичья фамилия, в противном случае не вводить никакой информации.Новый тип student будет выглядеть;

Type exam = (phisik, program, math)

mark = Array [exam] of 0 ..100;

date = Record

student = Record

Case sex: (male, female) of

male: (mil_serv: Boolean);

female: (Case married: Boolean of

True: (maiden_name: string [20]);

Констант-записи описываются как и обычные записи.Значения полей задаются в круглых скобках и отделяются знаками ‘; «.

Например, для описанного выше типа с вариантами student задания констант-записи s будет иметь вид:

Type student =

(Name: «Буря Оксана Михайловна ‘;

birthday: (day: 22; month: 1; уеаr 1988)

Файловой тип (File) (типизированные файлы).В языке Паскаль термин «файл» касается объектов, образованных последовательностью компонент одного типа, причем считают, что файл находится снаружи программы. Компоненты файл в называются его элементами.В отличие от масивов типа, количество элементов файла не определяется во время описания файлового типа.

Работа с файлами сводится к открытию файла, выполнения операций над его элементами и закрытия файла.

Описание файлового типа состоит из ключевого слова File, за которым следуют ключевое слово of и типа элементов файла.Элементами файл в могут быть объекты произвольного типа, кроме файлового.Переменная файлового типа является весьма специфической, ее нельзя использовать в выражениях и в операторе присвоения. Файловая переменная отождествляется с некоторым физическим файлом и затем в программе только определяет файл, над которым выполняются операции.

Type complex = Record

comp_fil = File of complex;

Var f: comp_fil;

h: File of Integer;

Здесь файловая переменная f изображает файл, элементы которого имеют записной тип complex, h — файл, элементы которого являются целые числа.

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

Стандартные подпрограммы для обработки файлов.Они предназначены для организации и эффективной обработки файлов. В дальнейшем filevar означает любой файловый тип, anystring — любой строчный тип, filetype — тип, совпадает с типом элементов файла.

Assing (Var f: filevar; s: anystring) — файловая переменная f отождествляется с физическим файлом с именем s.Имя s содержит основное или расширенное имя файла, а также может содержать имя дисковода.Любая работа с файлом должна начинаться с этой процедуры.

Например, процедура Assign (h, ‘a: myfile.dta’) отождествляет файловую переменную h физическим файлом «myfile.dta», содержащийся в дисководе A.

Close (Var f: filevar) — закрытие файла f.В этом случае в фа йл записывается метка конца файла и вносятся необходимые изменения в директорий.Эта процедура необходима для сохранения результатов при создании или обновления файлов.

Erase (Var f: filevar) — файл f вытирается с диска.

Flush (Var f: filevar) — очищает буфер файла f.Когда происходит запись в файл, то данные записываются в него не сразу. Сначала накапливаются в буфере, содержится в оперативной памяти, а когда буфер заполнится, происходит запись в файл. Процедура Flush записывает содержимое буфера в том состоянии, в котором он в момент вызова процедуры в файл.Если перед закрытием файла в буфер ни был пустым, то процедура Close автоматически переносит его содержание в файл.

Read (Var f: filevar; Var a1, …, an: filetype) — считывание элементов из файла f и присвоения их значений переменным из списка.Список должен состоять хотя бы из одной переменной, иначе не будут выполняться никакие действия. Считывания начинается с текущего местоположения указателя файла в, а после окончания процедуры он устанавливается на первом непрочитанных элементе.Если тип некоторой переменной из списка не совпадает с типом элементов файла в, то фиксируется ошибка ввода-вывода.

Rename (Var f: filevar; s: anystring) — имя файла f заменяется именем, заданным строкой s.Новое имя не должно совпадать с именами уже существующих файлов.

Reset (Var f: filevar) — открывает уже существующий файл f.Указатель файла в устанавливается н а первый элемент.Если такого файла в не существует, то возникает ошибка ввода-вывода.

Rewrite (Var f: filevar) — образует новый файл f.Если такой уже существовал, то он очищается. Указатель файла в находится в начале файла.

Seek (Var f: filevar; n: Integer) — устанавливает указатель файла f на n-й элемент.Первый элемент имеет номер 0, второй — 1 и т.д.

Write (Var f: filevar; a1, …., An: filetype) — запись в файл f значений переменных из списка.Список должен состоять хотя бы из одной переменной, и Накш не будут выполняться никакие действия.После выполнения процедуры указатель файла в содержится после последнего записанного элемента.Если тип некоторой переменной из списка не совпадает с типом элементов, то фиксируется ошибка ввода.

Процедуры Flush, Read, Seek, Write применяются только к открытым файлов, а процедуры Erase и Rename — до закрытых файлов.Нарушение этого правила приводит к возникновению ошибки ввода-вывода

функции

Eof (Var f: filevar): Boolean — имеет значение True, если указатель файла находится на метке конца файла, и False — в противном случае.

FilePos (Var f: filevar): Integer — определяет номер элемента, в котором содержится указатель файла.

FileSize (Var f: filevar): Integer- определяет количество элементов в файле.

Все три функции должны применяться к открытым файлов.

Контроль операций ввода-вывода. Способ контроля правильности операций ввода-вывода зависит от состояния директивы контроля этих операций. Директива имеет вид: <$ I +>или <$ I->. По умолчанию директива находится в активном состоянии <$ I +>. В этом режиме, если возникнет ошибка ввода-вывода, работа программы прерывается и пользователь получает сообщение о номер и местонахождение ошибки. Такой способ контроля неудобный, потому что может привести к потере данных.

Если директива <$ И>находится в пассивном состоянии <$ I->, то при возникновении ошибки ввода-вывода выполнения программы не прекращается, но следующие операции ввода-вывода задерживаются. Состояние задержки сохраняется до тех пор, пока не будет вызвана целочисленных функция IOResult.Эта функция возвращает значение 0, если предыдущие операции ввода-вывода были корректными, и некоторое ненулевое значение, если обнаружены ошибки.После обращения к этой функции значение ее обнуляется. Хотя эта функция только фиксирует наличие или отсутствие ошибок, контролируя каждую операцию ввода-вывода путем перевода директивы <$ И>в пассивное состояние только на момент выполнения этой операции, можно идентифицировать причину возникновения ошибки и предусмотреть программные средства для ее устранения без прерывания работы программы и с сохранением данных.

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

Program demo_control_IO;

f: File of byte;

begin

ClrScr; GotoXY (30,5) Write ( ‘Название файла:’); b = False;

Repeat

GotoXY (45,5) Readln (s) Assign (f, s);

If IOResult = 0 then b = True

begin

GotoXY (30,7) Write ( ‘Такой файл не найден’);

GotoXY (35,9) Write ( ‘Размер:’, FileSize (f), «байт»); Close (f)

Repeat until keypressed

Текстовые файлы.Отдельное место в языке Паскаль занимают текстовые файлы. В отличие от других файлов, текстовые файлы не состоят из последовательности одинаковых элементов. Компонентами их есть строки символов, которые могут иметь произвольную длину. В конце каждой строки записывается знак конца строки. В конце файла в записывается признак конца файла.Текстовый файл описывается с помощью стандартного идентификатора Техt. Например,

Поскольку текстовые файлы не имеют регулярной структуры, то к ним нельзя применять стандартные подпрограммы FilePos, FileSize и Seek.Запрещается также одновременно читать и писать в один и тот же текстовый файл.

Процедуры. Стандартные процедуры Assign, Close, Reset, Rewrite имеют то же действие.Процедуры Read и Write модифицированы.

Read (Var f: Text; Var a1, …, an: anytype) — считывает из файла f значение и присваивает их переменным из списка.Тип anytype может быть символьным, строчным, целым или действительным.Действие и результат процедуры Read зависят от типа величин, считываются.Для параметра переменной символьного типа с файл в будет считан символ и присвоен соответствующей переменной.Если к выполнению процедуры Read функция Eof приобрела значение Тruе, то символьной переменной будет присвоено символ Chr ($ 1А) (символ ^ Z — конец файлe), а если функция Eoln приобрела значение Тruе (в то-же время функция Eof приобрела значение False) , то переменной будет присвоено значение СHR ($ 0D) и СHR ($ 0A) (символ Сr — возврат каретки).

Для параметра переменной строчной типа процедура Read будет читать все символы из одной строки файла к символу конца строки, но не включая его.Если длина строки превышает длину строки-переменной, то лишние праве символы будет отвергнуто.

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

Например, если в текстовом файле есть последовательность символов

-149 5К4 и процедуры считывания имеют вид

read (f, a) Read (f, b)

и b — целочисленные переменные), то переменной а будет присвоено значение -149, а при попытке считать значение переменной b фиксируется ошибка ввода-вывода ( ‘5К4 «не является целочисленных константой).

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

Например, если в текстовом файле есть последовательность символов

1965.0503_ _-1.607 + 04

и процедуры считывания имеют вид

Read (f, a, b) Read (f, c)

(A, b и с -переменного действительного типа), то переменной а будет присвоено значение 1.9650503Е + 03 переменной b — значение -7.607Е + 04, а при попытке считать значение переменной с фиксируется ошибка ввода-вывода (последовательность ‘2.1 А-05 «не является действительной константой).

Если в двух последних случаях (при чтении величин числового типа) функция Еоf имела значение Тruе перед выполнением процедуры Read или функция Еоln приобрела значение Тruе при пропуске начальных пробелов, знаков табуляции или меток конца строки, то переменной, что считывается, а не присваивается никакое значения.

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

Readln (Var f: Text; Var a1, …, an: anytype) — процедура, аналогичная процедуре Read, однако с той разницей, что следующий оператор считывания выполняться с начала строки, а символы, оставленные в предыдущей строке, игнорируются.Вызов процедуры Readln без списка параметров-переменных приводит просто к перемещению указателя файла на начало следующей строки.Таким образом оператор Readln (f, a, b) аналогичный сложенном оператору;

begin Read (f, a) Read (f, b) Readln (f) end; .

Write (Var f: Text; Var a1, …, an: anytype) — записывает в файл, который определяет f, одно или более значений из списка переменных.Тип anytype может быть символьным, строчным, целым, логическим или действительным.В процедуре Write допускается отформатировано вывода аналогично форматированном выводу на экран.В данном случае свободные знакоместа записываются в файл как пробелы.

Writeln (Var f: Text; Var a1, …, an: anytype) — процедура, аналогичная процедуре Write, но в отличие от нее после окончания записи значений переменных из списка в файл записывается метка конца строки и следующий оператор вывода осуществлять запись данных с нового строки.Вызов процедуры Writeln без списка параметров-переменных приводит к записи в файл пустой строки.

Следует отметить, что стандартные системные файлы (con, com1, lpt1 ш т.д.) системой Turbo Pascal интерпретируются как текстовые и к ним можно применять процедуры Readln и Writeln с тем же содержанием.

Например, процедуры Readln (Con) или Readln ждут нажатия клавиши ввода, процедура Writeln (Lst) выводит на печатающее устройство пустая строка.

функции

Eof (f: text): Boolean — аналогичная Eof для типизированных файлов.

Eoln (f: text): Boolean — функция приобретает значение Тruе, если указатель файла находится на метке конца строки или на метке конца файла, и False — в противном случае.

SeekEof (f: text): Boolean — функция, аналогичная функции Eof, но в отличие от нее игнорирует все пробелы, символы табуляции и конца строки.

SeekEoln (f: text): Boolean — функция, аналогичная функции Eoln, но в отличие от нее игнорирует все пробелы и символы табуляции.

Файлы без типа. Система Turbo Pascal предусматривает операции с файлами, которые не имеют типа.Эти файлы совместимы со всеми типами файлов и предназначены, как правило, для прямого доступа к файл в.

Описание бестиповых файла состоит из ключевого слова File (например Var f: File;).К файлов без типа можно применять все стандартные подпрограммы, кроме Read, Write и Flush.Считают, что элементами файлов без типа являются объекты длиной 128 байтов. При использовании процедуры Seek указатель файла передвигаться по элементам такой длины.Так, процедура Seek (f, 2) поместит указатель на третий элемент (байты с номерами 256..383).Операции чтения и записи происходят только порциями по 128 байтов. Это осуществляют процедуры BlockRead и BlockWrite.

BlockRead (Var f: File; Var v: anytype; n: Integer; Var m: Integer) — процедура считывает n блоков по 128 байт с бестиповых файла f.Результат помещается в область оперативной памяти, которую занимает переменная v (anytype — любой тип.).Необязательный параметр m показывает, сколько блоков было фактически считаны.Если m 6.2 методические указания

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

б) изучить стандартные процедуры и функции, которые обеспечивают основные операции с файлами прямого и последовательного доступа

в) усвоить правила работы с комбинированными типами данных: структура записей, описание записей в программе, доступ к отдельным полям записей, записи с вариантами, оператор присоединения;

г) разработать алгоритмы решения задач своего варианта, с аписавшы их в виде блок-схем.Файл должен состоять из некоторого количества отдельных записей, а не одного массива.

д) подготовить текстовый вариант программы и предварительных данных.Провести отладки программы, проверив все возможные ситуации.

6.3 контрольные вопросы

  1. Тип данных запись.
  2. Запись с вариантом.
  3. Файловый тип данных.
  4. Оператор присоединения.
  5. Операции с файлами прямого доступа (типизованимы).
  6. Операции с файлами последовательного доступа (текстовыми).
  7. Операции с бестиповых файлами.
  8. Особенности работы с файлами в программе.

Приложение А — Работа в среде Turbo (Borland) Pascal

Система программирования Turbo (Borland) Pascal является интегрированной средой, включающее экранный редактор; компилятор; редактор связей; отладчик. Интегрированная среда позволяет набирать тексты программ с использованием встроенного редактора текстов, компилировать их, выполнять, проводить отладку программ.

После успешного запуска системы появляется экранный редактор, имеет вид, приведенный на рисунке А.1.

Рисунок A.1 — Окно программы Turbo Pascal

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

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

Имя файла, откуда был прочитан текст программы (новому файлу предоставляется имя я NONAME00.PAS), располагается сверху окна посередине.

Сверху по краям расположены два специальных поля, используемые при работе с мышкой.Квадрат слева позволяет закрыть текущий файл, стрелка справа — развернуть на весь экран или минимизировать окно.

Слева от стрелки размещается цифра 1 — номер окна. Одновременно можно работать с несколькими программами, каждая из которых будет размещена в отдельном окне редактора.

Внизу слева два числа, записанные через «:», которые указывают текущую позицию курсора — номер строки и позицию в строке соответственно.

Кроме окна редактора, в Pascal используются также окна режима отладки, вывод результатов работы программы, справочной службы, стека, регистров.

Главное меню можно активизировать с помощью мышки или нажатие клавиши F10.Такая клал иша (или комбинация клавиш) называется горячей клавишей.

Главное меню включает в себя следующие пункты:

File — действия с файлами и выход из системы;

Edit — редактирование текста;

Search — поиск текстовой строки, процедуры, функции или места ошибки;

Run — выполнение программы;

Compile — компиляции программы с активного окна;

Debug — отладка программы;

Tools — запуск вспомогательных программ;

Options — установка параметров среды;

Window — работа с окнами;

Help — справочная система.

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

Пункт File содержит следующие подменю:

New — создает и открывает новое окно редактора с именем nonameAA.pas, где АА порядковый номер окна с именем noname;

Open — открывает для редактирования файл был создан и сохранен ранее;

Save — записывает содержимое активного окна редактора в файл; горячая клавиша F2;

Save as — записывает содержимое активного окна редактора в файл под другим именем;

Save all — записывает содержимое всех окон редактора в соответствующие файлы;

Change dir — изменяет текущий каталог пользователя;

Print — печатает текущий файл;

Print setup — настраивает среду для печати текущего файла;

Dos shell — осуществляет временный выход в MS DOS. Для возврата в редактор среды Pascal необходимо в командной строке набрать Exit;

Exit — завершает работу в среде Borland Pascal; горячая клавиша Alt-X.

Пункт Edit содержит подменю:

Undo — отменяет последнюю смену, то есть восстанавливает вид активного окна редактора, который предшествует последней смене; горячая клавиша Alt-Backspace;

Redo — отменяет действие последней команды Undo;

Cut — удаляет выделенный блок, помещая его при этом в буфер обмена Clipboard; горячая клавиша Shift-Del;

Copy — копирует выделенный блок в буфер обмена Clipboard; горячая клавиша Ctrl-Ins или Ctrl-C;

Paste — копирует содержимое буфера обмена Clipboard в активное окно редактора; горячая клавиша Shift-Ins или Ctrl-V;

Clear — удаляет выделенный блок, а не помещая его в буфер обмена Clipboard; горячая клавиша Ctrl-Del;

Show Clipboard — показывает содержимое буфера обмена.

Пункт Search включает в себя подменю:

Find — выполняет поиск текстовой строки в активном окне редактора;

Replace — ищет в активном окне заданный текстовый фрагмент и заменяет его на новый;

Search Again — повторяет поиск (и замену) заданного фрагмента во всем текста;

Go To Line Number — перемещает курсор в окне редактора на строку с заданным номером;

Show Last Compiler Error — выделяет строку текста с выявленной во время компиляции синтаксической ошибкой;

Find Error — выполняет поиск строки в тексте программы, вызвал ошибку выполнения;

Find Procedure — выполняет поиск в тексте программы заданной процедуры или функции.

Пункт Run содержит подменю:

Run — выполняет компиляцию, компоновку выполнения программы из файла редактора; горячая клавиша Ctrl-F9;

Step Over — осуществляет пошаговое выполнение главного тела программы, исключая пошаговое выполнение процедур и функций пользователя; горячая клавиша F8;

Trace Into — обеспечивает пошаговое выполнение программ, включая пошаговое выполнение всех процедур и функций пользователя; горячая клавиша F7;

Go To Cursor — осуществляет выполнение программы после компиляции и компоновки к первому оператора в строке с курсором; горячая клавиша F4;

Program Reset — прекращает отладки программы и удаляет программу, выполняется из памяти, закрывает все открытые в ней на данный момент файлы; горячая клавиша Ctrl-F2;

Parameters — позволяет задать строку параметров, которые передаются программе, выполняется.

Пункт Compile содержит подменю:

Compile — компилирует программу или модуль, находящийся в активном окне редактора; горячая клавиша Alt-F9;

Make — компилирует программу по перекомпиляцией только измененных модулей (TPU-файлов); горячая клавиша F9;

Build — полностью Перекомпилируйте программу, включая перекомпиляцию всех модулей;

Target — позволяет выбрать режим компиляции;

Primary File — задает имя исходного файла, то есть того файла, из которого необходимо начинать компиляцию и выполнение программы;

Clear Primary File — очищает имя, заданное опцией Primary File;

Information — показывает статистику программы.

Пункт Debug включает в себя:


Breakpoints — позволяет просматривать, корректировать и удалять контрольные точки;

Call Stack — активизирует окно программного стека, отображающий все вызовы подпрограмм; горячая клавиша Ctrl-F3;

Register — активизирует окно регистра, отображающий текущее состояние всех регистров процессора персонального компьютера;

Watch — активизирует окно отладки;

Output — активизирует окно вывода результата работы программы;

User Screen — активизирует окно вывода результата работы программы и разворачивает его на весь экран; горячая клавиша Alt-F5;

Evaluate / Modify — позволяет в процессе отладки просматривать или заменять значение любой переменной, а также найти значение любого выражения; горячая клавиша Ctrl-F4;

Add Watch — добавляет в окно наблюдения (отладки) переменные или выражения вместе с их текущими значениями, тем самым позволяя наблюдать за изменением этих значений; горячая клавиша Ctrl-F7;

Add Breakpoint — позволяет установить в текущей строке точку; горячая клавиша Ctrl-F8 позволяет как устанавливать, так и снимать точку.

Пункт Tools содержит подменю:

Messages — активизирует окно сообщений.С ередовище ищет и показывает файл с нужным фрагментом текста программы;

Go To Next — ищет фрагмент, заданный следующим сообщением в окне Messages; горячая клавиша Alt-F8;

Go To Previous — ищет фрагмент, соответствует предыдущему сообщению в окне Messages; горячая клавиша Alt-F7;

Grep — инициирует работу утилиты Grep; по умолчанию ищет во всех файлах с расширением.PAS текущего каталога имя переменной, процедуры или функции, на которой к моменту вызова опции стоял курсор; горячая клавиша Shift-F2.

Пункт Options включает в себя:

Compiler — задает параметры, с помощью которых можно управлять генерацией машинного кода программы;

Memory Sizes — регулирует размер памяти, которую занимает рабочая программа;

Linker — регулирует режим работы компоновщика;

Debugger — определяет отладчик, который используется и режим обновления экрана дисплея в процессе отладки;

Directories — определяет группы функциональных каталогов: XE & TPU directories указывает каталог, где будут располагаться готовы к работе .exe- и .tpu-файлы; Include directories содержит имена каталогов, в которых необходимо искать файлы, включаемых если таковые не найдены в текущем каталоге; Unit directories содержит каталоги, в которых будет вестись поиск .tpu файлов, если среда не оказывает их в текущем каталоге; Object directories указывает имена каталогов для поиска .obj-файлов, если таковые не найдены в текущем каталоге;

Environment — позволяет установить некоторые дополнительные опции окружения (цвет, работа с мышкой и т.д.);

Open — позволяет задать имя конфигурационного файла, в котором содержится информация о настройке среды;

Save — сохраняет текущее настройки среды в конфигурационном файле;

Save As — позволяет указывать имя каталога и файла, в котором среда будет сохранять свои настройки.

Пункт Window содержит подменю:

Tile — располагает окна так, чтобы каждое было видно на экране, выравнивая, по возможности, их размеры;

Cascade — располагает окна на экране каскадом;

Close All — закрывает все открытые окна;

Refresh Display — обновляет экран путем удаления следов программы, работала в режиме отладки,

Size / Move — позволяет перемещать активное окно по экрану или изменять его размеры; горячая клавиша Ctrl-F5;

Zoom — разворачивает окно на весь экран или возвращает ему предварительный вид; горячая клавиша F5;

Next — активизирует следующее окно; горячая клавиша F6;

Previous — активизирует предыдущее окно; горячая клавиша Shift-F6;

Close — закрывает активное окно; горячая клавиша Alt-F3;

List — выводит список всех открытых окон; горячая клавиша Alt-0.

Пункт Help содержит подменю:

Contents — позволяет просматривать содержимое справочной службы;

Index — выводит алфавитный список всех ссылок справочной службы; горячая клавиша Shift-F1;

Topic Search — выдает информацию о зарезервированное слово в пределах курсора; горячая клавиша Ctrl-F1;

Previous Topic — выводит предварительное справочное сообщение; горячая клавиша Alt-F1;

Using Help — дает разъяснения о том, как пользоваться справочной службой;

Files — позволяет установить нужный файл справочной службы;

Compiler Directives — выводит справку директив компилятора;

Procedures And Functions — содержит справку о стандартные процедуры и функции;

Reserved Words — содержит справку о зарезервированные слова;

Standard Units — содержит справку о стандартные модули;

Borland Pascal Language — содержит справку о языке Borland Pascal;

Error Messages — содержит справку сообщений об ошибках;

About — содержит информацию об авторских правах

Pascal | Лекция №1

Языки программирования. Принципы работы с языком Turbo Pascal. Структура программы. Примеры простейших программ

Содержание:

  1. Языки программирования
  2. Организация действий над данными
  3. Организация данных (типы и структура данных)
  4. Принципы работы с системойTurboPascal
  5. Структура программы
  6. Примеры простейших программ
  7. Контрольные вопросы

Языки программирования

Язык программирования – это способ записи программ, решение различных задач на ЭВМ в понятной для компьютера форме.

Процессор компьютера непосредственно понимает язык машинных команд.

  • в 50-е появляются первые средства автоматизации программирования — языки Автокоды (Ассемблеры). Появление языков типа Автокод-Ассемблер облегчило участь программистов:
    • переменные величины стали изображаться символическими именами;
    • числовые коды операций заменились на словесные (мнемонические) обозначения.

Язык программирования стал понятнее для человека, но при этом удалился от языка машинных команд. Чтобы компьютер мог исполнять программы на Автокоде, потребовался специальный переводчик – транслятор. Транслятор – системная программа переводящая текст программы на Автокоде в текст эквивалентной программы на языке машинных команд. Для языков этого уровня принято название Ассемблеры – машинно-ориентированные языки, т.е. они настроены на структуру машинных команд конкретного компьютера. Разные компьютеры с разными типами процессоров имею разный Ассемблер.

  • Языки программирования высокого уровня (ЯПВУ) являются машинно-независимыми языками. Одна и та же программа на таком языке может быть выполнена на ЭВМ разных типов, оснащенных соответствующим транслятором. Форма записи программ на ЯПВУ по сравнению с Автокодом еще ближе к традиционной математической форме, к естественному языку. Первые популярные языки высокого уровня, появившиеся в 1950-х гг., были Кобол (для программирования экономических задач), Фортран и Алгол (научно-технические расчеты математического характера). Для первых ЯПВУ предметная ориентация языков была характерной чертой.

Большое количество языков программирования появилось в 1960 — 1970-х гг. А за всю историю ЭВМ их было создано более тысячи. Но распространились, выдержали испытание временем немногие. Вот некоторые из них: Бейсик (сейчас — QBasic), PL/1

Значительное событие в истории языков программирования стало создание в 1971 году языка программирования Pascal (швейцарский профессор Н.Вирт). Этот язык разрабатывался как учебный язык структурного программирования.

Реализовать тот или иной язык программирования на ЭВМ — это значит создать транслятор с этого языка для данной ЭВМ. Существует два принципиально различных метода трансляции: компиляция и интерпретация. Для объяснения их различия можно предложить следующую аналогию: лектор должен выступить перед аудиторией на незнакомом ей языке. Перевод можно организовать двумя способами:

  • полный предварительный перевод;
  • синхронный перевод.

Компилятор – аналог полного предварительного перевода.

Интерпретатор – аналог синхронного перевода.

При компиляции в память ЭВМ загружается программа-компилятор. Она воспринимает текст программы на ЯПВУ как исходную информацию. После завершения компиляции получается программа на языке машинных команд. Затем в памяти остается только программа на ЯМК, которая выполняется, и получаются требуемые результаты.

Интерпретатор в течение всего времени работы программы находится в ОЗУ, где помещается и программа на ЯПВУ. Интерпретатор в последовательности выполнения алгоритма «читает» очередной оператор программы, переводит его в команды и тут же выполняет эти команды. Затем переходит к переводу и выполнению следующего оператора. При этом результаты предыдущих переводов в памяти не сохраняются. При повторном выполнении одной и той же команды она снова будет транслироваться.

При компиляции исполнение программы разбивается на два этапа: трансляцию и выполнение. При интерпретации, поскольку трансляция и выполнение совмещены, программа на ЭВМ проходит в один этап. Однако, откомпилированная программа выполняется быстрее, чем интерпретируемая. Поэтому использование компиляторов удобнее для больших программ, требующих большого счета. Программы на Паскале, Си, Фортране всегда компилируются. Бейсик чаще всего реализован через интерпретатор.

Во всяком языке программирования определены способы организации данных и способы организации действий над данными:

Организация действий над данными:

  • ввод и вывод данных, работа с файлами
  • обработка данных

а) операции и выражения

в) организация и использования подпрограмм

Организация данных (типы и структура данных)

Кроме того, существует понятие «элементы языка», включающее в себя алфавит, лексемы, и др. изобразительные средства языка программирования. Несмотря на разнообразие указанных языков, их изучение происходит приблизительно по одной схеме. Это связано с общностью структуры различных языков программирования высокого уровня.

Элементы языка:

  • алфавит – совокупность символов, отображаемых на устройствах печати и экранах и/или вводимых с клавиатуры. Обычно это набор символов Latin-1, с исключением управляющих символов. Иногда в это множество включаются неотображаемые символы, с указанием правил их записи (комбинирование в лексемы);
  • лексемы – совокупность правил образования цепочек символов, образующих идентификаторы (переменные и метки), операторы, операции и др. лексические компоненты языка. Сюда же включаются зарезервированные (запрещенные, ключевые) слова ЯП, предназначенные для обозначения операторов, встроенных функций и пр.
  • синтаксис – совокупность правил образования языковых конструкций, или предложений ЯП – блоков, процедур, составных операторов, условных операторов, операторов цикла и пр. Особенностью синтаксиса является принцип вложенности (рекурсивность) правил построения конструкций. Это значит, что элемент синтаксиса языка в своем определении прямо или косвенно в одной из его частей содержит сам себя. Например, в определении оператора цикла телом цикла является оператор, частным случаем которого является все тот же оператор цикла;
  • семантика (оформление программ) – смысловое содержание конструкций, предложений языка. Семантический анализ – это проверка смысловой правильности конструкций. Например, если мы в выражении используем переменную, то она должна быть определена ранее по тексту программы, а из этого определения может быть получен ее тип. Исходя из типа переменной, можно говорить о допустимости операций с данной переменной. Семантические ошибки возникают при недопустимом использовании операций, массивов, функций, операторов и пр.

Синтаксис – правило написания слов составления предложений.

Семантика – смысловое содержание языковой конструкции.

Для описания синтаксиса ЯП тоже нужен какой-то язык. В этом случае речь идет о метаязыке («надъязыке»), предназначенном для описания др. языков. Наиболее распространенными метаязыками в литературе по программированию являются:

  • металингвистические формулы Бекуса-Наура (язык БНФ);
  • синтаксические диаграммы.

В БНФ всякое синтаксическое понятие описывается в виде формулы, состоящая из правой и левой части, соединенный знаком ::=, смысл которого эквивалентен словам «по определению есть». Слева от знака ::= записывается имя определяемого понятия (метапеременная), которое заключается в угловые скобки , а в правой части записывается формула или диаграмма, определяющая все множество значений, которые может принимать метапеременная (формула, определение).

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

Пример: определить понятие «двоичная цифра».

::= 0|1 Значок | эквивалентен слову «или».

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

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

Пример: определить понятие «двоичный код» как непустую последовательность двоичных цифр.

Определение, в котором некоторое понятие определяется само через себя, называется рекурсивным. Рекурсивные определения характерны для БНФ.

Очевидно, что диаграмма более наглядна, чем БНФ.

Принципы работы с системой Turbo Pascal

Название Turbo Pascal обычно воспринимается в двух смыслах:

  • как диалект языка Pascal, представляющий собой расширение стандартного Pascal;
  • как система программирования Turbo Pascal, являющаяся совокупностью системных программ, предназначенных для создания, отладки и выполнения Паскаль-программы.

Программа на Turbo Pascal проходит три этапа обработки:

  • создание текста программы;
  • компиляция;
  • исполнение откомпилированной программы.

В соответствии с этими функциями Турбо-система включает в себя три главные компоненты:

  • редактор текстов;
  • компилятор;
  • исполнительную систему.

С помощью встроенного в систему Turbo Pascal текстового редактора можно формировать любые тексты, не только программы на Паскале. Обращение к текстовому редактору происходит по команде EDIT. Текст программы можно сохранить в виде файла с именем следующего формата: .pas, где pas – это стандартное расширение имени файла, задается пользователем.

Компилятор переводит программы с языка Pascal на язык машинных команд. Работа компилятора запускается командой COMPILE. При обнаружении ошибки компьютер выдает сообщение о ней пользователю и прекращает работу. Откомпилированный файл можно сохранить отдельно от текста начальной программы (расширение будет .exe )

Запуск на выполнение откомпилированного файла выполняется с помощью команды RUN. При этом исполнение программы остается под контролем Турбо-системы.

Структура программы

Исходная программа, как правило, состоит из следующих частей:

  • раздел идентификации – область, содержащая наименование программы, а также дополнительную информацию для программистов и/или пользователей;
  • раздел связи – фрагмент текста, описывающий внешние переменные, передаваемые вызывающей программой (если такая имеется), т.е. ту часть исходных данных, которая обязательно поступает на вход программы при ее запуске. Эти переменные часто называют параметрами программы;
  • раздел оборудования (среда) – описание типа ЭВМ, процессора, требований к оперативной и внешней памяти, существенных с точки зрения программы. Дело в том, что даже среди семейства однотипных ЭВМ могут существовать отличия в наборе команд, средств программирования ввода-вывода, кодированного представления данных, в связи с чем описание среды, приводимое в данном разделе оказывается необходимым транслятору с языка с точки зрения оптимизации выполнения или оценки возможности создания рабочей программы;
  • раздел данных – идентификация (объявление, описание) переменных, используемых в программе, и их типов. Понятие типа позволяет осуществлять проверку данных на совместимость в операциях еще на этапе трансляции программы и отвергнуть недопустимые преобразования;
  • раздел процедур – собственно программная часть, содержащая описание процессов обработки данных. Элементами процедуры являются операторы и стандартные функции, входящие в состав соответствующего языка программирования.

По определению стандартного Pascal программа состоит из:

  • заголовка программы
  • тела программы (блока), за которым следует точка – признак конца программы.

В свою очередь, блок содержит:

  • раздел описаний;
  • раздел операторов.

Program ;

Label ;

Const ;

Type ;

Var ;

Procedure (Function) ;

Begin

End.

Раздел операторов имеется в любой программе является основным. Предшествующие разделы носят характер описаний и не все обязательно присутствуют в каждой программе.

В Turbo Pascal, в отличие от стандарта, возможно следующее:

  • отсутствие заголовка программы;
  • разделы Const, Type, Var, Label могут следовать друг за другом в любом порядке и встречаться в разделе описаний сколько угодно раз.

Примеры простейших программ

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

  1. Что такое язык программирования?
  2. Что такое транслятор?
  3. Перечислите методы трансляции.
  4. Что такое компиляция?
  5. Что такое интерпретация?
  6. Из каких частей состоит программа?
  7. Приведите структуру программы на языке Pascal.

Лекции по программированию на паскале

Real (занимает 6 байт, диапазон от 2.9E-39 до 1.7E+38 по модулю, точность 11-12 значащих цифр) основной тип

Процедура вывода Write

Как видите, один оператор Write может выводить сразу несколько элементов. Элементы нужно отделять друг от друга запятыми. В этом примере — три элемента:
1)текст ‘Это’
2)выражение 4+4
3)текст ‘кошек’ .
Все элементы выводятся в одну строку вплотную друг к другу. Если вся информация, выводимая оператором Write, не умещается в одну строку, то не уместившаяся часть автоматически выводится с начала следующей строки.
Самое трудное для новичка — не путать запятые и кавычки, находить элементы и отличать текстовые элементы от чисел и выражений. Совет : сначала найдите внутри скобок запятые. Теперь, чтобы отличить текстовые элементы от прочих, обратим внимание, что они заключены в кавычки.

Как видите, результат не зависит от количества пробелов (пропусков, пустых мест) снаружи от текстовых элементов, взятых в кавычки. Но пробелы, встретившиеся внутри кавычек, отображаются на экране:

Лекция по паскалю

Алгоритмический язык Паскаль

Программа на Р записывается в виде последовательности символов:

· заглавные и прописные латинские буквы;

Арифметические операции правила их записи.

Знаки операций: *, /, -, +, div, mod

(a div b) частное от деления а на b (a mod b) остаток, после деления а на b.

a div b= a mod b =a-((a div b)*b)

17 div 3 = 5 17 mod 3 = 2 8 div 2 = 4 8 mod 2 = 0 1 div 5 = 0 1 mod 5 = 1

При выполнении арифметических операций соблюдаются следующие правила:

1. Все знаки проставляются a b a*b;

2. Два знака не могут следовать один за другим n/-2 n/(-2);

3. Соблюдается иерархия выполнения арифметических операций: стандартные функции;div, mod; *, /; +, -;

4. Изменить иерархию можно только с помощью скобок.

Переменные на языке Паскаль задаются своими именами (63 символа).

Shortint — короткие целые числа (1 байт). (-128 127)

Longint — удвоенные целые числа (4 байта). (-2 31 2 31 -1)

Integer — обычные целые числа (2 байта). (-3276832767)

Word — целые положительные числа (2 байта). (065535)

Byte — целые короткие положительные числа (1 байт). (0255)

Верхнее граничное значение целочисленных переменных задано в Паскале как константа и имеет соответствующее имя: Maxint = 32767 (2 15 -1) Maxlongint = 2 31 -1

Boolean — логические переменные (1 байт) могут принимать 2 значения:

Логические переменные могут использоваться только в логических выражениях. Над ними можно выполнять только 2 операции:

Для идентификаторов имеет место:

trunc (x) целая часть числа,дробная остается без округлен. (цел)

trunc (3.7) = 3 trunc (3.1) = 3 trunc (-3.7) = -3

frag (x) дробная часть числа (вещ.)

int (x) ближайшее наименьшее целое число (цел.)

int (3.4) = 3 int (3.7) = 3 int (-3.4) = -4

round (x) ближайшее целое число (матем округ-е) (цел.)

round (3.14) = 3 round (3.74) = 4 round (-3.14) = -3

random (x) генератор случайных чисел (вещ.)

от 0 до x; если x – отсутствует, диапазон чисел 01

odd (x) возвращает TRUE, если x — число нечетное (лог.)

Аргументом стандартной функции может быть переменная, константа, выражение, стоящее справа от имени в скобках. Воспринимается в радианах для тригонометрических функции.

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

Программа, написанная на алгоритмическом языке, переводится на язык машинных команд:

· program – всегда первый;

— присваивается составителем программы (строится по правилам переменных).

Описательная часть программы.

· Все переменные, используемые в программе должны быть описаны.

Описание начинается со служебного слова var .

i, n: integer; x,y,z: real;

Список переменных от типа отделяется “:”, одно описание от другого – “;”, список переменных – “,”.

Метки в программе описываются с помощью служебного слова: label.

Пользовательский тип данных: type.

Исполнительная часть программы.

Отдельные инструкции, входящие в программу, называются операторами. Операторы отделяются один от другого – “;”.

Бывают трех типов:

Паскаль не допускает смешенных выражений. Слева – вещественное, справа — целое выражение (допустимо).

Если в выражении есть хотя бы одна вещественная переменная, все выражение будет вещественным.

— имя оператора ввода;

— список переменных, разделенных запятыми.

— имя оператора вывода;

— список переменных вывода, разделенных запятыми.

READLN (a, b, c) — после вода значений a, b и c курсор перемещается на следующую строку.

WRITELN — без списка вывода можно использовать для пропуска строк при оформлении вывода результатов.

В операторе WRITE можно использовать формат вывода значений переменных.

Writeln ( ’_ a = ’ , a:8:3, ’_ b = ’, b:4);

при a = 341.154, b = 2

_ a = _ 341.154 _ b = _ 144

при a = 1.3, b = 144

_ a = _ _ _ 1.300 _ b = _ 144

сlrscr — оператор гашения экрана;

var a, b: integer;

begin writeln (’ введите a, b ’);

writeln (’ x = ’, x:8:3, ’_ _ ’, ’y = ’, y:8:3)

Ключевые слова горят ярче, чем весь текст прогаммы.

Операторы условия и перехода.

Строки программы на Паскале не нумеруются. Отдельные строки в программе могут иметь метки, к которым можно переходить.

Метки должны быть описаны с помощью ключевого слова

в описательной части программы.

N1, N2, … — идентификатор или целое число (положительное) (09999).

Оператор: GO TO N; -передает управление строке с меткой N.

Оператор: IF THEN P1 [ ELSE P2 ]; если то иначе (не обязательная часть)

P1, P2 — простой или составной операторы.

По этому оператору:

если — «истинно», то выполняется P1 (true);

— » ложно», то выполняется P2 (false).

Если ELSE — отсутствует и — «ложно», то управление передается следующему оператору.

Распечатать наибольшее из двух чисел:

IF a>b THEN write (a) ELSE write (b).

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

If x>=0 then y:= sin(x) else y:= — sin(x);

Логические выражения могут быть сложными, составленными с помощью логических операций: AND (и) OR (или) NOT (не).

IF (a>b) and (a>c) THEN writeln (’a = ’, a)

IF ( m div n)>n THEN

ELSE — всегда относится к ближайшему оператору IF.

Если n>0 и (m div n)>n будет выполнено m: = m-n.

Если n>0, но (m div n)n будет выполнено m: = m + n.

Если n0 — переход к следующему оператору.

writeln (’введите x’); readln (x);

if x>90 then writeln (’функция не определена’)

где P1, P2, …PN — любые операторы.

По этому оператору выполняется «тело цикла», а затем проверяется , если оно не выполнилось, цикл повторяется. И так до тех пор, пока не будет выполнено.

Необходимо помнить: если сразу выполнилось, цикл будет пройден один раз.

Вычислить: y = a sin (x ) , x = , =0.2

y: = a *sin (x); writeln (y, x); x: = x + 0.2;

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

Оператор цикла с предусловием.

Где P — простой или составной оператор.

По этому оператору проверяется и, если оно выполняется, то выполняется — P, после чего опять проверяется и т. д.

Итак, P — выполняется до тех пор, пока выполняется .

Если условие ни разу не выполнилось, P — игнорируется, управление передается следующему оператору.

Вычислить: y = sin x, x, x, — ввести с клавиатуры.

Подсчитать среднее положительное и среднее отрицательное значение функции.

y, x, x k, d x: real;

n, k: integer; SP, n — среднее и количество положительных значений.

SP, S0: real; S0, k — среднее и количество отрицательных значений.

writeln (‘ введите x — начальное, x — конечное, d x — шаг’);

Язык паскаль онлайн

Методические указания часть 1 | Язык программирования «Turbo Pascal»

    Browse: Home / Лекции Паскаль / Методические указания часть 1 | Язык программирования «Turbo Pascal»

Программирования и алгоритмические языки методические указания часть 1 Язык программирования «Turbo Pascal»

ВВЕДЕНИЕ

Эти методические указания предназначены для студентов первого курса по направлению подготовки «Электроника» (0908) по специальности «Электронные системы» (6.090803) дневной формы обучения и служат для помощи студентам во время подготовки и выполнения лабораторных работ по дисциплинам «Программирование и алгоритмические языки» в первом семестре при изучении языка программирования «Turbo Pascal».

Целью проведения лабораторных работ является овладение алгоритмического языка программирования «Turbo Pascal», приобретение навыков в разработке алгоритмов методом по шаговой детализации на основе базовых логических структур, изучения и освоения основных методов и приемов программирования, ознакомление с процессом прохождения заданий во время их решения на ЭВМ, получение практических навыков работы за компьютером по отладки и тестированию программ.

Цикл лабораторных работ выполняется в течение семестра и охватывает основные темы курса «Программирование и алгоритмические языки» первого семестра. Теоретической основой для выполнения лабораторных работ является курс лекций, теоретические сведения в начале каждой лабораторной работы данных методических указаний, практические занятия и учебная литература.

Язык «Pascal» специально разрабатывалась Н. Виртом как учебная.Именно ее целесообразно использовать как первый язык программирования, чтобы научиться программированию.Овладев этот язык, в дальнейшем без особого труда можно самостоятельно перейти на любой другой язык программирования высокого уровня.Несмотря на изначальное предназначение языка «Pascal» как учебной, ее дальнейшая реализация фирмой Borland Inc в виде языка «Turbo Pascal» и «Object Pascal» позволила подняться на высшую ступень наравне с ведущими мощными языками программирования такими, как «С», «Java «и др. Современные реализации этого языка дают возможность проектировать различные приложения, от решения небольших задач численного характера до разработки сложных программных систем.

Язык отразила важнейшие концепции технологии разработки программ: развитая система типов данных, ориентация на принципы структурного программирования, поддержка процесса по шаговой разработки.

Описания лабораторных работ выполнены по единой структуре и включают в себя цель работы, краткие теоретические сведения, методические указания для подготовки к работе и ее выполнения, индивидуальные задания к лабораторной работе, контрольные вопросы для подготовки к защите работы.Тематика лабораторных работ охватывает практически все основные типы данных и основные операторы языка «Turbo Pascal».

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


1) Название лабораторной работы.

2) Тема лабораторной работы.

3) Краткие теоретические сведения.

4) Методические указания.

5) Задания для лабораторной работы своего варианта с соответствующими указаниями.

6) Блок-схемы программ.

После выполнения лабораторной работы для ее защиты необходимо составить отчет, который в себя включает: пункты 1-6 плана работы, текст программы, результаты выполнения указаний и тестов по программе, вывод по работе.

Лабораторная работа защищается на лабораторном занятии или на консультации (по разрешению преподавателя).Студент, не защитил две предыдущие работы не допускается к следующей. Также к лабораторной работе не допускается студент, который не имеет плана проведения текущей лабораторной работы.

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

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

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

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

1 Лабораторная работа №1 .ОПЕРАТОРЫ условного перехода

Цель работы: получение навыков по составлению простых программ с использованием условных операторов; знакомство с задачами, для решения которых требуются условные операторы; получение навыков по использованию простых типов данных, операторов ввода — вывода.Получение навыков по составлению простейших блок — схем.

1.1 теоретические сведения

типы данных

Таблица 1.1 — Типы данных языка программирования Turbo Pascal

типы данных простые действительны Real 2.9e-39..1.7e38
Single 1.5e-45..3.4e38
Double 5.0e-324..1.7e308
Extended 3.4e-4932..1.1e4932
Comp -9.2e18..9.2e18
ординальные перечисленные
диапазонные
логический Boolean False, True
цели Shortint -128..127
Integer -32768..32767
Longint -2147483648 .. 2147483647
Byte 0..255
Word 0..65535
символьный Char
сложенные массив Array
файл File
множество Set
строка String
запись Record
указательные

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

Для всех ординальных и действительных типов указанные операции отношения = (равно), <> (не равно), (больше),> = (не менее).Результат отношение определяется как отношение значений ординальных номеров или значений операндов.

В таблице 1.2 описаны стандартные операции над данными простых типов.Принятые обозначения: И Ипteger (целый) B Вооlеап (логический) R Rеаl (действительный).

Таблица 1.2 — Операции над данными простых типов

операция содержание Тин операндов Тип результата
+ плюс И, R И, R
минус И, R И, R
* умножения И, R И, R
DIV целочисленных деления И И
МОD Остаток от деления И И
/ Диленные И, R R
OR арифметическое ИЛИ И И
логическое ИЛИ В В
AND арифметическое И И И
логическое И В В
NOT арифметическое НЕТ И И
логическое НЕТ В В
XOR Арифметическое «раздельное» ИЛИ И И
Логическое «раздельное» ИЛИ B В
SHL Арифметический сдвиг влево I И
SHR Арифметический сдвиг вправо И И

Если в операциях +, -, * хотя бы один из операндов имеет тип Real, то результат тоже будет тип Real.

Для всех ординальных типов обозначенные функции Succ, Pred и Ord:

Ord (x) — ординальное номер x;

Succ (x) — следующее за x ординальное значения;

Pred (x) — ординальное значения, предшествует х.

Применение функции Succ до максимального значения или функции Pred до минимального значения любого ординальное типа приводит к неопределенному результату.

Целый тип (Shortint, Integer, Longint, Byte, Word).Целый результат дают следующие функции:

Abs (x) — модуль целого значения x;

Addr (x) — адрес первого байта переменной x;

Hi (x) — значение старшего байта целого значения x;

Lo (х) — значение младшего байта целого значения x;

Round (x) — закругленное значение действительного значения x;

SizeOf (x) — размер в байтах памяти, необходимой для хранения значения x или типа х;

Sqr (x) — квадрат целого значения х;

Swap (x) — переставляет старший и младший байты целого значения x;

Trunc (х) — целая часть действительного значения х.

Символьный тип (Char).Данные символьного типа принимают значения упорядоченного набора символов, изображенных в конкретном ПК. Значение символьного типа записываются одним символом, ставится в одинарные кавычки, например ‘A’.В ПК преимущественное применение имеет кодирования символов в системе АSCII (American Standard Code for Information Interchange — американский стандартный код для обмена информацией).

Для символьных данных обозначенные следующие функции:

Chr (х) — символ АSCII с кодом х — байтового типа,)

Ord (х) — АSCII — код символа х;

UpCase (х) — переводит малую латинскую букву х в большую, остальные символы не меняется.

Логический тип (Boolean).Данные логического типа могут принимать значения True и False.Считают, что значений False логический результат дают следующие функции:

КеуРrеssed — возвращает True, если была нажму и любая клавиша, в противном случае — False;

Odd (х) — возвращает True, если целое число х — нечетное и False, если х — четное.

Действительный тип (Real, Single, Double, Extended, Comp).Действительный результат дают следующие функции:

Abs (х) — модуль действительного значения х:

ArcTan (x) — главное значение арктангенса в радианах;

Cos (x) — косинус х — в радианах)

Exp (x) -значение экспоненциальной функции;

Frac (x) — дробная часть x;

Int (х) — целая часть действительного значения x;

Ln (x) — значение натурального логарифма х;

Sin (x) — синус х — в радианах)

Sqr (x) — квадрат действительного значения х;

Sqrt (х) — квадратный корень из х.

Операторы. Оператор присваивания состоит из левой и правой частей, разделенных знаком присвоение «=». В левой части находится имя переменной или функции, а в правой — выражение, имя другой переменной или имя функции.Действие оператора присваивания заключается в вычислении выражения или функции и замены текущего значения переменной в левой части на вычисленное значение выражения в правой части.Тип переменной, стоит слева, и тип правой части должны быть одинаковыми. Существует единственное исключение: переменной действительного типа можно присваивать целочисленных значения. Присваивать можно данные любых типов, кроме файловых.

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

1) операция отрицания NOT;

2) мультипликативные операции *, /, DIV, MOD, AND, SHL, SHR;

3) аддитивные операции +, -, OR, XOR;

4) операции отношения =, <> <>, =, IN.

Оператор перехода состоит из ключевого слова Goto, за которым следует метка.Выполнение этого оператора приводит к тому, что управление выполнением программы передается на оператор, перед которым имеется соответствующая метка. При использовании оператора перехода должны выполняться следующие правила:

1) областью действия метки тот блок, в котором она описана и переход возможен только внутри этого блока;

2) запрещается переход внутрь структурного оператора.

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

Операторы ввода-вывода Read, Readln, Write, Writeln позволяют работать с различными физическими устройствами: клавиатурой, дисплеем, принтером, дисководами и др.Рассмотрим организацию ввода с клавиатуры и вывод на дисплей.

Оператор ввода Read предназначен для предоставления необходимых значений данным программы.Формат оператора: Read (а1, а2, …, an), где а1, а2, …, an — переменные допустимых типов.Значение а1, …, аn при вводе отделяются пробелом, введение завершаются нажатием клавиши Enter (возврат каретки или клавиша ввода).Количество вводимых значений и их типы должны соответствовать количеству и типам переменных в операторе Read.В противном случае возникает ошибка ввода-вывода.Например, во время выполнения программы

Var i: integer;

begin

Read (c, i) end.

Правильным является введение: А 1234.

Оператор ввода Readln аналогичный оператору Read, однако следующий оператор ввода-вывода будет вводить или выводить данные с новой строки.

Оператор вывода Write служит для вывода значений переменных, выражений и строк символов.Формат оператора: Write (а1, а2, …, аn), где а1, …, an — переменные допустимых типов, выражения или строки.Строка, когда в иводиться, берется в одинарные кавычки.

Можно осуществлять также отформатировано вывода данных. Для этого после имени переменной через двоеточие ставится число — количество знакомест на дисплее, которые выделяются для вывода значения данной переменной.Например, во время выполнения программы

Var i: Integer;

begin

Write (i: 6, i + i: 6, s: 10) end.

результат будет выглядеть: _ _1234_ _2468_ _ _ _Формат.

Если выводится переменная или выражение, имеющие тип Real, то можно указать общее количество знакомест и количество знакомест для вывода десятичной части значения переменной или выражения.Например,

Write (-Pi: 10: 5,29 / 3: 7: 4) выдает .Результат: _ _-3.14159_9.6667.

Оператор вывода Writeln аналогичный оператору Write, однако следующий оператор ввода-вывода будет вводить или выводить данные с новой строки.

Составной оператор (операторные скобки) используется тогда, когда правила языка предусматривают только один оператор, а программисту надо выполнить последовательность операторов.Выполнение составного оператора заключается в последовательном выполнении всех включенных в него операторов. Составленному оператора входят ключевое слово begin, последовательность операторов и ключевое слово end.Пара слов begin и end называется операторных скобками.После begin и перед end точку с запятой можно не ставить.

Условный оператор служит для выполнения или невыполнения некоторого оператора в зависимости от истинности тех или иных условий.Условный оператор состоит из ключевого слова If, за которым следует выражение логического типа, ключевого слова then и оператора.По оператором может идти ключевое слово else и новый оператор.

Выполнение условного оператора заключается в вычислении логического выражения. Если его значение True, то выполняется оператор, стоящий за словом then.Если значение выражения-условия False и условный оператор не содержит слова else, то его выполнение завершается.Если есть слово else, то выполняется оператор, стоящий после него.

Общие виды условного оператора:

If then или If then ;

If else else ;

Первая форма называется сокращенной (неполной), вторая — полной форме условного оператора. Точка с запятой перед else не ставится.

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

Таким образом, конструкция следующего вида:

If then If then else ;

If then

begin If then else end.

Примеры сокращенной и полной форм условного оператора:

If x> y then z = x;

If x> y then Write ( ‘X больше Y’)

else begin z = y; Write ( ‘X не превышает Y’) end;

Оператор выбора предназначен для выполнения одного из нескольких возможных операторов.Он состоит: из ключевого слова Case, за которым следует селекторная выражение; ключевого слова of; последовательности операторов, каждому из которых предшествует метка (или список меток, или некоторый диапазон значений меток), которая отделена от оператора двоеточием (:) ключевого слова end.Как и условный оператор, оператор выбора может содержать ключевое слово else, которое должно стоять последним перед end.

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

Общий вид оператора выбора;

Case of

Метки и значение выражения-селектора должны быть одного и того же ординальное типа. В списке меток они отделяются друг от друга запятой. Каждая метка должна быть уникальной в списках меток, то есть встречаться только один раз.Метки оператора выбора не описываются в разделе Label и на них нельзя переходить оператором Goto.

Var letter: Char;

begin

readln (letter)

Case UpCase (letter) of

A, ‘E’, ‘I’, ‘J’, ‘O’, ‘U’, ‘Y’: Write ( ‘Латинская громкая’);

‘B’ .. ‘D ‘,’ F ‘..’H ‘,’ K ‘..’N ‘,’ P ‘..’T ‘,’ V ‘..’X ‘,’ Z ‘: Write (‘ Латинская согласная ‘)

else Write ( ‘Символ не является латинской буквой’)

end end.

2 Лабораторная работа №2.Оператор цикла

Цель работы: получение навыков по использованию операторов циклов; программирования вычислительных процессов с известным числом повторений; разработка и программирование алгоритмов итерационной циклической структуры.

2.1 теоретические сведения

Операторы повторения предназначены для организации циклов.Язык Паскаль содержит три оператора повторения: For, While, Repeat.

Оператор цикла с параметром состоит из ключевого слова For, за которым следуют переменная цикла; знак присвоения; выражение, определяющее начальное значение переменной цикла; ключевое слово to или downto; выражение, определяющее конечное значение переменной цикла; ключевое слово do, оператор, выполняется в цикле (простой или составной).Общий вид оператора цикла с параметром:

For = to do ;

For = Downto Do ;

Переменная цикла, начальный и конечный выражения должны быть одного и того же ординальное типа. Во время выполнения переменная цикла приобретает последовательных значений данного ординальное типа в порядке их увеличения (если есть слово to) или уменьшение (если есть слово downto).Количество исполнений тела цикла вычисляется для выполнения операторов и равна — + 1 (если есть слово to) или — + 1 (если есть слово downto ).Если в цикле со словом to (Downto) начальный выражение больше (меньше) от конечного, то тело цикла не выполняется ни разу.Внутри тела цикла не следует заменять значение переменной цикла, хотя такое изменение не фиксируется как ошибка и не влияет на количество исполнений тела цикла. После окончания работы оператора цикла For значение переменной цикла равна конечному значению.Если тело цикла не исполнилось, то значение переменной не определено.

Var c: Char;

bgin For c = ‘z’ downto ‘a’ do Writeln (c) end.

В результате будут выведены малые буквы латинского алфавита в обратном порядке.

Блок-схема оператора For изображена на рисунке 1.4.

Оператор цикла с предусловием состоит из ключевого слова While, за которым следуют выражение логического типа, ключевое слово и исполняемый в цикле оператор (простой или составной).Выражение задает условие продолжения выполнения цикла.

Общий вид оператора цикла с предусловием:

While do ;

Выполнение этого цикла осуществляется следующим образом. Сначала вычисляется значение логического выражения.Если это значение False, то тело цикла не выполняется; если значение True, то тело цикла выполняется, после чего снова вычисляется выражение.Чтобы предотвратить «зацикливания», следует предусмотреть изменение значения выражения внутри тела цикла.

Рисунок 2.1 — Блок — схема оператора For

Например, следующая программа вычисляет сумму

Var s, p: Real;

begin

while p until ;

Выполнение этого цикла происходит так. Сначала выполняется тело цикла, а затем определяется значение логического выражения.Если значение Тruе, то выполнение цикла прекращается; если значение False, то снова происходит выполнение тела цикла, затем снова вычисляется выражение.Если в теле цикла необходимо выполнить несколько операторов, то операторные скобки begin и end можно опускать, их роль играют слова Repeat и until.

Например, программа находит ту же сумму, что и в предыдущем примере:

Var s, p: Real;

begin

s: = 0; г. = 0.1; Repeat s = s + sиn (г); р: = р + 0.1 until р> 2; witeln (s) end.

Блок-схемы операторов циклов с предусловием и после условием изображены на рисунке 2.2.

Рисунок 2.2 — Блок-схемы операторов циклов while, repeat

Пример решения лабораторного задачи:

2.2 методические указания

а) изучить возможности языка программирования для реализации вычислительных процессов циклической структуры с известным числом повторений в цикле и когда число повторений неизвестно;

б) разработать алгоритмы решения задач своего варианта, записав их в виде блок-схем;

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

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

2.3 контрольные вопросы

  1. Оператор цикла с параметром.
  2. Блок-схема оператора цикла с параметром.
  3. Оператор цикла с предусловием.
  4. Блок-схема оператора цикла с предусловием.
  5. Оператор цикла с постусловием.
  6. Блок-схема оператора цикла с постусловием.

3 Лабораторная работа №3.РАБОТА С массив чисел

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

3.1 теоретические сведения

Перечислен тип является ординальное типу, что создается программистом. (Ординальнисть — свойство типа.Ординальное является тип с ограниченным количеством констант.Каждая константа имеет свой порядковый номер. К ординальных относятся цели, символьный, логический, перечислен, диапазонный типы) перечислен тип задается перечислением всех своих значений, которые являются идентификаторами, причем каждое значение может принадлежать только одному перечисленному типа.Ординальное номер первой константы есть 0, а следующих 1,2 … В отличие от данных других ординальных типов, данные перечисленного типа не могут быть непосредственно введены или выведены, их можно присваивать, сравнивать, принимать следующее, предыдущее значение, определять ординальное номер.

Приведем примеры описания данных перечисленного типа:

Type month = (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec)

s: (CPM, MSXDOS_2_0, PCDOC, UNIX)

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

Приведем примеры описания данных диапазонного типа:

Type spring = mar..may;

Var sm: spring;

В данном случае считают, что перечисленный тип, содержащий mar и may, уже описанный ранее.

Масивов тип является составным или структурным типом.Массив состоит из фиксированного числа компонент, каждая из которых имеет один и тот же тип.Компоненты массива называются его элементами. Элементы массива могут иметь тип и тип, введенный пользователем. Тип элементов массива называется базовым. Элементы массива размещены упорядоченно, каждый имеет свой номер, который называется индексом. Доступ к элементам массива осуществляется путем указания порядкового номера (индексации). Индексом может быть любое выражение ординальное типа. Тип индекса определяет границы изменения значений индекса, количество элементов в массиве.

Описание одномерного масивов типа состоит из ключевого слова array, по которому в квадратных скобках записано тип индекса, ключевого слова of и описание типа элементов.

Общий вид описания масивов типа:

Type = array [ ] of ;

Const n = 10;

Type rgb = (red, green, blue)

ar = array [0..n] of Integer;

Var matrix: array [1 ..8,1 .. 8] of Real;

color: array [rgb] of Byte;

Следует отметить, что типы переменных а и с не эквивалентны, так как переменная а имеет тип аr, а переменная с не является типа аr.

Если базовым типом является масивов, то получаем многомерный массив.В приведенном примере переменные ar2 и matrix является двумерными массивами.Описание переменной matrix эквивалентен такому описанию

Var matrix: array [1..8] of array [1..8] of Real;

То есть многомерные массивы можно описать двумя формами:

Type = array [ ] of array [ ] ofarray [ ] of ;

Type = array [ , … ] of ;

Оператор присваивания можно применять к массиву как к единому целому. Для этого необходимо, чтобы массивы были одного и того же типа. В результате выполнения оператора а = b все значения элементов массива b будут присвоены соответствующим элементам массива а.

Так, для описанных выше переменных правильным является оператор аr2 [3] = а (поскольку аr2 [3] является массив того же типа, что и массив а).Оператор присваивания с = а неправильный, поскольку массивы а и С не эквивалентных типов.

Доступ к элементам массива.Элементы массива изображаются в программе с помощью имени элемента массива, который состоит из имени массива и индекса в квадратных скобках. Для приведенного выше примера color [green] — байтовая величина, matrix [4,7] — действительная величина, аr2 [10] — величина типа аr.Для многомерных массивов допускается такая форма записи доступа к элементу: matrix [1] [2], аr2 [4] [0] — соответственно то же, что и matrix [1,2], аr2 [4,0].

Констант массив описывается так же, как и обычный массив, но после описания базового типа ставится знак =, по которому в круглых скобках перечислены через запятую значения элементов массива.

Type rgb = (red, green, blue)

Const color: array [1..4] of rgb = (red, green, blue, green)

table: array [1..5] of Real = (0,0.5,1,1.5, -8e10)

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

Type rectangle = array [1..4,1..2] of Integer;

Const box: rectangle = ((0,0), (0,1), (5,1), (5,0));

Задавать символьные констант-массивы можно двумя способами:

Const vocal: array [1..7] of Char = ( «А», «Е», «И», «J», «В», «U», «Y»);

Const vocal: array [1..7] of Char = ‘АЕИJОUY «.

Пример решения лабораторного задачи:

3.2 методические указания

а) изучить правила организации массивов и синтаксис описания в программе одномерных и двухмерных массивов (матриц)

б) изучить организацию вложенных циклов с учетом порядка перебора элементов матрицы;

в) изучить правила использования приемов программирования в структурах с вложенными циклами;

г) разработать алгоритм решения задач своего варианта, записав их в виде блок-схем;

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

3.3 контрольные вопросы

  1. Задания одномерного массива.
  2. Формы задания многомерного массива.
  3. Доступ к элементам массива.
  4. Тип индекса массива.
  5. Тип элементов массива.
  6. Перечислен тип данных.
  7. Диапазонный тип данных.

4 Лабораторная работа №4.ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ подпрограммы ПОЛЬЗОВАТЕЛЯ

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

4.1 теоретические сведения

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

Все процедуры и функции делятся на два класса: стандартные (зарезервированные) и определяемые пользователем. Стандартные процедуры и функции являются частью языка, они заранее не описываются. Процедуры и функции, определенные пользователем, обязательно описываются в разделе описания подпрограмм. Само описание не предусматривает выполнения никаких действий. Для выполнения процедуры в программные является оператор вызова процедуры. Функция будет выполнена, если ее имя встретится в некотором выражении.

Процедура имеет ту же структуру, что и Паскаль-программа, и состоит из заголовка и блока (тела).Заголовок процедуры содержит ключевое слово Procedure, имя процедуры и, если необходимо, список формальных параметров с указанием типа каждого из них.Тип параметра должен быть простым или описанным с помощью имени ранее введенного типа.

Например, описание вида:

Procedure sum (n: Integer, а именно: array [1..50] of Real)

не допускается. Этот заголовок следует описать так:

Type ar = array [1..50] of Real;

Procedure sum (n: Integer, а именно: ar)

Блок процедуры аналогичный блока Паскаль-программы, за исключением лишь того, что после последнего end процедуры ставится точка с запятой, а не точка. Могут присутствовать все разделы, кроме раздела подключения модулей.

Общий вид описания процедуры:

Procedure ( );

begin

Например, процедура frame формирует на экране рамку размером 10х10 из знаков ‘*’.Левый верхний угол рамки имеет координаты (x, y). Программа demo_procedure строит на экране две рамки.

Program demo_procedure;

Procedure frame (x, y: Byte)

begin

For i: = 1 to 8 do begin GotoXY (x, y + i) Write ( ‘* *’) end;

begin

ClrScr; fram (31,2) frame (41,12)

Функция имеет ту же структуру, что и процедура, кроме того, что функция может возвращать дополнительно еще один результат простого типа через заголовок (а не только через параметры-переменные, как процедура).Заголовок функции содержит ключевое слово Function, имя функции, необязательный список формальных параметров с указанием типа каждого из них и имени типа функции.

Общий вид описания функции:

Function ( )

begin

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

Например, функция ch (x) вычисляет значение гиперболического косинуса.

Программа demo_function находит значение выражения: y = ch (1) + ch (2).

Program demo_function;

Function ch (x: Real): Real;

begin

Ch = (Exp (x) + Exp (-x)) / 2

begin

Y = ch (1) + ch (2) Writeln ( ‘y =’, y)

Параметры процедур и функций.Они позволяют при каждом вызове процедуры или функции работать с объектами, задаются в момент вызова через список фактических параметров.Список формальных параметров в заголовке процедуры или функции определяет имена, под которыми эти объекты известны внутри подпрограммы, а также тип необходимых фактических параметров.Между формальными и фактическими параметрами существует соответствие: первый фактический параметр соответствует первому формальному, второй — второму и т.д.

Количество формальных и фактических параметров должна быть одинаковой. Типы формальных и фактических параметров должны совпадать. Исключением является передача параметров строчной типа. В этом случае с помощью директивы компилятора <$ V +>можно активизировать проверку совпадения длин фактических и формальных параметров. По умолчанию установлен режим <$ V +>.

Turbo Pascal поддерживает следующие виды параметров: параметры-значения, параметры-константы, параметры-переменные и без типичные параметры-переменные.

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

Параметр константа.Это локальная константа для подпрограммы. Этот параметр полностью подобен параметра значение за исключением того, что его значение нельзя изменять в подпрограмме. Для описания параметров-констант в заголовке подпрограммы существует ключевое слово const, которое ставится перед соответствующими параметрами.

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

Type st80 = string [80];

Procedure demo (a, b: Byte; c: Char; var s: st80; var n: Byte)

В процедуре demo параметры a, b и c являются параметрами-значениями, а параметры s i n — параметрами-переменными.

Для параметров-переменных можно не указывать их типов. Тогда параметр бестиповых параметром переменной.Такие параметры совместимы с любым типом.

Область действия метки и имени (принцип локализации).Описание или определение метки или имени (константы, типа, переменной, процедуры, функции) распространяется на весь блок, в котором содержится это описание или определение. Область, в которой справедливое определение или описание метки или имени, называется областью действия этой метки или имени.

Если имя или метка описаны или обозначенные в блоке основной программы, то они называются глобальными. Если же имя или метка описаны или обозначенные внутри блока, то они называются локальными. Имя или метка глобальные относительно блока, если они описаны или обозначенные в блоке, включая данный блок. Описание или определения локальной метки или имени вне «своего» блока неопределенны. Если во вложенном блоке описана или данная локальная метка или имя, совпадающее с глобальной, то областью действия этой локальной метки или имени будет «свой» блок, за его пределами действует описание или определение глобальной метки или имени.

Например, во время выполнения программы:

Program demo_var;

Var a, b, c, d: Integer;

Procedure change (c: Integer; var d: Integer);

Var b: Integer;

begin

a = 1; b = 1; c = 1; d = 1

begin

a = 0; b = 0; c = 0; d = 0; change (c, d)

Write ( ‘a =’, a, ‘b =’, b, ‘c =’, c, ‘d =’, d)

a = 1 b = 0 c = 0 d = 1.

Переменная а является глобальной для программы demo_var, область ее действия распространяется и на процедуру change. Изменение значения а внутри процедуры change вызывает изменение ее значение и в основной программе.В процедуре change описана локальная переменная b, значение ее действительно только внутри этой процедуры.Глобальная переменная b своего значения не меняет.Переменная с, как параметр значение, тоже локальной и своего значения за пределами процедуры change не меняет.Присвоение внутри процедуры change новое значение переменной d, как параметра-переменной, вызывает изменение фактического параметра d.

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


Рекурсивные процедуры и функции.Если процедура или функция вызывает сама себя, то она называется рекурсивной. Глубина рекурсии, то есть количество вызовов, системой Тurbo Pascal не ограничивается.Реально она зависит от ресурсов памяти конкретного компьютера.

В общем случае рекурсивность — это не свойство самой процедуры или функции, а свойство ее описания.Рекурсия — мощный инструмент для решения многих задач.Рекурсивная подпрограмма, как правило, короче и нагляднее, но во время выполнения требует больше времени и памяти за счет повторных обращений к самому себе и дублирование локальных переменных.

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

Блок-схема программы, в которой есть подпрограмма, и блок-схема подпрограммы приведены на рисунке 4.1.

Рисунок 4.1 — Блок — схема программы по подпрограммой

Пример решения лабораторного задачи:

4.2 методические указания

а) изучить правила записи подпрограмм различных типов и средств обращения к ним;

б) изучить способы передачи параметров в подпрограммы ;

в) усвоить правила записи программ, которые используют подпрограммы различных видов;

г) разработать алгоритмы решения задач своего варианта, записав их в виде блок-схем;

д) подготовить текстовый вариант программы и предварительных данных.

4.3 контрольные вопросы

  1. Подпрограммы-процедуры в программе.
  2. Подпрограммы-функции в программе.
  3. Разница между процедурами и функциями.
  4. Формальные и фактические параметры.
  5. Принцип локализации.
  6. Особенности составления блок-схемы программы, имеет подпрограммы.
  7. Процедурный тип данных.
  8. Рекурсия.

5 Лабораторная работа №5.ОТДЕЛКА символьной ДАННЫХ

Цель работы: получение навыков по алгоритмизации и программирования задач, которые обрабатывают символьные данные; освоить ввода и вывода символьных данных, их обработки; научиться использовать стандартные процедуры и функции обработки символьных данных.

5.1 теоретические сведения

Теоретические сведения о символьного типа данных (char) приведены в первой лабораторной работе.

Строка — это последовательность произвольных символов.Строчные константы при использовании берутся в апострофы.В строке может содержаться от 0 до 255 символов. Описание строчной типа состоит из ключевого слова string, по которому в квадратных скобках записано максимальное количество символов, которое может иметь переменная описываемого типа.

type line = string [80];

begin

s: = ‘Произвольная последовательность символов’; t = ‘TURBO’; writeln (s, », t)

Символы строки имеют номера от 0 до 255, причем ASCII код символа с номером 0 равна текущей длине данной строки.Отдельный символа строки можно обратиться за помощью индекса, так же, как при обращении к элементу массива. Так, s [11] = ‘о’ — 11-й символ строки s, t [0] — нулевой символ строки t, причем Ord (t [0]) = 5 — текущая длина строки t.

Операции над строками.Над данным строчной типа определены операции сложения, отношение и оператор присваивания. Также их можно вводить с клавиатуры и выводить на экран.

Сцепление двух или более строк в один реализуется с помощью операции сложения или конкатенации, которая обозначается знаком «+». Добавляться могут строки произвольной длины, но необходимо, чтобы длина строки-результата не превышала 255.

‘Turbo’ + » + ‘Pascal’ + ‘v.7.1’ ‘Turbo Pascal v.7.1 «

«ТРАН ‘+’ ‘+’ ЗИСТОР » транзистор»

Во втором примере пара апострофов, идущие подряд, изображает пустой символ.Он не отображается на экране и не имеет порядкового номера.

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

«Pascal ‘=’ Pascal ‘True

Оператор присваивания используется для присвоения строчной переменной результата выражения, имеет строковый тип. Если с правой стороны от оператора присваивания иметь строка, содержащая больше символов, чем может содержать переменная, стоит слева, то лишние праве символы отбрасываются.В операторе присваивания допускается смешивание символьного и строкового типов. Если в данном случае символьной величине присваивается строка, текущая длина которого больше 1, то возникает ошибка во время выполнения.

var s, t: string [12];

begin

c = ‘T’; s = c + ‘urbo’; t = ‘A’;

Стандартные подпрограммы обработки строк.Во время дальнейшего описания процедур и функций под типом anystring понимать любой строчный тип.

Процедуры. Delete (Var s: anystring; n, m: Integer) — извлечение m символов из строки s, начиная с n- го символа.Если n больше длины строки, то не происходит никаких действий.Если n + m больше длины строки, то изымаются все символы до конца строки.Значение n должно лежать в пределах 1..255.

s = ‘Turbo’ Delete (s, 2,3) ‘To’

s = ‘Turbo’ Delete (s, 9,4) ‘Turbo’

s = ‘Turbo’ Delete (s, 4,3) ‘Tur «

Insert (s: anystring; Var t: anystring; n: Integer) — вставка строки s в строку t перед символом с номером n.Если n больше длины строки t, то происходит конкатенация t i s. Если длина результата превышает максимальную длину строки t, то в t остаются только левые символы.Значение n должно лежать в пределах 1..255.

Пусть t имеет тип string [9].

t = ‘Tuo’ Insert ( ‘rb’, t, 3) ‘Turbo’

t = ‘Turbo’ Insert ( ‘INST.COM «, t, 2)’ TINST.COM»

Str (n: Integer <или Real>; Var s: anystring) — преобразование целого или действительного значения n в строку s.Строка s должен иметь достаточную длину.После n может быть указан формат, как в операторе вывода Write.Если в формате указано количество позиций, которая больше длины строки s, то лишние праве символы будут отброшены.

В следующих примерах переменная r имеет тип Real и значение 567.89, s имеет тип string [5], г. имеет тип string [10].

Выражение Число Результат

Str (13: 4, s) _ _13 ’13’

Str (13: 6, s) _ _ _13 ‘1’

Str (r: 10 p) 5.6789E + 02 ‘5.6789E + 02’

Str (r 8, p) 5.68E + 02 ‘5.68E + 02’

Str (r: 8: 2, p) _ _ 567.89 «567.89»

Str (-r: 12: 2, p) _ _ _ _ _ -567.89 «-567.»

Val (s: anystring; Var n: Integer <или Real>; c: Integer) — преобразование строки s в число n.Строка s должен быть изображением некоторого числа и не должен содержать начальных и конечных пробелов. Если преобразование состоялось успешно, то с = 0, в противном случае значение n не определено, а переменная с равна номеру первого ошибочного символа в строке s.

Val ( ‘1234’, n, c) Для n произвольного типа его значение 1234 i с = 0.

Val (’12 .34 ‘, n, c) c = 3, n не определено для n целого типа;

с = 0, n = 12.34 для n действительного типа.

Val ( ‘- 149 _’, n, c) с = 5, n не определено для n произвольного типа.

Функции. Concat (s1, s2, …, sn: anystring): anystring — конкатенация строк s1, …, sn в один в указанном порядке.Если длина строки-результата превысит 255, то возникнет ошибка во время выполнения.

Concat ( ‘Turbo’, », ‘Pascal’) ‘Turbo Pascal «

Сору (s: anystring; n, m: Integer): anystring — результатом является m символов из строки s, начиная с символа с номером n. Если n больше длины строки s, то результатом функции будет пустой символ.Если n + m больше длины строки s, то результатом функции будут конечные символы, начиная с символа с номером n. Значение n должно лежать в пределах 1..255.

Copy ( ‘Turbo Pascal «, 7,6)’ Pascal ‘

Copy ( ‘Turbo Pascal «, 14,3)’ ‘

Copy ( ‘Turbo Pascal «, 9,7)’ scal»

Copy (s, n, 1) s [n], если

Length (s: anystring): Byte — результатом является текущая длина строки s есть количество в нем символов.

Pos (s, t: anystring): Byte — результатом является наименьший номер символа, начиная с которого строка s входит в строку t, если вхождение нет, то результатом будет 0.

Pos ( ‘AB’, ‘BABBABBAB’) 2

Pos ( ‘Turbo’, ‘Pascal’) 0

Пример решения лабораторного задачи:

5.2 методические указания

а) изучить правила записи символьных данных (констант, переменных, массивов) и описание способа их ввода и вывода;

б) ознакомиться с основными стандартными процедурами и функциями, которые позволяют обрабатывать символьные строки.Обратить внимание на вызов подпрограмм и на типы формальных параметров;

в) разработать алгоритмы решения задач своего варианта, записав их в виде блок-схем;

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

5.3 контрольные вопросы

  1. Строчный тип данных.
  2. Символьный тип

3.Операции со строками.

4.Стандартные процедуры для действий со строками.

  1. Стандартные функции для действий со строками.

6 Лабораторная работа №6.ОБРАБОТКИ файловой структуры данных, использование ЗАПАСОВ

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

6.1 теоретические сведения

Запись — это составленный или структурный тип данных, содержащий фиксированное количество компонент, каждая из которых может иметь свой тип.Тип компонент записи может быть произвольным: простым, составленным или указательным.

Описание записного типа состоит из ключевого слова Record, за которым следует список компонент с указанием их типов.Завершает описание, ключевое слово end.Компонента записи называется полем.

Общий вид описания записного типа:

Type = Record

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

Над данным записного типа, как над одним целым, определены две операции: селекция (выделение) компоненты и оператор присваивания.Для селекции компоненты некоторого записи после имени переменной записного типа ставится знак «. «(Точка), по которому указывается имя поля.В операторе присваивания можно употреблять только записи, идентичные по структуре.

Например, для задания информации о студенте можно ввести записной тип student со структурой

Type exam = (phisik, program, math)

mark = Array [exam] of 0..100;

date = Record

student = Record

Var s, s1: student;

Размер s.name имеет тип string И40], величина s.sesion имеет тип mark, величина s.sesion [math] есть диапазонного типа 0..100.Поле birthday имеет, в свою очередь, записной тип, поэтому доступ к его полей будет иметь вид: s.birthday.day — день, s.birthday.year — год рождения.

Присвоение конкретного значения переменной s может иметь следующий вид:

s.name = ‘Суботiна Лилия Геннадьевна’; s.group:=’ПЕ-071 ‘;

s.birthday.day:=29; s.birthday.month = 3; s.birthday.year = 1988;

s.sesion [phisik] = 90; s.sesion [program] = 95; s.sesion [math] = 100.

оператор присоединения with.Использование полей является громоздким из-за того, что постоянно отмечается имя переменной-записи. Для сокращения подобных записей используют оператор присоединения with.Этот оператор задает область действия, в которой для записи, указанном после with, идентификация поля происходит с помощью простого имени поля.

Общий вид оператора присоединения:

with do ;

Таким образом, приведенный выше фрагмент будет выглядеть:

with s do begin

name = «Суботiна Лилия Геннадьевна ‘; group = ПЭ-991 ‘;

with birthday do begin

day = 29; month = 3; year = 1980;

sesion [phisik] = 90; sesion [program] = 95; s.sesion [math] = 100

Вложенные операторы присоединения допускают сокращенную форму записи.

with a do

with b do

with c do

with a, b, c do

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

y: Record x, y: Integer end;

Внутри блока операторов переменная вещественного типа х отличается от целочисленной переменной у.х, а переменная записного типа в — от целочисленной переменной у.у.внутри оператора

with y do

переменные х и у обозначают соответственно переменные у.х и у.у, а настоящая переменная x недоступна.

Записи с вариантами.Данные описанного выше записного типа имеют, строг o фиксированную структуру, то есть количество полей и их тип задаются только раз и не изменяются.В языке Паскаль предусмотрено так называемые записи с вариантами, которые позволяют создавать гибкие структуры.

Запись с вариантами состоит из фиксированной и вариантной частей, причем фиксированную часть можно опускать. Фиксированная часть является обычным записи, а вариантная состоит из ключевого слова Case, за которым следует описание поля — селектора вариантов, ключевого слова of и описания вариантов.Каждый вариант состоит из списка полей, определенных для данного варианта. Поля каждого варианта и описание их типа берутся в круглые скобки.

Общий вид описания записного типа с вариантами:

Type = Record ;

Case of

Значением селектора должна быть одна из описанных меток. Эти метки не имеют ничего общего ни с метками оператора перехода goto, ни с метками оператора выбора Case.Значение селектора определяет, какой из вариантов и, соответственно, какие из имен полей доступны в момент выполнения программы.

Все имена полей должны отличаться друг от друга, даже если они встречаются в различных вариантах.

Запись может содержать только одну вариантную часть, которая идет по фиксированной частью. Допускаются вложенные варианты, то есть полем некоторого варианта может быть запись с вариантами. Если для некоторой метки соответствующее поле пустым, то этот факт записывается так:

Например, описанный выше тип student можно расширить за счет изменения его структуры.Ввести поле-селектор sex (пол).Для студентов — мужчин определить поле логического типа mil_serv (military service — воинской обязанности).Для студенток создать вложенную вариантную часть с полем-селектором логического типа married (замужем или нет).Если замужем, то в поле naiden_name записать девичья фамилия, в противном случае не вводить никакой информации.Новый тип student будет выглядеть;

Type exam = (phisik, program, math)

mark = Array [exam] of 0 ..100;

date = Record

student = Record

Case sex: (male, female) of

male: (mil_serv: Boolean);

female: (Case married: Boolean of

True: (maiden_name: string [20]);

Констант-записи описываются как и обычные записи.Значения полей задаются в круглых скобках и отделяются знаками ‘; «.

Например, для описанного выше типа с вариантами student задания констант-записи s будет иметь вид:

Type student =

(Name: «Буря Оксана Михайловна ‘;

birthday: (day: 22; month: 1; уеаr 1988)

Файловой тип (File) (типизированные файлы).В языке Паскаль термин «файл» касается объектов, образованных последовательностью компонент одного типа, причем считают, что файл находится снаружи программы. Компоненты файл в называются его элементами.В отличие от масивов типа, количество элементов файла не определяется во время описания файлового типа.

Работа с файлами сводится к открытию файла, выполнения операций над его элементами и закрытия файла.

Описание файлового типа состоит из ключевого слова File, за которым следуют ключевое слово of и типа элементов файла.Элементами файл в могут быть объекты произвольного типа, кроме файлового.Переменная файлового типа является весьма специфической, ее нельзя использовать в выражениях и в операторе присвоения. Файловая переменная отождествляется с некоторым физическим файлом и затем в программе только определяет файл, над которым выполняются операции.

Type complex = Record

comp_fil = File of complex;

Var f: comp_fil;

h: File of Integer;

Здесь файловая переменная f изображает файл, элементы которого имеют записной тип complex, h — файл, элементы которого являются целые числа.

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

Стандартные подпрограммы для обработки файлов.Они предназначены для организации и эффективной обработки файлов. В дальнейшем filevar означает любой файловый тип, anystring — любой строчный тип, filetype — тип, совпадает с типом элементов файла.

Assing (Var f: filevar; s: anystring) — файловая переменная f отождествляется с физическим файлом с именем s.Имя s содержит основное или расширенное имя файла, а также может содержать имя дисковода.Любая работа с файлом должна начинаться с этой процедуры.

Например, процедура Assign (h, ‘a: myfile.dta’) отождествляет файловую переменную h физическим файлом «myfile.dta», содержащийся в дисководе A.

Close (Var f: filevar) — закрытие файла f.В этом случае в фа йл записывается метка конца файла и вносятся необходимые изменения в директорий.Эта процедура необходима для сохранения результатов при создании или обновления файлов.

Erase (Var f: filevar) — файл f вытирается с диска.

Flush (Var f: filevar) — очищает буфер файла f.Когда происходит запись в файл, то данные записываются в него не сразу. Сначала накапливаются в буфере, содержится в оперативной памяти, а когда буфер заполнится, происходит запись в файл. Процедура Flush записывает содержимое буфера в том состоянии, в котором он в момент вызова процедуры в файл.Если перед закрытием файла в буфер ни был пустым, то процедура Close автоматически переносит его содержание в файл.

Read (Var f: filevar; Var a1, …, an: filetype) — считывание элементов из файла f и присвоения их значений переменным из списка.Список должен состоять хотя бы из одной переменной, иначе не будут выполняться никакие действия. Считывания начинается с текущего местоположения указателя файла в, а после окончания процедуры он устанавливается на первом непрочитанных элементе.Если тип некоторой переменной из списка не совпадает с типом элементов файла в, то фиксируется ошибка ввода-вывода.

Rename (Var f: filevar; s: anystring) — имя файла f заменяется именем, заданным строкой s.Новое имя не должно совпадать с именами уже существующих файлов.

Reset (Var f: filevar) — открывает уже существующий файл f.Указатель файла в устанавливается н а первый элемент.Если такого файла в не существует, то возникает ошибка ввода-вывода.

Rewrite (Var f: filevar) — образует новый файл f.Если такой уже существовал, то он очищается. Указатель файла в находится в начале файла.

Seek (Var f: filevar; n: Integer) — устанавливает указатель файла f на n-й элемент.Первый элемент имеет номер 0, второй — 1 и т.д.

Write (Var f: filevar; a1, …., An: filetype) — запись в файл f значений переменных из списка.Список должен состоять хотя бы из одной переменной, и Накш не будут выполняться никакие действия.После выполнения процедуры указатель файла в содержится после последнего записанного элемента.Если тип некоторой переменной из списка не совпадает с типом элементов, то фиксируется ошибка ввода.

Процедуры Flush, Read, Seek, Write применяются только к открытым файлов, а процедуры Erase и Rename — до закрытых файлов.Нарушение этого правила приводит к возникновению ошибки ввода-вывода

функции

Eof (Var f: filevar): Boolean — имеет значение True, если указатель файла находится на метке конца файла, и False — в противном случае.

FilePos (Var f: filevar): Integer — определяет номер элемента, в котором содержится указатель файла.

FileSize (Var f: filevar): Integer- определяет количество элементов в файле.

Все три функции должны применяться к открытым файлов.

Контроль операций ввода-вывода. Способ контроля правильности операций ввода-вывода зависит от состояния директивы контроля этих операций. Директива имеет вид: <$ I +>или <$ I->. По умолчанию директива находится в активном состоянии <$ I +>. В этом режиме, если возникнет ошибка ввода-вывода, работа программы прерывается и пользователь получает сообщение о номер и местонахождение ошибки. Такой способ контроля неудобный, потому что может привести к потере данных.

Если директива <$ И>находится в пассивном состоянии <$ I->, то при возникновении ошибки ввода-вывода выполнения программы не прекращается, но следующие операции ввода-вывода задерживаются. Состояние задержки сохраняется до тех пор, пока не будет вызвана целочисленных функция IOResult.Эта функция возвращает значение 0, если предыдущие операции ввода-вывода были корректными, и некоторое ненулевое значение, если обнаружены ошибки.После обращения к этой функции значение ее обнуляется. Хотя эта функция только фиксирует наличие или отсутствие ошибок, контролируя каждую операцию ввода-вывода путем перевода директивы <$ И>в пассивное состояние только на момент выполнения этой операции, можно идентифицировать причину возникновения ошибки и предусмотреть программные средства для ее устранения без прерывания работы программы и с сохранением данных.

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

Program demo_control_IO;

f: File of byte;

begin

ClrScr; GotoXY (30,5) Write ( ‘Название файла:’); b = False;

Repeat

GotoXY (45,5) Readln (s) Assign (f, s);

If IOResult = 0 then b = True

begin

GotoXY (30,7) Write ( ‘Такой файл не найден’);

GotoXY (35,9) Write ( ‘Размер:’, FileSize (f), «байт»); Close (f)

Repeat until keypressed

Текстовые файлы.Отдельное место в языке Паскаль занимают текстовые файлы. В отличие от других файлов, текстовые файлы не состоят из последовательности одинаковых элементов. Компонентами их есть строки символов, которые могут иметь произвольную длину. В конце каждой строки записывается знак конца строки. В конце файла в записывается признак конца файла.Текстовый файл описывается с помощью стандартного идентификатора Техt. Например,

Поскольку текстовые файлы не имеют регулярной структуры, то к ним нельзя применять стандартные подпрограммы FilePos, FileSize и Seek.Запрещается также одновременно читать и писать в один и тот же текстовый файл.

Процедуры. Стандартные процедуры Assign, Close, Reset, Rewrite имеют то же действие.Процедуры Read и Write модифицированы.

Read (Var f: Text; Var a1, …, an: anytype) — считывает из файла f значение и присваивает их переменным из списка.Тип anytype может быть символьным, строчным, целым или действительным.Действие и результат процедуры Read зависят от типа величин, считываются.Для параметра переменной символьного типа с файл в будет считан символ и присвоен соответствующей переменной.Если к выполнению процедуры Read функция Eof приобрела значение Тruе, то символьной переменной будет присвоено символ Chr ($ 1А) (символ ^ Z — конец файлe), а если функция Eoln приобрела значение Тruе (в то-же время функция Eof приобрела значение False) , то переменной будет присвоено значение СHR ($ 0D) и СHR ($ 0A) (символ Сr — возврат каретки).

Для параметра переменной строчной типа процедура Read будет читать все символы из одной строки файла к символу конца строки, но не включая его.Если длина строки превышает длину строки-переменной, то лишние праве символы будет отвергнуто.

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

Например, если в текстовом файле есть последовательность символов

-149 5К4 и процедуры считывания имеют вид

read (f, a) Read (f, b)

и b — целочисленные переменные), то переменной а будет присвоено значение -149, а при попытке считать значение переменной b фиксируется ошибка ввода-вывода ( ‘5К4 «не является целочисленных константой).

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

Например, если в текстовом файле есть последовательность символов

1965.0503_ _-1.607 + 04

и процедуры считывания имеют вид

Read (f, a, b) Read (f, c)

(A, b и с -переменного действительного типа), то переменной а будет присвоено значение 1.9650503Е + 03 переменной b — значение -7.607Е + 04, а при попытке считать значение переменной с фиксируется ошибка ввода-вывода (последовательность ‘2.1 А-05 «не является действительной константой).

Если в двух последних случаях (при чтении величин числового типа) функция Еоf имела значение Тruе перед выполнением процедуры Read или функция Еоln приобрела значение Тruе при пропуске начальных пробелов, знаков табуляции или меток конца строки, то переменной, что считывается, а не присваивается никакое значения.

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

Readln (Var f: Text; Var a1, …, an: anytype) — процедура, аналогичная процедуре Read, однако с той разницей, что следующий оператор считывания выполняться с начала строки, а символы, оставленные в предыдущей строке, игнорируются.Вызов процедуры Readln без списка параметров-переменных приводит просто к перемещению указателя файла на начало следующей строки.Таким образом оператор Readln (f, a, b) аналогичный сложенном оператору;

begin Read (f, a) Read (f, b) Readln (f) end; .

Write (Var f: Text; Var a1, …, an: anytype) — записывает в файл, который определяет f, одно или более значений из списка переменных.Тип anytype может быть символьным, строчным, целым, логическим или действительным.В процедуре Write допускается отформатировано вывода аналогично форматированном выводу на экран.В данном случае свободные знакоместа записываются в файл как пробелы.

Writeln (Var f: Text; Var a1, …, an: anytype) — процедура, аналогичная процедуре Write, но в отличие от нее после окончания записи значений переменных из списка в файл записывается метка конца строки и следующий оператор вывода осуществлять запись данных с нового строки.Вызов процедуры Writeln без списка параметров-переменных приводит к записи в файл пустой строки.

Следует отметить, что стандартные системные файлы (con, com1, lpt1 ш т.д.) системой Turbo Pascal интерпретируются как текстовые и к ним можно применять процедуры Readln и Writeln с тем же содержанием.

Например, процедуры Readln (Con) или Readln ждут нажатия клавиши ввода, процедура Writeln (Lst) выводит на печатающее устройство пустая строка.

функции

Eof (f: text): Boolean — аналогичная Eof для типизированных файлов.

Eoln (f: text): Boolean — функция приобретает значение Тruе, если указатель файла находится на метке конца строки или на метке конца файла, и False — в противном случае.

SeekEof (f: text): Boolean — функция, аналогичная функции Eof, но в отличие от нее игнорирует все пробелы, символы табуляции и конца строки.

SeekEoln (f: text): Boolean — функция, аналогичная функции Eoln, но в отличие от нее игнорирует все пробелы и символы табуляции.

Файлы без типа. Система Turbo Pascal предусматривает операции с файлами, которые не имеют типа.Эти файлы совместимы со всеми типами файлов и предназначены, как правило, для прямого доступа к файл в.

Описание бестиповых файла состоит из ключевого слова File (например Var f: File;).К файлов без типа можно применять все стандартные подпрограммы, кроме Read, Write и Flush.Считают, что элементами файлов без типа являются объекты длиной 128 байтов. При использовании процедуры Seek указатель файла передвигаться по элементам такой длины.Так, процедура Seek (f, 2) поместит указатель на третий элемент (байты с номерами 256..383).Операции чтения и записи происходят только порциями по 128 байтов. Это осуществляют процедуры BlockRead и BlockWrite.

BlockRead (Var f: File; Var v: anytype; n: Integer; Var m: Integer) — процедура считывает n блоков по 128 байт с бестиповых файла f.Результат помещается в область оперативной памяти, которую занимает переменная v (anytype — любой тип.).Необязательный параметр m показывает, сколько блоков было фактически считаны.Если m 6.2 методические указания

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

б) изучить стандартные процедуры и функции, которые обеспечивают основные операции с файлами прямого и последовательного доступа

в) усвоить правила работы с комбинированными типами данных: структура записей, описание записей в программе, доступ к отдельным полям записей, записи с вариантами, оператор присоединения;

г) разработать алгоритмы решения задач своего варианта, с аписавшы их в виде блок-схем.Файл должен состоять из некоторого количества отдельных записей, а не одного массива.

д) подготовить текстовый вариант программы и предварительных данных.Провести отладки программы, проверив все возможные ситуации.

6.3 контрольные вопросы

  1. Тип данных запись.
  2. Запись с вариантом.
  3. Файловый тип данных.
  4. Оператор присоединения.
  5. Операции с файлами прямого доступа (типизованимы).
  6. Операции с файлами последовательного доступа (текстовыми).
  7. Операции с бестиповых файлами.
  8. Особенности работы с файлами в программе.

Приложение А — Работа в среде Turbo (Borland) Pascal

Система программирования Turbo (Borland) Pascal является интегрированной средой, включающее экранный редактор; компилятор; редактор связей; отладчик. Интегрированная среда позволяет набирать тексты программ с использованием встроенного редактора текстов, компилировать их, выполнять, проводить отладку программ.

После успешного запуска системы появляется экранный редактор, имеет вид, приведенный на рисунке А.1.

Рисунок A.1 — Окно программы Turbo Pascal

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

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

Имя файла, откуда был прочитан текст программы (новому файлу предоставляется имя я NONAME00.PAS), располагается сверху окна посередине.

Сверху по краям расположены два специальных поля, используемые при работе с мышкой.Квадрат слева позволяет закрыть текущий файл, стрелка справа — развернуть на весь экран или минимизировать окно.

Слева от стрелки размещается цифра 1 — номер окна. Одновременно можно работать с несколькими программами, каждая из которых будет размещена в отдельном окне редактора.

Внизу слева два числа, записанные через «:», которые указывают текущую позицию курсора — номер строки и позицию в строке соответственно.

Кроме окна редактора, в Pascal используются также окна режима отладки, вывод результатов работы программы, справочной службы, стека, регистров.

Главное меню можно активизировать с помощью мышки или нажатие клавиши F10.Такая клал иша (или комбинация клавиш) называется горячей клавишей.

Главное меню включает в себя следующие пункты:

File — действия с файлами и выход из системы;

Edit — редактирование текста;

Search — поиск текстовой строки, процедуры, функции или места ошибки;

Run — выполнение программы;

Compile — компиляции программы с активного окна;

Debug — отладка программы;

Tools — запуск вспомогательных программ;

Options — установка параметров среды;

Window — работа с окнами;

Help — справочная система.

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

Пункт File содержит следующие подменю:

New — создает и открывает новое окно редактора с именем nonameAA.pas, где АА порядковый номер окна с именем noname;

Open — открывает для редактирования файл был создан и сохранен ранее;

Save — записывает содержимое активного окна редактора в файл; горячая клавиша F2;

Save as — записывает содержимое активного окна редактора в файл под другим именем;

Save all — записывает содержимое всех окон редактора в соответствующие файлы;

Change dir — изменяет текущий каталог пользователя;

Print — печатает текущий файл;

Print setup — настраивает среду для печати текущего файла;

Dos shell — осуществляет временный выход в MS DOS. Для возврата в редактор среды Pascal необходимо в командной строке набрать Exit;

Exit — завершает работу в среде Borland Pascal; горячая клавиша Alt-X.

Пункт Edit содержит подменю:

Undo — отменяет последнюю смену, то есть восстанавливает вид активного окна редактора, который предшествует последней смене; горячая клавиша Alt-Backspace;

Redo — отменяет действие последней команды Undo;

Cut — удаляет выделенный блок, помещая его при этом в буфер обмена Clipboard; горячая клавиша Shift-Del;

Copy — копирует выделенный блок в буфер обмена Clipboard; горячая клавиша Ctrl-Ins или Ctrl-C;

Paste — копирует содержимое буфера обмена Clipboard в активное окно редактора; горячая клавиша Shift-Ins или Ctrl-V;

Clear — удаляет выделенный блок, а не помещая его в буфер обмена Clipboard; горячая клавиша Ctrl-Del;

Show Clipboard — показывает содержимое буфера обмена.

Пункт Search включает в себя подменю:

Find — выполняет поиск текстовой строки в активном окне редактора;

Replace — ищет в активном окне заданный текстовый фрагмент и заменяет его на новый;

Search Again — повторяет поиск (и замену) заданного фрагмента во всем текста;

Go To Line Number — перемещает курсор в окне редактора на строку с заданным номером;

Show Last Compiler Error — выделяет строку текста с выявленной во время компиляции синтаксической ошибкой;

Find Error — выполняет поиск строки в тексте программы, вызвал ошибку выполнения;

Find Procedure — выполняет поиск в тексте программы заданной процедуры или функции.

Пункт Run содержит подменю:

Run — выполняет компиляцию, компоновку выполнения программы из файла редактора; горячая клавиша Ctrl-F9;

Step Over — осуществляет пошаговое выполнение главного тела программы, исключая пошаговое выполнение процедур и функций пользователя; горячая клавиша F8;

Trace Into — обеспечивает пошаговое выполнение программ, включая пошаговое выполнение всех процедур и функций пользователя; горячая клавиша F7;

Go To Cursor — осуществляет выполнение программы после компиляции и компоновки к первому оператора в строке с курсором; горячая клавиша F4;

Program Reset — прекращает отладки программы и удаляет программу, выполняется из памяти, закрывает все открытые в ней на данный момент файлы; горячая клавиша Ctrl-F2;

Parameters — позволяет задать строку параметров, которые передаются программе, выполняется.

Пункт Compile содержит подменю:

Compile — компилирует программу или модуль, находящийся в активном окне редактора; горячая клавиша Alt-F9;

Make — компилирует программу по перекомпиляцией только измененных модулей (TPU-файлов); горячая клавиша F9;

Build — полностью Перекомпилируйте программу, включая перекомпиляцию всех модулей;

Target — позволяет выбрать режим компиляции;

Primary File — задает имя исходного файла, то есть того файла, из которого необходимо начинать компиляцию и выполнение программы;

Clear Primary File — очищает имя, заданное опцией Primary File;

Information — показывает статистику программы.

Пункт Debug включает в себя:

Breakpoints — позволяет просматривать, корректировать и удалять контрольные точки;

Call Stack — активизирует окно программного стека, отображающий все вызовы подпрограмм; горячая клавиша Ctrl-F3;

Register — активизирует окно регистра, отображающий текущее состояние всех регистров процессора персонального компьютера;

Watch — активизирует окно отладки;

Output — активизирует окно вывода результата работы программы;

User Screen — активизирует окно вывода результата работы программы и разворачивает его на весь экран; горячая клавиша Alt-F5;

Evaluate / Modify — позволяет в процессе отладки просматривать или заменять значение любой переменной, а также найти значение любого выражения; горячая клавиша Ctrl-F4;

Add Watch — добавляет в окно наблюдения (отладки) переменные или выражения вместе с их текущими значениями, тем самым позволяя наблюдать за изменением этих значений; горячая клавиша Ctrl-F7;

Add Breakpoint — позволяет установить в текущей строке точку; горячая клавиша Ctrl-F8 позволяет как устанавливать, так и снимать точку.

Пункт Tools содержит подменю:

Messages — активизирует окно сообщений.С ередовище ищет и показывает файл с нужным фрагментом текста программы;

Go To Next — ищет фрагмент, заданный следующим сообщением в окне Messages; горячая клавиша Alt-F8;

Go To Previous — ищет фрагмент, соответствует предыдущему сообщению в окне Messages; горячая клавиша Alt-F7;

Grep — инициирует работу утилиты Grep; по умолчанию ищет во всех файлах с расширением.PAS текущего каталога имя переменной, процедуры или функции, на которой к моменту вызова опции стоял курсор; горячая клавиша Shift-F2.

Пункт Options включает в себя:

Compiler — задает параметры, с помощью которых можно управлять генерацией машинного кода программы;

Memory Sizes — регулирует размер памяти, которую занимает рабочая программа;

Linker — регулирует режим работы компоновщика;

Debugger — определяет отладчик, который используется и режим обновления экрана дисплея в процессе отладки;

Directories — определяет группы функциональных каталогов: XE & TPU directories указывает каталог, где будут располагаться готовы к работе .exe- и .tpu-файлы; Include directories содержит имена каталогов, в которых необходимо искать файлы, включаемых если таковые не найдены в текущем каталоге; Unit directories содержит каталоги, в которых будет вестись поиск .tpu файлов, если среда не оказывает их в текущем каталоге; Object directories указывает имена каталогов для поиска .obj-файлов, если таковые не найдены в текущем каталоге;

Environment — позволяет установить некоторые дополнительные опции окружения (цвет, работа с мышкой и т.д.);

Open — позволяет задать имя конфигурационного файла, в котором содержится информация о настройке среды;

Save — сохраняет текущее настройки среды в конфигурационном файле;

Save As — позволяет указывать имя каталога и файла, в котором среда будет сохранять свои настройки.

Пункт Window содержит подменю:

Tile — располагает окна так, чтобы каждое было видно на экране, выравнивая, по возможности, их размеры;

Cascade — располагает окна на экране каскадом;

Close All — закрывает все открытые окна;

Refresh Display — обновляет экран путем удаления следов программы, работала в режиме отладки,

Size / Move — позволяет перемещать активное окно по экрану или изменять его размеры; горячая клавиша Ctrl-F5;

Zoom — разворачивает окно на весь экран или возвращает ему предварительный вид; горячая клавиша F5;

Next — активизирует следующее окно; горячая клавиша F6;

Previous — активизирует предыдущее окно; горячая клавиша Shift-F6;

Close — закрывает активное окно; горячая клавиша Alt-F3;

List — выводит список всех открытых окон; горячая клавиша Alt-0.

Пункт Help содержит подменю:

Contents — позволяет просматривать содержимое справочной службы;

Index — выводит алфавитный список всех ссылок справочной службы; горячая клавиша Shift-F1;

Topic Search — выдает информацию о зарезервированное слово в пределах курсора; горячая клавиша Ctrl-F1;

Previous Topic — выводит предварительное справочное сообщение; горячая клавиша Alt-F1;

Using Help — дает разъяснения о том, как пользоваться справочной службой;

Files — позволяет установить нужный файл справочной службы;

Compiler Directives — выводит справку директив компилятора;

Procedures And Functions — содержит справку о стандартные процедуры и функции;

Reserved Words — содержит справку о зарезервированные слова;

Standard Units — содержит справку о стандартные модули;

Borland Pascal Language — содержит справку о языке Borland Pascal;

Error Messages — содержит справку сообщений об ошибках;

About — содержит информацию об авторских правах

Илон Маск рекомендует:  AnsiEndsStr - Функция Delphi
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL