Как выглядит оператор присваивания. Операторы языка паскаль. Проверка домашнего задания

Переменная и ее имя

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

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

Любая переменная имеет имя – идентификатор .

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

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

Арифметические действия и выражения в ЯП Паскаль

Для работы с числами используются шесть операций:

«+» - сложение

«-» - вычитание

«*» - умножение

«/» - деление

mod - нахождение остатка от деления

div - деление нацело

Находить остаток от деления и делить нацело можно только целые числа.

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

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

Для возведения аргумента в квадрат используется обозначение sqr(x), для извлечения квадратного корня sqrt(x), а модуль обозначается abs(x).

Оператор присваивания

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

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

Имя_переменной:=арифметическое выражение;

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

Например:


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

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

2) если переменная слева целого типа, то арифметическое выражение только целочисленное.

Это означает, что можно, например, вещественной переменной присвоить целое значение.

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

Оператор присваивания в Паскале

Оператор присваивания, наиболее часто используемый оператор языка Турбо Паскаль.

Формат записи: X:=A;
где: X – имя переменной;
A - выражение;
:= - знак присваивания.

Работа оператора: В процессе выполнения оператора вычисляется значение, в правой части выражения и присваивается имени переменной.

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

Пример 9.1. Записать программу вычисления функций:

y= cosa+lnb; n=k+1; r=ord(#65).

Var
a, b, y: real;
k, n: integer;
r: char;
t, v, u: Boolean;
* * *
y:= cos(a)+ln(b);
n:=k+1;
r:=ord(#65);
t:=(v and u)or(v and not u);
* * *
End.

Оператор перехода в Паскале

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

Формат записи: GoTo m;

где: GoTo – перейти к;
m - метка.

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

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

Мы рассмотрели простейшие программы, написанные на Паскале в среде PascalABC.Net. Там мы производили арифметические действия над числами, а потом выводили их с помощью оператора write(или writeln). Но мы не использовали очень часто встречающегося в программировании оператора – присваивания. Так что это такое – присваивание?

Рассмотрим некоторые переменные M и N, имеющие определенные значения, скажем, M = 12, N = 34. Под каждую из этих величин компьютер выделяет отдельный участок памяти, представляющий собой некоторое количество ячеек, или битов (1 ячейка = 1 бит). Несколько чисел (или другой тип данных) не могут храниться в одном и том же месте памяти по той же причине, по которой два литра воды нельзя вместить в одну литровую банку.

Очень часто возникает необходимость сделать так, чтобы значение переменной M, равное 12, было удалено, а вместо этого стало равно значению переменной N, то есть 34. Что делает компьютер? Он находит место памяти, куда «спрятано» значение величины N, копирует его (число 34), возвращается к месту хранения M (равному 12), удаляет его значение и вставляет новое, то есть 34. В результате M = 12 превратилось в M = 34.

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

Присваивание записывается как M:= N , означающее, что значение N переходит к M. Встает естественный вопрос: а что случилось с величиной N? Ничего, она просто как бы «поделилась» значением с переменной M, а сама не изменилась. Иногда новички в программировании думают, что переменные M и N меняются значениями, но это не так. Для иллюстрации этого явления рассмотрим задачу:

Задача. Дано числа: M = 12, N = 34. Поменять их значения местами.

Нам надо числу M присвоить 34, а числу N присвоить 12 (наоборот). Очень часто начинающие программисты пишут так:


В первой строчке кода M присваивается N, то есть M:= 34. Во второй строчке N присваивается M, но последняя переменная уже не равна 12, так как изменила свое значение в предыдущей строке на 34. Поэтому обе переменные окажутся равными 34. Для демонстрации напишем полностью код, который Вы должны переписать в среду программирования PascalABC.Net:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 var M, N: type integer;

Описание:

")" onmouseout="toolTip()">integer
; begin writeln ("Введите числа M и N:" <-- вводим 12 } write (" N = " ) ; readln (N) ; { <-- вводим 34 } M := N; { <== M присваивается N, поэтому M = 34 } N := M; { <== N присваивается M, поэтому N = 34 } end .

Запустите программу на выполнение; при запросе M введите 12, для N укажите 34 и нажмите Enter. Если всё сделано правильно, то Вы должны увидеть:

Введите числа M и N:
M = 12
N = 34
Результат:
M = 34 N = 34

Как видно из последней строчки, это не то, что мы хотели – поменять значения M и N местами.

Чтобы добиться правильного результата, надо зафиксировать первоначальное значение переменной M, например, s:= M ("запомнить" М, записав его значение в переменную s). В результате будем присваивать числу N не значение переменной M, которая уже изменилась, а использовать равную ей величину s:


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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 var M, N, s: type integer;

Описание:
Представляет 32-битовое целое число со знаком.

Диапазон значений: -2 147 483 648 .. 2 147 483 647 ")" onmouseout="toolTip()">integer
; begin writeln ("Введите числа M и N:" ) ; write (" M = " ) ; readln (M) ; { <-- вводим 12 } write (" N = " ) ; readln (N) ; { <-- вводим 34 } s := M; { <== запоминаем M, равное 12 } M := N; { M = 34, поскольку N = 34 } N := s; { N = 12, так как s = 12 } writeln ("Результат:" ) ; writeln (" M = " , M, " N = " , N) ; readln end .

Перепишите эту программу в PascalABC.Net и запустите (кнопка F9 на клавиатуре). Если ответ будет таким:

Введите числа M и N:
M = 12
N = 34
Результат:
M = 34 N = 12

то программа работает правильно. Как видно из последней строчки, значения чисел M и N поменялись местами.

| Возникновение и назначение языка Паскаль

Уроки 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(<список переменных>)

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

Вывод результатов происходит по оператору 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 . Использование строчных или прописных букв - дело вкуса программиста.

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

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

Оператор присваивания

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

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

Например, для оператора

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);