Оператором называется предложение языка программирования, задающее полное описание некоторого действия, которое необходимо выполнить. Основная часть программы на языке Турбо Паскаль представляет собой последовательность операторов. Разделителем операторов служит точка с запятой. Все операторы языка Турбо Паскаль можно разделить на две группы: простые и структурные.
Операторы, не содержащие никаких других операторов, называются простыми . К ним относятся операторы присваивания, безусловного перехода, вызова процедуры и пустой оператор.
Оператор присваивания
Оператор присваивания (:=) предписывает выполнить выражение, заданное в его правой части, и присвоить результат переменной, идентификатор которой расположен в левой части. Переменная и выражение должны быть совместимы по типу.
Оператор присваивания выполняется следующим образом: сначала вычисляется выражение в правой части присваивания, а затем его значение присваивается переменной, указанной в левой части оператора.
Например, для оператора
Rezult:=A div В;
сначала выполняется целочисленное деление значения переменной А на значение переменной В , а затем результат присваивается переменной Rezult .
Примеры применения оператора присваивания:
А := 8;
S:= A * В ;
Ostatok:= A mod B;
Ratio:= A / B;
Оператор безусловного перехода (go to)
Оператор безусловного перехода (go to) означает "перейти к" и применяется в случаях, когда после выполнения некоторого оператора надо выполнить не следующий по порядку, а какой-либо другой, отмеченный меткой оператор.
Напомним, что метка объявляется в разделе описания меток и может содержать как цифровые, так и буквенные символы.
При использовании оператора go to необходимо помнить, что областью действия метки является только тот блок, в котором она описана. Передача управления в другой блок запрещена.
Правила использования оператора безусловного перехода. Использование безусловных передач управления в программе считается теоретически избыточным и подвергается серьезной критике, так как способствует созданию малопонятных и трудно модифицируемых программ, которые вызывают большие сложности при отладке и сопровождении. Поэтому рекомендуется минимальное использование оператора go to с соблюдением следующих правил:
Следует стремиться применять операторы перехода (если кажется невозможным обойтись без них) для передачи управления только вниз (вперед) по тексту программы; при необходимости передачи управления назад следует использовать операторы цикла;
Расстояние между меткой и оператором перехода на нее не должно превышать одной страницы текста (или высоты экрана дисплея).
Пример применения оператора безусловного перехода:
label Metka; {в раздале описания меток описали метку с именем Metka }
begin {основная программа}
{операторы основной программы}
{операторы основной программы помеченные меткой}
Порядок выполнения работы
Изучить теоретические сведения по теме: “Написание программы на Паскале с использованием операторов присваивания и безусловного перехода ”.
Получить индивидуальное задание у преподавателя и разработать программу в соответствии с поставленной задачей.
Показать работающую программу преподавателю.
Ответить на контрольные вопросы.
Контрольные вопросы
Основные элементы программирования.
Основные характеристики программы. Понятия языка, оверлеев, глобальных и локальных блоков.
Операторы языка программирования Паскаль. Оператор присваивания. Формат, примеры.
Оператор безусловного перехода. Формат, примеры. Основные правила использования
Лабораторная работа № 7
Написание программы на Паскале с использованием условных операторов и оператора выбора Case
Цель работы : формирование знаний и умений по работе с операторами языка. Приобретение навыков написания программ с использованием операторов присваивания и безусловного перехода.
Краткие теоретические сведения
Условные операторы
Условные операторы предназначены для выбора к исполнению одного из возможных действий (операторов) в зависимости от некоторого условия (при этом одно из действий может быть пустым, т. е. отсутствовать). В качестве условий выбора используется значение логического выражения.
В Турбо Паскале имеются два условных оператора: if и case.
Оператор условия if
Оператор условия if является одним из самых популярных средств, изменяющих естественный порядок выполнения операторов программы.
Он может принимать одну из следующих форм:
if <условие> then <оператор1>
else <оператор2>;
if <условие> then <оператор>;
В переводе с английского языка данные форматы можно определить как:
ЕСЛИ<условие> ТО<оператор1> ИНАЧЕ<оператор2>
ЕСЛИ<условие> ТО<оператор>
Оператор условия if выполняется следующим образом. Сначала вычисляется выражение, записанное в условии. В результате его вычисления получается значение булевского типа.
В первом случае, если значение выражения есть True (истина), выполняется <оператор1>, указанный после слова then (в переводе –“то”). Если результат вычисления выражения в условии есть False (ложь), то выполняется <оператор2> .
Во втором случае, если результат выражения True , выполняется <оператор>, если False - оператор, следующий сразу за оператором if . Операторы if могут быть вложенными .
Пример фрагмента программы с оператором условия if:
if Ch="N" then Parol:= True
else Parol:= False;
if Parol = True then
if X = 100 then Write("Пароль и код правильные")
Writeln("Ошибка в коде");
В данном примере с клавиатуры считывается значение переменной символьного типа Ch . Затем проверяется условие С h =" N " . Если оно выполняется, то переменной Parol булевского типа присваивается значение True , если условие не выполняется, False . Затем с клавиатуры считывается значение кода X . Далее оператор if проверяет условие Parol = True. Если оно имеет значение True , то выполняется проверка введенного пароля оператором if X=100 . Если условие Х=100 имеет значение True , то выводится сообщение "Пароль и код правильные", и управление в программе передается на оператор, следующий за словом end , если оно имеет значение False , выполняется составной оператор, стоящий после, слова else , который выводит на экран видеомонитора сообщение "Ошибка в коде", и вызывает стандартную процедуру Halt(1) для остановки программы.
Особенность применения оператора if . При использовании вложенных условных операторов может возникнуть синтаксическая неоднозначность, например:
if условие1 then if условие2 then <оператор1> else <оператор2>
Возникающая двусмысленность, к какому оператору if принадлежит часть else <оператор2>, разрешается тем, что служебное слово else всегда ассоциируется (связывается) с ближайшим по тексту служебным словом if, которое еще не связано со служебным словом else .
В связи с этим следует проявлять аккуратность при записи вложенных операторов условия.
Пример 1 . Составить программу, которая вычисляет частное двух целых чисел. В связи с тем, что делить на нуль нельзя, организовать контроль ввода данных.
Для контроля вводимых значений делителя используем оператор условного перехода if ... then ... else.
Текст программы может выглядеть следующим образом:
program Primer1;
А, В: integer;
Write("Введите значение делимого А: ");
Write("Введите значение делителя В: ");
if B=0 {Контроль ввода числа B }
then Writeln("Ha нуль делить нельзя") {Условие выполнено}
{Условие не выполнено}
Rezult:= А / В;
Writeln("Частное чисел ",А," и " ,В, " = ", Rezult);
| Возникновение и назначение языка Паскаль
Уроки 29 - 31
Возникновение и назначение языка Паскаль
Структура программы на языке Паскаль
(§ 11. Знакомство с языком Паскаль)
Работа с готовыми программами на языке Паскаль: отладка, выполнение, тестирование
Программирование на Паскале линейных алгоритмов
Знакомство с языком Паскаль
Возникновение и назначение Паскаля
После того как построен алгоритм решения задачи, составляется программа на определенном языке программирования.
Среди современных языков программирования одним из самых популярных является язык Паскаль. Этот язык разработан в 1971 году и назван в честь Влеза Паскаля - французского ученого, изобретателя механической вычислительной машины. Автор языка Паскаль - швейцарский профессор Никлаус Вирт.
Паскаль - это универсальный язык программирования, позволяющий решать самые разнообразные задачи обработки информации .
Команду алгоритма, записанную на языке программирования, принято называть оператором.
Программа на Паскале близка по своему виду к описанию алгоритма на АЯ. Сравните алгоритм решения уже знакомой вам задачи деления простых дробей с соответствующей программой на Паскале:
Структура программы на Паскале
Даже не заглядывая в учебник по Паскалю, в этой программе можно все понять (особенно помогает знание английского языка).
Заголовок программы начинается со слова Program (программа), за которым следует произвольное имя, придуманное программистом:
Program <имя программы>;
Раздел описания переменных начинается со слова Var (variables - переменные), за которым идет список имен переменных через запятую. Тип указывается после двоеточия. В стандарте языка Паскаль существуют два типа числовых величин: вещественный и целый . Слово integer обозначает целый тип (является идентификатором целого типа). Вещественный тип обозначается словом real . Например, раздел описания переменных может быть таким:
var a, b: integer; с, d: real;
Идентификаторы переменных составляются из латинских букв и цифр; первым символом обязательно должна быть буква.
Раздел операторов - основная часть программы. Начало и конец раздела операторов программы отмечаются служебными словами begin (начало) и end (конец). В самом конце программы ставится точка:
<операторы>
end
.
Операторы ввода, вывода, присваивания
Ввод исходных данных с клавиатуры происходит по оператору read (read - читать) или readln (read line - читать строку):
read(<список переменных>)
или readln(<список переменных>)
При выполнении команды ввода компьютер ожидает действий пользователя. Пользователь набирает на клавиатуре значения переменных в том порядке, в каком переменные указаны в списке, отделяя их друг от друга пробелами. Одновременно с набором данных на клавиатуре они появляются на экране. В конце нажимается клавиша <ВВОД> (
Вывод результатов происходит по оператору write (write - писать) или writeln (write line - писать в строку):
write(<список вывода>)
или writeln(<список вывода>)
Результаты выводятся на экран компьютера в порядке их перечисления в списке. Элементами списка вывода могут быть константы, переменные, выражения.
Разница в выполнении операторов writeln и write состоит в том, что после выполнения вывода по оператору writeln экранный курсор перемещается в начало новой строки, а по оператору write этого не происходит.
Арифметический оператор присваивания на Паскале имеет следующий формат:
<числовая переменная>:=<арифметическое выражение>
Арифметическое выражение может содержать числовые константы и переменные, знаки арифметических операций, круглые скобки. Кроме того, в арифметических выражениях могут присутствовать функции.
Знаки основных арифметических операций записываются так:
Сложение, - вычитание, * умножение, / деление.
Правила записи арифметических выражений
Запись арифметических выражений на Паскале похожа на обычную математическую запись. В отличие от математики, где часто пропускается знак умножения (например, пишут 2А), в Паскале этот знак пишется обязательно: 2*А. Например, математическое выражение
А 2 + В 2 - 12С
на Паскале записывается так:
А*А + В*В - 12*С
Это же выражение можно записать иначе:
SQR(А) + SQR(В) - 12*C
Здесь использована функция возведения в квадрат - SQR . Аргументы функций всегда пишутся в круглых скобках.
Последовательность выполнения операций определяется по их приоритетам (старшинству). К старшим операциям относятся умножение (*) и деление (/). Операции сложения и вычитания - младшие. В первую очередь выполняются старшие операции. Несколько операций одинакового старшинства, записанные подряд, выполняются в порядке их записи слева направо. Приведенное выше арифметическое выражение будет вычисляться в следующем порядке (порядок вычислений указан цифрами сверху):
Круглые скобки в арифметических выражениях влияют на порядок выполнения операций. Как и в математике, в первую очередь выполняются операции в скобках. Если имеется несколько пар вложенных скобок, то сначала выполняются операции в самых внутренних скобках. Например:
Пунктуация Паскаля
Необходимо строгое соблюдение правописания (синтаксиса) программы. В частности, в Паскале однозначно определено назначение знаков пунктуации .
Точка с запятой (;) ставится в конце заголовка программы, в конце раздела описания переменных, является разделителем описания переменных в разделе переменных и разделителем операторов. Перед словом end точку с запятой можно не ставить.
Запятая (,) является разделителем элементов во всевозможных списках: списке переменных в разделе описания, списках вводимых и выводимых величин.
Текст программы заканчивается точкой .
Строгий синтаксис в языке программирования необходим потому, что компьютер является формальным исполнителем программы . Если, допустим, разделителем в списке переменных должна быть запятая, то любой другой знак будет восприниматься как ошибка. Если точка с запятой является разделителем операторов, то в качестве оператора компьютер воспринимает всю часть текста программы от одной точки с запятой до другой. Если программист забыл поставить «;» между какими-то двумя операторами, то компьютер будет принимать их за один с неизбежной ошибкой.
В программу на Паскале можно вставлять комментарии. Комментарий - это пояснение к программе, которое записывается в фигурных скобках. В комментариях можно использовать русские буквы. На исполнение программы комментарий никак не влияет.
Заметим, что в Паскале нет различия между строчными и прописными буквами . Например, для Паскаля тождественны следующие варианты записи: begin, Begin, BEGIN, BeGiN . Использование строчных или прописных букв - дело вкуса программиста.
Оператором называется предложение языка программирования, задающее полное описание некоторого, необходимого для исполнения, действия.
Последовательность операторов представляет собой основную часть программы на языке Паскаль . Разделителем операторов в программе является символ «точка с запятой».
Оператор присваивания
Для записи в именованные ячейки памяти различных значений используется оператор присваивания
. В общем виде этот оператор имеет следующий вид:
переменная:= выражение
где оператор присваивания обозначается неразрывным знаком :=
(в Паскале не следует путать с операцией отношения =
).
Механизм выполнения оператора присваивания: вычисляется выражение в правой части от оператора и его результат заносится в ячейку памяти, определяемую именем переменной в левой части. Например:
- k:= k + 10; {* значение переменной k увеличивается на 10 *}
Рассмотрим работу оператора присваивания в данном примере пошагово:
- Из ячейки памяти с именем k выбирается текущее значение.
- К текущему значению прибавляется 10.
- Результат записывается в ту же самую ячейку памяти (предыдущее значение восстановить после новой записи невозможно!)
ВНИМАНИЕ: выражение должно быть совместимо по типу данных с переменной.
В PascalABC.NET определены также операторы присваивания со значками +=, -=, *=, /= . Действие этих операторов заключается в изменении значения переменной в правой части оператора с учетом обозначенной арифметической операции (перед знаком равенства) и значения в правой части. Например:
- k += 100; {* увеличивает значение k на 100 *}
- n -= 8; {* уменьшает значение n на 8 *}
- m *= 10; {* увеличивает значение m в 10 раз *}
- b /= 2; {* уменьшает значение b в 2 раза *}
Оператор присваивания - самый простой и наиболее распространённый оператор.
Формат оператора присваивания
Оператор присваивания представляет собой запись, содержащую символ = (знак равенства), слева от которого указано имя переменной, а справа - выражение. Оператор присваивания заканчивается знаком; (точка с запятой).
Переменная = Выражение; // Оператор присваивания
Оператор присваивания можно отличить в тексте программы по наличию знака равенства. В качестве выражения может быть указана константа, переменная, вызов функции или собственно выражение.
Правило исполнения оператора присваивания
Оператор присваивания, как и любой другой оператор, является исполняемым. Это значит, что запись, составляющая оператор присваивания, исполняется в соответствии с правилом. При исполнении оператора присваивания вычисляется значение в правой части, а затем это значение присваивается переменной слева от знака равенства. В результате исполнения оператора присваивания переменная в левой части всегда получает новое значение; это значение может отличаться или совпадать с предыдущим значением этой переменной. Вычисление выражения в правой части оператора присваивания осуществляется в соответствии с порядком вычисления выражений (см. Операции и выражения).
Примеры операторов присваивания
В операторе присваивания допускается объявление типа переменной слева от знака равенства:
int In = 3 ;double Do = 2.0 ;
bool Bo = true ;
color Co = 0 x008000 ; // Переменной Co присвоено значение константы
string St = " sss "; // Переменной St присвоено значение константы
datetime Da = D " 01.01.2004 "; // Переменной Da присвоено значение константы
Ранее объявленные переменные используются в операторе присваивания без указания типа.
In = 7 ; // Переменной In присвоено значение константыDo = 23.5 ; // Переменной Do присвоено значение константы
Bo = 0 ; // Переменной Bo присвоено значение константы
В операторе присваивания не допускается объявление типа переменной в правой части от знака равенства:
In = int In_2; // Объявление типа переменных в правой части запрещено
Do = double Do_2; // Объявление типа переменных в правой части запрещено
В операторе присваивания не допускается повторное объявление типа переменных.
Int In; // Объявление типа переменной In
int In = In_2; // Не допускается повторное объявление переменной (In)
Примеры использования в правой части пользовательских и стандартных функций:
In = My_Function () ; // In присвоено значение пользоват. функцииDo = Gipo (Do1 , Do1 ) ; // Do присвоено значение пользоват. функции
Bo = IsConnected () ; // Bo присвоено значение стандартн. функции
St = ObjectName (0 ) ; // St присвоено значение стандартн. функции
Da = TimeCurrent () ; // Da присвоено значение стандартн. функции
Примеры использования в правой части выражений:
In = (My_Function () + In2 ) / 2 ; // Переменной In присвоено// ..значение выражения
Do = MathAbs (Do1 + Gipo (Do2 , 5 ) + 2.5 ) ; // Переменной Do присвоено
// ..значение выражения
При вычислениях в операторе присваивания применяются правила приведения типов данных (см. Приведение типов).
Примеры операторов присваивания краткой формы
В MQL4 используется также краткая форма записи операторов присваивания. Это - форма операторов присваивания, в которой используются операции присвоения, отличные от операции присвоения = (знак равенства) (см. Операции и выражения). На операторы краткой формы распространяются те же правила и ограничения. Краткая форма операторов присваивания используется в коде для наглядности. Программист по своему усмотрению может использовать ту или иную форму оператора присваивания. Любой оператор присваивания краткой формы может быть легко переписан в полноформатный, при этом результат исполнения оператора не изменится.
In /= 33 ;In = In / 33 ;
St
+= "
_exp7
";
// Краткая форма записи оператора присваивания
St
=
St
+ "
_exp7
";
// Полная форма записи оператора присваивания
Переменная и ее имя
При написании программ для переменных величин вводятся обозначения, точно также, как это делается в курсе алгебры.
Такое обозначение в ЯП называют именем величины. Переменные вводятся в программу для хранения и передачи данных внутри нее.
Любая переменная имеет имя – идентификатор .
По правилам ЯП Паскаль имя переменной должно начинаться с буквы и может содержать буквы (только латинские), цифры и знак подчеркивания. Длина имени – до 126 символов.
Каждое имя соответствует некоторой ячейке памяти, куда записывается значение переменной величины. Ячейка – это последовательность разного количества байтов памяти для разных данных. Для целых чисел в Паскале требуется 2 байта, для действительных – шесть байтов.
Арифметические действия и выражения в ЯП Паскаль
Для работы с числами используются шесть операций:
«+» - сложение
«-» - вычитание
«*» - умножение
«/» - деление
mod - нахождение остатка от деления
div - деление нацело
Находить остаток от деления и делить нацело можно только целые числа.
Из имен переменных, чисел, знаков арифметических действий и математических функций конструируются арифметические выражения.
Для указания порядка действий используются только круглые скобки, их может быть несколько, главное, чтобы количество открывающихся скобок равнялось количеству закрывающихся.
Для возведения аргумента в квадрат используется обозначение sqr(x), для извлечения квадратного корня sqrt(x), а модуль обозначается abs(x).
Оператор присваивания
Основное преобразование данных, выполняемое компьютером, - присвоение переменной нового значения.
Общий вид оператора присваивания:
Имя_переменной:=арифметическое выражение;
При выполнении оператора присваивания рассматривается арифметические выражения, из ячеек оперативной памяти, соответствующих стоящим там именам, вносятся в процессор значения и выполняется указанные действия над данными. Полученный результат записывается в ячейку памяти, имя которой указано слева от знака присваивания.
Например:
Для типов переменной слева и арифметического выражения справа от знака присваивания существуют ограничения:
1) если переменная вещественного типа, то арифметическое выражение может быть как целого, так и вещественного типа, т. е. содержать либо целые переменные и допустимые для них операции, либо вещественные, либо и те, и другие (тогда выражение преобразуется к вещественному типу);
2) если переменная слева целого типа, то арифметическое выражение только целочисленное.
Это означает, что можно, например, вещественной переменной присвоить целое значение.