Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

GOSY / 1 блок-все-шпора(печать)

.pdf
Скачиваний:
37
Добавлен:
09.05.2015
Размер:
1.57 Mб
Скачать

begin

for I :=1 to 11 do

if i >3 then Arr[i] :=0 else Arr[i] :=1;

Вданном месте программы скрывается ошибка. Чтобы перейти к выполнению этой подпрограммы по шагам, в ней надо создать точку остановки, встретив которую программа прервет свою работу и временно передаст управление системе Delphi 7.

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

Внашем случае точку прерывания можно поставить в строке с оператором цикла. Это делается нажатием клавиши F5 или щелчком мыши на синем маркере. При этом соответствующая строка выделяется красным цветом. Снимается точка прерывания аналогичным способом.

Если теперь запустить программу и выполнить операцию, то программа остановится и управление будет передано в систему Delphi 7, где строка с точкой прерывания помечается зеленой стрелкой на левом поле. В заголовке главного окна системы Delphi 7 появится информационное сообщение Project1 [Stopped] (Выполнение проекта Project1 остановлено).

Далее выполнение метода AddActionExecute можно продолжить по шагам.

Для этого используются команда , клавиша F8 или кнопка Step Over.

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

Полностью остановить работу программы можно с помощью команды

или комбинацией клавиш

CTRL+F2.

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

Добавление новых переменных в такое окно осуществляется с помощью

команды или нажатием клавиш CTRL+F5. В появившемся окне Watch Properies (Свойства слежения) имя переменной вводится в поле Expression (Выражение).

Команды меню Run (Запуск) используются для управления запуском приложения. Используя команды данного меню, можно запустить приложение на выполнение с компиляцией или без компиляции, приостановить или

11

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

12

2.Язык Turbo Pascal: структура программы, простой и составной оператор. Операторы переходов: условный оператор, оператор выбора (переключения).

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

Program PRIM;

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

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

Структура программы на языке Pascal

Program {Имя программы} {$директива} директива компилятору. Uses {Список используемых модулей} Const {Раздел констант}

Type {Раздел описания типов}

Var {Раздел описания переменных} Procedure {Раздел описания процедур} Function {Раздел описания функций}

Begin

{Тело программы. Перечень выполняемых операторов.}

End.

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

uses CRT, Graph;

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

label 3, 471, 29, Quit;

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

const K= 1024; MAX= 16384;

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

var P,Q,R: Integer;

13

A,B: Char; F1,F2: Boolean;

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

Раздел операторов представляет собой составной оператор, который содержит между служебными словами

begin.......end

последовательность операторов. Операторы отделяются друг от друга

символом ;.

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

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

Пример 1

program Primer; {вычисление суммы двух чисел} var

x,y,s: integer; begin

WriteLn('Введите через пробел два числа ');

ReadLn(x,y); s := x + y;

WriteLn('Сумма чисел равна ',s); end.

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

Пример 2

program Primer; {вычисление суммы двух чисел}

uses Crt; {подключение модуля, необходимого для процедур очистки экрана и задержки}

var

x,y,s: integer; begin

ClrScr; {очистка экрана}

WriteLn('Введите через пробел два числа ');

ReadLn(x,y); s := x + y;

WriteLn('Сумма чисел равна ',s); ReadKey; {ожидание нажатия клавиши}

14

end.

Подробности..

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

{$E+}-эмулировать математический сопроцессор;

{$F+} - формировать дальний тип вызова процедур и функций; {$N+} - использовать математический сопроцессор;

{$R+} - проверять выход за границы диапазонов.

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

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

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

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

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

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

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

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

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

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

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

15

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

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

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

В операторе цикла с постусловием (начинающимся со слова repeat)

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

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

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

Операторы цикла с параметром (которые начинаются со слова for)

вызывает повторяющееся выполнение оператора (который может быть составным оператором) пока управляющей переменной присваивается возрастающая последовательность значений. В качестве управляющей переменной должен использоваться идентификатор переменой (без какоголибо квалификатора), который обозначает переменную, объявленную локальной в блоке, в котором содержится оператор for. Управляющая переменная должна иметь перечислимый тип. Начальное и конечное значения должны иметь тип, совместимый по присваиванию с перечислимым типом.

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

16

Идентификатор может иметь любую длину, однако только первые его 63 символа являются значимыми. Идентификатор должен начинаться с буквы и не может содержать пробелов. После первого символа идентификатора можно использовать буквы, цифры и символы подчеркивания (значение ASCII $5F). Как и в зарезервированных словах, в идентификаторах можно использовать как строчные, так и прописные буквы (компилятор их не различает).

Идентификатор должен начинаться с буквы и не должен содержать пробелов. После первого символа допускаются буквы, цифры и символ подчеркивания (ASCII $5F). Как и зарезервированные слова, идентификаторы безразличны к регистру клавиатуры.

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

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

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

Опер-р безуслов-го перехода (GOTO ) представляет собой простой оператор,используя кот-й можно изменять порядок выполнения операт-в в программе.Общий вид опер-ра безуслов-го перехода: GOTO<метка>. GOTOзарезервированное слово языка ТП 7.0, а <метка>-идентификатор или целое число (без знака) от 0 до 9999.Все использ-е в прогр-ме метки перечисл-ся в разделе LABEL.Но применение оператора безусл-го перехода в языке прогр-я ТП 7.0 явл нежелательным,т.к. присутствие этого оператора в прогр-ме нарушает ее структ-ную целостность и наглядность.Такую прогр-му трудно читать, отлаживать и модифицировать.

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

В общем случае структура опер-ра IF…THEN выглядит так: IF условие

THEN BEGIN

Оператор 1; Оператор 2;

17

. . . . . . .

Оператор_последний;

END;

Конструкция IF..THEN..ELSE:общую форму оператора IF..THEN,содержащего ELSE-ветвь, м. з. так:

IF условие

THEN BEGIN

Оператор_ ветви_Если_То_1; Оператор_ветви_Если_То_2;

. . . . .. . . . . . . . . . .. . . . . . . .

Оператор_ветви_Если_То_последний;

END

ELSE BEGIN

Оператор_ветви_Если_Иначе_1; Оператор_ветви_Если_Иначе_2;

……..……..

Оператор_ветви_Если_Иначе_последний;

END;

Пр-р: каким классом траспорт-х ср-в Вы имеете право управлять?(Кодировка ответов: водительские права: 1-есть, 0-нет; класс С : 1-да; 0-нет)

PROGRAM IF THEN ELSE; VAR

Priviledge , Class_C, Bicycle : BYTE; BEGIN

WRITE(‗Есть ли у вас водит права(0-нет/ 1-есть)?‘);

Readln(Priviledge);

IF Priviledge = 1 THEN Begin

Write (‗Класс С(0-нет/1-да)?‗);

Readln(Class_C); END

ELSE BEGIN

WRITE(‗Есть ли у вас велосипед (0-нет/ 1-есть)?‘);

Readln(Bicycle); END

END.

Конструкция операторов CASE..OF: в Паскаль-прогр-мах исп-ся часто.Она явл идеальным ср-вом для обработки ситуаций с несколькими исходами, когда

18

условие может принимать более 2 знач-й. После констр-ции CASE..OF должен стоять символ «;». Общ. вид:

CASE поряд_переменая OF Значение1:

Begin

Оператор1-1;

……………

Оператор1-n;

End;

……………

Значение n: Begin

Оператор N-1;

……………

End;

Else

Begin

Оператор E-1;

……………

Оператор E-n;

End;

END;

Значение Порядковая_переменная определ. ветвь в операторе CASE..OF подлежащую выполнению. Эта переменная должна иметь тип. Она м. -ть из целочисленных типов , каждый из которых позволяет организовать перечисление (упорядочение) некоторых объектов. Число объектов м.б. довольно большим. Упорядочение легко реализуется в среде значений целочисленных переменных, т.к. число этих значений конечно, например, после 3 идет 4. В то же время для действит чис проблема нахожден след числа неразрешима. Действительные типы переменных не относятся к классу порядковых, т.к. за 3,0 м. взять и 3,1 и 3,01 и т.д. до бесконечности. Наряду с возможностью отмечать каждую отдельно ветвь определенным значением «порядковой переменной» в CASE..OF конструкции имеется возможность объединять ветви. При объединении ветвь помечается списком значений. Значения в списке могут перечисляться через запятую, либо, если они идут подряд, м. указать два крайних значения, разделив ее двумя точками.

PROGRAM CASE..OF; VAR

Priviledge , Class_C, Bicycle : BYTE; BEGIN

WRITE(‗Есть ли у вас водит права(0-нет/ 1-есть)?‘);

Readln(Priviledge);

19

CASE Priviledge OF

0: BEGIN

WRITE(‗Есть ли у вас велосипед (0-нет/ 1-есть)?‘);

Readln(Bicycle);

END;

1: Begin

Write (‗Класс С(0-нет/1-да)?‗);

Readln(Class_C);

END;

END.

20

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