Что записывает команда задать переменной значение

§ 14. Язык программирования Паскаль

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

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

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

Существует большое количество сред программирования, поддерживающих язык Паскаль: PascalABC , FreePascal, Delphi, GNU Pascal, Dev — Pascal , Rad Studio и др. В учебном курсе используется среда PascalABC (с ней вы работали, знакомясь с учебными компьютерными исполнителями).

14.1.Команда вывода

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

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

Результат работы программы отражается в нижней части окна программы PascalABC в окне вывода (пример 14.1).

Команда write ( ) ; предназначена для вывода данных.

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

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

Пример 14.2. Выведем на экран компьютера следующий текст: « Привет! Я компьютер. Я умею выполнять программы! Сегодня ты написал свою первую программу, а я ее выполнил. Сейчас на экране – результат этой программы ».

Используя сочетание команд write и writeln , текст можно расположить по-разному.

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

Пример 14.3. Посчитаем значение выражения 2 + 2 ∙ 2.

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

14.2. Понятие типа данных

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

С такими задачами вы уже сталкивались в курсе математики. Например, решение задачи «Найдите площадь прямоугольника» можно записать так: S = ab , где переменные a и b обозначают соответственно длину и ширину прямоугольника, а S — площадь. Зная эту формулу, можно найти площадь любого прямоугольника.

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

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

Переменная в программировании — это именованная ячейка памяти, хранящая значение переменной.

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

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

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

Для описания переменных используется команда var (сокращение от англ. variable — переменная).

Формат записи команды следующий:

var <имя переменной> : <тип> ;

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

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

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

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

Оператор присваивания предназначен для того, чтобы:

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

Формат записи оператора присваивания:

<имя переменной> := <выражение> ;

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

Запись в Pascal

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

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

14.4. Ввод данных

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

Команда read ( ) предназначена для ввода данных. В скобках через запятую перечисляются имена переменных, значения которых необходимо ввести.

Ввод данных происходит в нижней части окна программы PascalABC . Для этого используется окно «Ввод данных». После нажатия кнопки «Ввести» или клавиши « Enter » введенные значения переносятся в окно вывода. После завершения работы программы в этом же окне будет выведен результат (пример 14.8).

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

Все программы на языке программирования Pascal имеют общую структуру.

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

  • заголовок программы (является необязательным);
  • подключаемые библиотеки (модули) (если подключать дополнительные библиотеки не нужно, раздел отсутствует; известные библиотеки: Drawman, Robot, RobTasks );
  • описание переменных с указанием их типа;
  • описание вспомогательных алгоритмов (если использовать вспомогательные алгоритмы не нужно, раздел отсутствует);
  • beginend. — служебные слова, обрамляющие тело основной программы, в которой находятся исполняемые команды. Слово begin начинает исполняемую часть программы, а end . (точка в конце обязательна) ее завершает.

Таким образом, в минимально возможном наборе программа состоит только из пустого тела программы: begin end . Программа, содержащая все разделы, представлена в примере 14.9.

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

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

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

По традиции, начавшейся в 1978 г. с примера из книги Брайана Кернигана и Денниса Ритчи «Язык программирования Си», первая программа на любом языке программирования должна выводить на экран приветствие миру:

Урок 2. Присваивание и переприсваивание. Ввод и вывод данных.

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

Пример: Объявим переменную a как принимающую целочисленные значения, введем ее с клавиатуры и удвоим:
Dim a as long Объявляем
Input a Вводим с клавиатуры
a=a*2 Удваиваем

Также существует команда, позволяющая вывести на экран какое-нибудь сообщение или содержимое какой-нибудь переменной. Это команда Print «Сообщение» или Print ИмяПеременной
Пример1: Выведем на экран сообщение «Hello, world»
Print «Hello,world»

Переменные и параметры

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

Подстановка переменных

Важно понимать разницу между именем переменной и значением этой переменной, и не забывать о ней. Например: variable — это символическое имя переменной
в то время как $variable — это уже ссылка на значение переменной ( на область памяти, содержащую значение переменной с именем variable ). Имена переменных, без префикса $, могут использоваться в процессе объявления переменной, то есть когда переменной присваивается определенное значение, при удалении значения переменной, при экспорте и в случаях — когда переменная является названием сигнала.
Присвоить значение переменной можно с помощью оператора =:

различными вариантами с использованием оператора read:

или в заголовке цикла:

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

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

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

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

# Использование пробелов, перед, или после, знака =, не допустимо
# При записи VAR =value, интерпретатор попытается выполнить команду VAR с параметром =value.
# Если попробовать присвоить значение переменной таким образом VAR= value, будет произведена попытка назначить переменной окружения VAR пустое
# значение, после чего, выполнить команду value.

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

Объявление неинициализированной переменной, фактически то-же самое что и сброс переменной

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

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

Со старыми версиями «sh» могут возникнуть проблемы .

Присваивание значений переменным

Операцией присвоения значения переменной в bash является символ равно, «=», в зависимости от контекста использования так-же является оператором сравнения «равно».

Простое присваивание
Простое и замаскированное присваивание

# Подстановка команд, немного более сложный вариант.

Обратите внимание на восклицательный знак (!) в подстанавливаемой команде, из командной строки такой вариант работать не будет, поскольку здесь используется механизм истории команд bash. Но в сценариях использование истории команд запрещено

Переменные Bash не имеют определенного типа

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

Целое число или строка

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

Специальные типы переменных

локальные переменные

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

переменные окружения

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

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

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

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

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

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

Позиционные параметры

Позиционные параметры, это аргументы, получаемые сценарием при запуске из командной строки — $0, $1, $2, $3. где $0 — это название файла сценария, $1 — первый аргумент, $2 — второй, $3 — третий и так далее. Аргументы, следующие за $9, должны быть заключены в фигурные скобки, например: $ , $ , $ .

Специальные переменные $* и $@ содержат все поступившие в сценарий позиционные параметры.

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

Сценарий может вести себя по разному в зависимости от имени сценария. Для этого сценарий должен проанализировать аргумент $0 — имя файла сценария. Это могут быть и имена символических ссылок на файл сценария.

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

Сценарий использующий программу whois для определения имени домена

Команда shift сдвигает позиционные параметры удаляя первый из них.

$1 <— $2, $2 <— $3, $3 <— $4, и т.д.

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

Использование команды shift

В данном случае команда ‘shift используется для перебора всех аргументов командной строки.

Так-же, команда shift, может применяться и к входным аргументам функций.

Переменные

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

Как раз эту задачу решают переменные. Переменная состоит из имени и значения. Значение – это и есть данные. Через имя переменной мы обращаемся к ячейкам памяти, чтобы получить оттуда данные или изменить их.

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

В Scratch ярко-оранжевый раздел «Переменные» содержит несколько блоков:

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

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

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

На изображении выше мы видим, что сначала в Scratch есть только одна переменная под именем «моя переменная». Если около нее установить флажок, то ее имя и значение отобразятся на сцене.

Если в процессе выполнения программы требуется то показывать на сцене переменную, то скрывать ее, следует использовать блоки «показать переменную …» и «скрыть переменную …».

Команда «задать <переменной> значение …» записывает в указанную переменную те или иные данные. Например, число 10.

Команда «изменить <переменную> на …» в случае чисел изменяет значение переменной на указанную величину. То есть, если переменная содержала число 10, а мы дали команду изменить ее на 2, переменная будет хранить значение 12, а не 2.

Если же переменная содержала 10, а мы хотим присвоить ей значение 2, надо воспользоваться командой «задать <переменной> значение …».

Рассмотрим как работать с переменными на примере. Пусть в нашем проекте по сцене ходят два спрайта – кот и краб. Ходить они будут в разных направлениях, но с одинаковой скоростью.

Мы пока не знаем точно, какую общую для спрайтов скорость хотим задать. Нам надо протестировать программу при разных скоростях. Если мы будем просто вписывать число в команду «идти … шагов», придется потом изменять ее два раза, у каждого спрайта. Это не совсем удобно, особенно если бы спрайтов было много. Для кого-то можно забыть изменить величину.

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

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

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

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

Когда выполняются команды «идти <скорость> шагов», то на место переменной «скорость» на самом деле подставляется ее значение. Например, число 10. В результате получается команда «идти 10 шагов», хотя мы этого не видим.

Более того, с помощью арифметических операций можно видоизменить нашу программу. Пусть краб ходит в два раза медленнее кота. То есть, если у кота скорость 10, у краба она должна быть 5. Если же у кота скорость 8, у краба она должна стать 4.

Для этого воспользуемся блоком с делением из зеленого раздела «Операции». Слева от знака деления поставим переменную «скорость», а справа – число 2.

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

Усложним нашу программу. Пусть значение переменной «скорость» задает пользователь. Если он нажмет на клавиатуре число 1, то скорость будет иметь значение 5, а если нажмет на клавиатуре число 2, скорость будет иметь значение 10. Если же человек нажмет 0, скорость должна установиться также в 0, то есть спрайты попросту остановятся.

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

Этот скрипт можно добавить любому спрайту.

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

Обратите внимание на форму блока, который содержит только имя переменной. Это прямоугольник со скругленными углами. Блоки подобной формы есть во многих разделах вкладки «Код». Например, в секции «Движение» это блоки «положение x», «положение y», «направление»:

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

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

Здесь мы используем переменную «положение x», чтобы проверить, находится кот справа или слева. Вспомним, что 0 – это середина холста. Налево идут значения меньше нуля, направо – больше.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *