Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры информатика.docx
Скачиваний:
8
Добавлен:
23.09.2019
Размер:
339.35 Кб
Скачать

3. Операторы повторений

Цикл с предопределенным числом повторений.

For <переменная цикла>:=<начальное значение> To(DownTo) <конечное значение> Do <блок операторов>

Переменная должна быть целого или перечислимого типа. При исполнении цикла переменная цикла изменяется от начального до конечного значения с шагом 1. Если стоит to, то переменная увеличивается, если downto – уменьшается.

Условия выполнения цикла проверяются перед выполнением блока операторов. Если условие не выполнено, цикл For не выполняется.

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

While <условие> Do <блок операторов>

Блок операторов будет исполняться, пока условие имеет значение true. Необходимо, чтобы значение условия имело возможность изменения при исполнении блока операторов, иначе исполнение цикла не закончится никогда (в DOS это приведет к зависанию компыютера). Если условие зарание ложно, блок операторов не исполнится ни разу.

Условный цикл с проверкой после выполнения блока операторов.

Repeat <тело цикла> Until <условие>

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

Оператор выбора одного из вариантов.

Case <ключ выбора> Of <список выбора> Else <оператор> End;

<ключ выбора> - выражение любого перечислимого типа,  <список выбора> - одна или более конструкций вида <значение ключа>:<блок операторов>.

Составим программу, имитирующую калькулятор. Программа вводит две строки: первая содержит два числа, разделенные пробелом или запятой, вторая - символ арифметического действия.  2 2 * Признаком конца работы служит ввод любого символа, отличного от +, -, /, *.

Оператор безуслов ного перехода на строку с меткой.

Goto <метка>

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

34. Любая программа, написанная на любом языке программирования, по большому счету предназначена для обработки данных. В качестве данных могут выступать числа, тексты, графика, звук и др. Одни данные являются исходными, другие – результатом, который получается путем обработки исходных данных программой.

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

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

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

Тип переменной определяется тем, с какими данными она связана.

Переменные типа integer могут быть связаны только с целыми значениями обычно в диапазоне от -32768 до 32767. В Pascal есть другие целочисленные типы.

Переменные типа real хранят вещественные (дробные) числа.

Переменная булевского (логического) типа может принимать только два значения - true (1, правда) или false (0, ложь).

Символьный тип (char) может принимать значения из определенной упорядоченной последовательности символов.

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

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

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

Условный оператор реализует алгоритмическую конструкцию "ветвление" и изменяет порядок выполнения операторов в зависимости от истинности или ложности некоторого условия. Существует два варианта оператора.

Неполная форма условного оператора

 

if <условие> then

  begin

           <оператор1_1;>

           <оператор1_2;>

           …………….

           <оператор1_n;>

  end;

Полная форма условного оператора

if <условие> then

  begin

           <оператор1_1;>

           <оператор1_2;>

           …………….

           <оператор1_n;>

         end

else

         begin

                   <оператор2_1;>

                   <оператор2_2;>

                   …………….

                   <оператор2_n;>

         end;

 

<условие> - некоторое логическое выражение, истинность которого проверяется;

<оператор 1> - операторы, который выполняется, если логическое выражение <условие> истинно;

<оператор 2> - оператор, который выполняется, если логическое выражение <условие> ложно.

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

36. Цикл – это многократно повторяющиеся фрагменты программ.Алгоритм циклической структуры – это алгоритм, содержащий циклы.  В ТР существует три оператора цикла:

  • цикл с предусловием;

  • цикл с постусловием;

  • цикл с параметром.

Для всех циклов характерны следующие особенности:

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

  • вход в цикл возможен только через его начало;

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

 

Оператор цикла с предусловием в Паскале

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

Формат записи: While  L do  OP; где:  While       - пока не; do    – выполнить; L     –  выражение логического типа; OP – тело цикла; оператор (простой или составной)

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

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

Оператор цикла с постусловием в языке Паскаль

Оператор цикла с постусловием реализует следующую конструкцию:

Формат записи:         Repeat              OP        Until   L; где:  Repeat   - повторять; Until  – пока не; L     –  выражение логического типа; OP – тело цикла; оператор (простой или составной).

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

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

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

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

Формат записи:     1.   For P:=Pn to Pk do OP;     2.   For P:=Pk downto Pn do OP; где:  For   - для; to  – до; downto – уменьшая до do     –  выполнить; OP – тело цикла; оператор (простой или составной); P  - параметр цикла, переменная порядкового типа;  Pn, Pk – начальное и конечное значение параметра.

 

Работа оператора: Вычисляется начальное значение параметра цикла Pn и присваивается параметру P.  Проверяется условие P?Pk, и если оно Trueвыполняются операторы тела цикла  OP . После чего наращивается  значение Pна единицу и опять проверяется условие P?Pk . Если условие False осуществляется выход из цикла. В операторе с downto шаг изменения параметра цикла равен –1

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

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

Подпрограммы решают три важные задачи:

  • избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты;

  • улучшают структуру программы, облегчая ее понимание;

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

  • ПРОЦЕДУРЫ

  • Структура процедуры имеет следующий вид:

  • Procedure <имя процедуры>{(формальные параметры : их тип)}; {Var   (локальные переменные)} begin   . . . end;

  • Процедура вызывается по имени:

  •   <имя процедуры> {(фактические параметры)};

  • Процедура может быть с параметрами, а может быть без параметров.

  • Определение: Процедура-это поименованный составной оператор, где имя задается служебным словом Procedure.

38. ФУНКЦИИ

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

  • присвоить переменной

  • использовать в выражении

  • передать в качестве параметра в процедуру или функцию.

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

Структура функции имеет следующий вид:

Function <имя функции>{(формальные параметры : их тип)}: <тип функции>; {Var   (локальные переменные)} begin   . . .

<имя функции>: =<выражение> end;

Где:

Тип функции – простой порядковый тип, исключение - тип string. Если тип не стандартный, то его надо предварительно описать в разделе Type программы.

<имя функции>: =<выражение> - оператор, который осуществляет механизм возврата значения.

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

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

39Модули

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

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

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

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

Стандартные модули Паскаля

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

Модуль System

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

Модуль Crt

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

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

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

Модуль Crt позволяет:

  • выполнять вывод в заданное место экрана заданным цветом символа и фона;

  • открывать на экране окна прямоугольной формы и выполнять вывод в пределах этих окон;

  • очищать экран, окно, строку и ее часть;

  • обрабатывать ввод с клавиатуры;

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

Работа с экраном

Текущие цвета символа и фона задаются с помощью процедур TextColor и TextBackGround и действуют на следующие за ними процедуры вывода. Вывод выполняется в текущую позицию курсора. Для ее изменения служит процедура GotoXY.

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

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

Работа с клавиатурой

Модуль Crt позволяет работать с управляющими клавишами и комбинациями клавиш. Нажатие каждой клавиши преобразуется либо в ее ASCII-код, либо в так называемый расширенный код (scan-код) и записывается в буфер клавиатуры, из которого затем и выбирается процедурами ввода. Под каждый код отводится два байта. Если нажатие клавиш соответствует символу из набора ASCII, в первый байт заносится код символа. Если нажата, к примеру, клавиша курсора, функциональная клавиша или комбинация клавиш с CTRL или ALT, то первый байт равен нулю, а во втором находится расширенный код, соответствующий этой комбинации.

Для работы с клавиатурой модуль Crt содержит функции ReadKey и KeyPressed.

Модули Dos и WinDos

Модули Dos и WinDos содержат подпрограммы, реализующие возможности операционной системы MS-DOS - например, переименование, поиск и удаление файлов, получение и установку системного времени, выполнение программных прерываний и так далее. Эти подпрограммы в стандартном Паскале не определены. Для поддержки подпрограмм в модулях определены константы и типы данных.

Модуль Dos использует строки Паскаля, а WinDos - строки с завершающим нулем.

Модуль Graph

Модуль обеспечивает работу с экраном в графическом режиме.

Экран в графическом режиме представляется в виде совокупности точек - пикселов. Цвет каждого пиксела можно задавать отдельно. Начало координат находится в левом верхнем углу экрана и имеет координаты (0, 0). Количество точек по горизонтали и вертикали (разрешение экрана) и количество доступных цветов зависят от графического режима. Графический режим устанавливается с помощью служебной программы - графического драйвера.

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

Модуль Graph обеспечивает:

  • вывод линий и геометрических фигур заданным цветом и стилем;

  • закрашивание областей заданным цветом и шаблоном;

  • вывод текста различным шрифтом, заданного размера и направления;

  • определение окон и отсечение по их границе;

  • использование графических спрайтов и работу с графическими страницами.

В отличие от текстового режима, в графическом курсор невидим.

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

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

Структура графической программы

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

  • подключение модуля Graph;

  • перевод экрана в графический режим;

  • установку параметров изображения;

  • вывод изображения;

  • возврат в текстовый режим.

  • Модуль Strings

  • Модуль предназначен для работы со строками, заканчивающимися нуль-символом, то есть символом с кодом 0 (их часто называют ASCIIZ-строки). Модуль содержит функции копирования, сравнения, слияния строк, преобразования их в строки типа string, поиска подстрок и символов.

  • В модуле System определен тип pChar, представляющий собой указатель на символ (^Char). Этот тип можно использовать для работы со строками, заканчивающимися #0. Эти строки располагаются в динамической памяти, и программист должен сам заниматься ее распределением.

  • Кроме того, для хранения ASCIIZ-строк используются массивы символов с нулевой базой, например:

  • var  str : array[0 .. 4000] of char;

  • p: pChar;

Массивы символов с нулевой базой и указатели на символы совместимы

40. Структурированные типы данных

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

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

– регулярный тип данных (массивы);

описание типа «массив»

операции над элементами массива

линейная сортировка (сортировка отбором)

сортировка методом пузырька

 

условия задач (без ответов)

– комбинированный тип (записи);

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

Запись – это структурированный тип данных, состоящий из фиксированного числа компонентов одного или нескольких типов. Определение типа записи начинается идентификатором record и заканчивается зарезервированным словом end. Между ними располагается список компонентов, называемых полями, с указанием идентификаторов полей и типа каждого поля.

– файловый тип (файлы);

Одной из наиболее фундаментальных структур данных, используемых в Tuibo Pascal, являются файлы. Любой файл имеет три характерные особенности. Во-первых, у него есть имя, что даст возможность программе работать одновременно с несколькими файлами. Во-вторых, он содержит компоненты одного тиля. Таким компонентом может быть любой тип Turbo Pascal, кроме файлового. Например, допускается файл записей или файл строк, но нельзя создать «файл файлов». В-третьих, длина создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройств внешней памяти.

– множественный тип (множества);

Множество – это структурированный тип данных, представляющий собой набор взаимосвязанных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое. Каждый объект в множестве называется элементом множества. Все элементы множества должны принадлежать одному из скалярных типов, кроме вещественного. Этот тип называется базовым типом множества. Базовый тип задается диапазоном или перечислением. Область значений типа «множество» – набор всевозможных подмножеств, составленных из элементов базового типа. В выражениях на языке Pascal значения элементов множества указываются в квадратных скобках: [1,2,3,4], ['a','b','c'], ['a'..'z']. Если множество не имеет элементов, оно называется пустым и обозначается как [ ]. Количество элементов множества называется его мощностью.

– строковый тип (строки);

Изучение данных структурированного типа начнем со строкового типа данных (строк). Строка – это последовательность символов ASCII. При использовании в выражениях строка заключается в апострофы. Количество символов в строке (длина строки) может динамически изменяться в пределах от 0 до 255. Для определения данных строкового типа используется идентификатор string, за которым следует заключенное в квадратные скобки значение максимально допустимой длины строки данного типа. Если это значение не указывается, то по умолчанию длина строки принимается равной 255 байтам.

– объектный тип (объекты).

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

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