Нет значения у величины кумир ошибка выполнения

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

Величины. Типы величин в Кумир.

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

Постоянной называется величина, значение которой указывается в тексте программы (например, 10; 3.14; и т. д.) и не меняется в процессе исполнения алгоритма.

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

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

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

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

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

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

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

Типы величин

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

Числовые типы:

  • цел – целый тип, диапазон допустимых значений лежит в пределах от -(МАКСЦЕЛ+1) до МАКСЦЕЛ, где МАКСЦЕЛ = 2147483647;
  • вещ – вещественный тип, диапазон допустимых значений лежит в пределах от -МАКСВЕЩ до МАКСВЕЩ, где МАКСВЕЩ – это число, немного меньшее, чем 1.797693×10308;

Величины МАКСЦЕЛ и МАКСВЕЩ определяются способом представления чисел в памяти компьютеров и в большинстве современных языков программирования имеют примерно одинаковые значения.

Вещественные значения можно преобразовать к целым с помощью встроенной функции int, например:

  • вещ а = 10.8; цел в
  • в := int(а)
  • вывод в

Текстовые типы:

  • сим – символьный тип, значением может быть любой литеральный символ;
  • лит – значением может быть строка литеральных символов.

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

Логический тип:

  • лог – может принимать значения да или нет.

Содержание

  1. Кумир имя не объявлено что делать
  2. Помогите, пожалуйста, почему в программе КуМир ,,Имя не объявлено», хотя там всё правильно. Что мне нужно исправить. ​
  3. Настройка среды Кумир для исполнителя Робот
  4. КуМир, Исполнитель Робот
  5. Главное меню
  6. Пульт
  7. Задачи
  8. Знакомство с языком и системой КуМир путем решения задач С2

Кумир имя не объявлено что делать

Помогите, пожалуйста, почему в программе КуМир ,,Имя не объявлено», хотя там всё правильно. Что мне нужно исправить. ​

Замечание: предполагается, что в имени файла нет «.».
program qq;
var s:string;
begin
writeln(‘Введите имя файла:’);
readln(s);
s:=copy(s,1,pos(‘.’,s))+’exe’;
writeln(s);
end.

Пример:
Введите имя файла:
Привет.txt
Привет.exe

5 — 10 + 20 = 15 (q = -2)
15 — 15 + 15 = 15 (q = -1)
20 -10 + 5 = 15 (q = -0.5)
15 + 0 + 0 = 15 (q = 0)
5 + 5 + 5 = 15 (q = 1)

программа на руби, для нахождения

Ответ:

Объяснение:

В этой кодировке символ занимат 1 байт = 8 бит.

284 на 8 нацело не делится, а число символов должно быть целым, поэтому такое сообщение невозможно.

Настройка среды Кумир для исполнителя Робот

На прошлом уроке мы познакомились с исполнителем Робот, узнали как его установить и запустить. Сегодня будем настраивать программу для дальнейшей работы.

Запущенная программа Кумир выглядит так.

Среда Кумир, исполнитель Робот

Первым делом мы должны раскомментировать первую строку нашей программы, убрав символ |

Раскомментируем первую строку

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

использовать Робот

алг

нач

кон

Удалив символ |, мы тем самым указали Кумиру на то, что будем работать с исполнителем Робот. Если этого не сделать, то при написании программы мы столкнемся с ошибкой «Нет такого алгоритма». Поэтому очень важно при создании новой программы раскомментировать первую строку. Теперь все готово для дальнейшей работы.

КуМир, Исполнитель Робот

Чтобы задать условия для выполнения, нужно выполнить команду меню Инструменты→Редактировать стартовую обстановку Робота.

В результате мы увидим окно:

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

Меню Обстановка позволяет сделать следующее:

Новая обстановка Сбрасывает имя файла и создает обстановку, показанную в синем окне выше
Открыть Открытие уже созданной обстановки (файл *.fil) для редактирования
Недавние обстановки Ускоряет доступ к 8 последним проектам
Сохранить Сохраняет текущие изменения
Сохранить как. Позволяет задать имя для обстановки
Сохранить как стартовую Именно она будет средой по умолчанию
Печать в файл Создает PDF-файл с картинкой обстановки, именем файла, датой и комментарием
Закрыть Закрывает окно редактирования

Главное меню

Пульт

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

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

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

Подробности использования пульта смотри меню Инфо→Язык и система КуМир.

Задачи

  1. Робот находится в левом верхнем углу прямоугольной области неизвестного размера, со всех сторон окруженной стенками. Посередине находится стена, в которой есть проход. Где он, точно неизвестно, но проход не примыкает к нижней стенке. Задача: написать программу, которая переведет робота в правый нижний угол. Файл среды.
  2. См. также ОГЭ: вопрос 20.1.
  3. См. также ЕГЭ: вопросы 6, 14.

Copyright © 1993–2022 Мацкявичюс Д.А. Все права защищены.
Никакая часть сайта не может быть воспроизведена никаким способом без письменного разрешения правообладателя и явной ссылки на данный ресурс.

Источник

Знакомство с языком и системой КуМир путем решения задач С2

Знакомство с языком и системой КуМир путем решения задач С2

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

Предполагается, что читатель хочет с минимальными затратами времени научиться решать на школьном алгоритмическом языке в системе КуМир, задачи, подобные задачам С2-С6 демоверсии компьютеризированного ЕГЭ. Эта демоверсия опубликована на сайте МИОО: На том же сайте сказано, как загрузить систему КуМир (версия для ЕГЭ) для операционных систем типа MS Windows и Linux . Ниже мы будем обсуждать только те понятия, конструкции и команды школьного языка и системы КуМир, которые нужны при решении задач типа С2-С3. В частности, все программы ниже будут состоять из одного алгоритма без параметров. В условиях задач С2-С6 не предусмотрена какая-либо работа с файлами. Предписывается вводить информацию с клавиатуры и выводить ее на экран. Дополнительно требуется, чтобы каждая порция вводимой или выводимой информации размещалась на отдельной строке и обрабатывалась одной командой ввод или вывод .

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

где нс означает н овая с трока.

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

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

Итак, загружаем КуМир и, согласно инструкции, запускаем версию КуМира для ЕГЭ. Мы увидим следующую картинку.

В верхней строке с иконками команд, правее крестика, должно быть пусто. Если правее крестика Вы увидели три желто-зеленые иконки, то Вы запустили полный КуМир, с Роботом и Чертежником, которые Вам не нужны. Перечитайте инструкцию и запустите версию КуМир для ЕГЭ. Размеры трех областей, которые мы видим при первом появлении окна КуМира на экране, для задач С2-С6 неудобны. Их нужно изменить. Для этого нужно «схватить» мышкой нижний край окна (под словом Редактирование) и уменьшить высоту окна, затем «схватить» мышкой правый край окна и уменьшить ширину и наконец, нужно подвинуть границы между тремя областями окна так, чтобы получилась картинка примерно такой формы и размера:

Начнем с задачи С2, в которой нужно подсчитать количество различных значений среди модулей трех введенных с клавиатуры целых чисел a , b , c .

Условие и решение задачи C 2

С2. Составить программу, которая вводит с клавиатуры три целых числа a, b,c (каждое число – отдельной командой «ввод»), заменяет каждое из этих чисел на его модуль и выводит на экран количество различных среди полученных трех чисел. Ничего, кроме этого количества, программа выводить не должна. Например, если все числа равны, программа должна выводить число 1 . При использовании системы Fr ee Pascal для представления целых чисел используйте тип LongInt .

Указание. Модуль целого числа можно вычислить следующим образом:

Пояснение. Ответом в этой задаче является программа, записанная на школьном алгоритмическом языке или языке Free Pascal. Эта программа должна быть подготовлена и проверена в среде программирования КуМир или Free Pascal и сохранена в одном файле средствами среды программирования. Далее этот файл должен быть загружен в экзаменационную работу средствами системы КТС ЕГЭ.
Не забудьте загрузить в Вашу экзаменационную работу файл с подготовленной Вами программой.

Важное замечание. В КуМире имена переменных можно писать русскими буквами, а можно и латинскими. Какой способ удобнее? При решении задач С2-С6 удобнее всего установить латинский нижний регистр и давать переменным однобуквенные имена, тем более, что в условиях задач уже используются имена: a , b , c , n . Чтобы поменьше переключать регистр при наборе ключевых слов на русском языке, используйте клавишу Alt: пока эта клавиша удерживается в нажатом положении, текущий латинский регистр становится русским (и наоборот).

Алгоритм решения задачи С2 назовем С2 (заглавная латинская буква С). КуМир для ЕГЭ настроен так, что латинские буквы в именах изображаются курсивом, поэтому в тексте программы латинские буквы можно отличить от схожих по начертанию русских. Сохранять программу будем в файле C 2.kum

Начнем составление алгоритма. В начале алгоритма, после слова нач, опишем целые переменные a , b , c

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

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

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

На полях программы, справа от ее текста, система КуМир показывает результаты выполнения команд ввод в строках 3,4,5 и результаты присваиваний в строках 6,7,8. И на полях строк 3,4,5 и в окне ввода/вывода видно, что были введены три числа 1 -1 2 . Однако на полях строк 6,7,8 почему-то показано, что все три числа стали равны 1 . Почему же число c оказалось равным 1 , а не 2 ? «Элементарно, Ватсон»: на место строки 8 мы скопировали строку 6, собираясь затем поменять в ней в двух местах букву a на букву c . После этого мы изменили первую букву а , но забыли изменить вторую и получилась ошибочная команда

Исправим эту ошибку и попробуем дописать в конец алгоритма команду, вычисляющую количество различных среди чисел a , b :

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

2) В процессе редактировании строки, до момента окончания редактирования строки, КуМир не производит перепроверку программы. Эта перепроверка запускается после «покидания» строки курсором.

Уводим курсор из редактируемой строки номер 9 и смотрим, что получилось. КуМир сообщает, что в строке 9 найдены три ошибки типа «Величина или алгоритм не описаны»:

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

Исправляем эти ошибки и пока [1] КуМир переразбирает программу, думаем, что еще осталось сделать. Величина k показывает, сколько различных среди первых двух чисел a и b . Сравним третье число c числом а, затем с числом b . Если c не совпадает ни с a ни с b , то при переходе от набора чисел

a b к набору a b c количество различных чисел увеличивается на 1. Если же число c совпадает с одним из первых двух чисел, то добавление числа c к набору a b количества различных чисел не меняет. Эти длинные словесные объяснения записываются в алгоритме очень коротко:

Для завершения программы осталось вывести вычисленный ответ k в отдельной строке вывод k , нс:

Запустив программу для входных данных 1 1 1 , получим правильный ответ 1:

Запуская программу еще на нескольких наборах входных данных, убеждаемся, что она работает правильно:

Убедившись в правильности программы, необходимо сохранить ее, а затем включить файл C 2. kum в экзаменационную работу средствами системы КТС ЕГЭ.

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

Источник

Цикл «для». Табличные
величины. Логические, символьные и литерные
величины

Мы находимся на финальной прямой
изучения алгоритмического языка.

Сейчас нам надо изучить еще одну
конструкцию алгоритмического языка — цикл для. Вспомним задачу про
подсчет суммы первых N нечетных чисел. В этой
задаче нужно сложить все числа арифметической
прогрессии с шагом 2, начиная от числа 1 и
заканчивая числом 2N–1. С помощью цикла для это записывается так:

S := 0

нц для k от 1 до 2*N — 1 шаг 2

. S := S + k

кц

Действие внутри цикла, а именно S := S + k, будет выполнено сначала для k = 1, затем для k = 3,
затем для k = 5 и последний раз
для k = 2*N — 1. Цикл для
и придуман для упрощения перебора членов
арифметических прогрессий с известными
начальным и конечным членами и шагом.

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

i := i1

нц пока i <= i2

тело цикла

i := i + 1

кц

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

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


газеты

Лекция

17/2009

Лекция
1.
Основные цели курса. Методика построения
курса. Проблемный подход. Теория познается через
практику. Система “КуМир” — эффективная
поддержка традиционных понятий процедурных
языков программирования и традиционных методов
отладки. Примеры использования “КуМира” в
предпрофессиональных курсах.

18/2009

Лекция
2.
Практическое знакомство с системой “КуМир”:
исполнитель Робот. Понятие алгоритма. Управление
исполнителем Робот с помощью пульта. Линейные
алгоритмы. Запись алгоритма. Отступление:
Карел-Робот в начальном курсе программирования
Стэнфордского университета.

18/2009

Лекция 3.
Методы “визуальной” записи алгоритма.
Программное управление Роботом. Цикл “n
раз”. Использование вспомогательных алгоритмов.
Запись алгоритмов на алгоритмическом языке.

Контрольная
работа № 1.

20/2009

Лекция 4.
Арифметические выражения и правила их записи.
Алгоритмы с “обратной связью”. Команда “пока”.
Условия в алгоритмическом языке. Команды “если”
и “выбор”. Команды контроля. “Визуальное”
представление команд. Отступление: правила и
форма записи арифметических выражений в
Фортране XXI века.

21/2009

Лекция 5.
Величины в алгоритмическом языке. Команды
ввода/вывода информации. Команда присваивания.
Вспомогательные алгоритмы. Алгоритмы с
результатами и алгоритмы-функции. Цикл “для”.
Табличные величины. Логические, символьные и
литерные величины.

Контрольная
работа № 2.

22/2009

Лекция
6.
Методы алгоритмизации. Рекуррентные
соотношения. Метод итерации. Инвариант цикла.
Рекурсия.

23/2009

Лекция 7.
Физические основы современных компьютеров.
Микропроцессор — сердце современного компьютера.
Как создать компьютер. 

24/2009

Лекция 8.
Виртуальные и реальные исполнители в системе
“КуМир”. Исполнитель Чертежник. Лего-Робот —
программно управляемый исполнитель “КуМира”.
Гипертексты в системе “КуМир”. Подготовка
заданий для учащихся и их автоматическая
проверка.

Итоговая работа.

Соотношение между “табличными
величинами” и просто “величинами” примерно
такое же, как между “циклами” и просто
“командами”. Если циклы позволяют коротко
описывать огромные последовательности действий
для ЭВМ, то табличные величины дают возможность
коротко описывать огромные массивы информации,
которые должны быть обработаны1.

Общий вид цикла для:

нц для i от i1 до
i2

· тело_цикла


кц

Здесь iвеличина типа цел (она называется
параметром цикла
), а i1 и i2целые
выражения, т.е. выражения типа
цел.
При выполнении цикла для
тело цикла выполняется
последовательно для
i = i1, i = i1 + 1, … , i = i2. Если i1 = i2, то тело цикла
выполнится один раз для
i = i1.
Если же i1 > i2, то тело цикла не выполнится ни разу.

Общий вид цикла для с шагом:

нц для i от i1 до
i2 шаг i3

· тело_цикла


кц

Если шаг i3 (который также должен
быть целым выражение
м) равен
положительному числу
d, то тело цикла будет выполняться
последовательно для
i = i1,
i = i1 + d, i = i1 + 2d,
до тех пор, пока значение i удовлетворяет условию
i <= i2. Если же шаг
i3 отрицателен и равен
?d, то тело цикла будет
выполняться последовательно для
i = i1,
i = i1 ? d, i = i1 ? 2d, до тех пор, пока
значение
i удовлетворяет
условию
i >= i2.

Линейные таблицы соответствуют
классической модели памяти ЭВМ. Фактически у
самой ЭВМ основным хранилищем информации служит
одна большая линейная таблица байтов.

Табличная величина состоит из
“элементов”, доступ к элементу таблицы мы
получаем, указывая его номер — индекс, а
элемент таблицы Т с индексом i в алгоритмическом языке
записывается как T[i].

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

вещ таб Т[1:10]

и

вещтаб Т[1:10]

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

Пример:

цел таб k[-5:5]

Здесь k
линейная таблица, состоящая из 11 элементов
целого типа. Индексы элементов принимают
значения от –5 до 5. Этот пример не типичный. Чаще
всего элементы таблицы нумеруют, начиная с 1, как
в языке Паскаль, или начиная с 0, как в языке Си.

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

цел таб Т[1:1000]

заставляет ЭВМ выделить память для
тысячи целых чисел. Используя имя таблицы Т и вычисленное в алгоритме
значение величины i, можно
получить или изменить i
элемент таблицы, написав Т[i]. Мы
получаем возможность компактно записать
обработку большого количества информации.
Рассмотрим, например, фрагмент алгоритма

нц для i от 1 до
1000

Т[i] := 0

кц

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

Поле Робота можно рассматривать как
таблицу, в каждой клетке которой записаны два
числа — радиация и температура. Для лучшего
усвоения понятия таб­лицы можно использовать
аналогии с соответствующими фрагментами поля
Робота. Так, горизонтальный коридор на поле
Робота с заданной в каждой клетке коридора
радиацией аналогичен линейной таблице с
вещественными элементами (см. пример). А все поле
Робота с заданной в каждой клетке температурой —
это аналог прямоугольной таблицы, то есть аналог
массива с двумя измерениями. Такие массивы на
бумаге и на “доске” изображаются обычно в виде
прямоугольных таблиц, откуда и название.

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

Для решения подобных задач применимы
два разных подхода. При первом подходе Робот
перемещается по коридору, для каждой клетки
проводит измерение уровня радиации в каждой
клетке и немедленно проводит все требуемые
подсчеты. При таком подходе нет необходимости
запоминать все измеренные значения уровня
радиации, обработка данных проводится “на
ходу”. Второй подход состоит в том, чтобы разделить
во времени
этап получения информации и этап ее
последующей обработки. При втором подходе Робот
идет по коридору, измеряет уровень радиации в
каждой клетке и “накапливает” где-то полученную
информацию. Далее Робот “отдыхает”, а
накопленная информация обрабатывается нужным
образом, то есть с этой информацией ЭВМ проводит
требуемое вычисление. При этом на этапе
проведения вычисления совершенно неважно,
откуда взялись исходные данные для этого
вычисления: в процессе измерения радиации
Роботом или в результате каких-то других
действий. Важно только, чтобы эти данные были
представлены в какой-то стандартизованной форме.
В школьном алгоритмическом языке таких форм две.
Данные можно накапливать в таблицах или в файлах.

Для определенности далее мы
рассмотрим задачу подсчета суммарной радиации
коридора с сохранением “накопленной”
информации в линейной таблице.

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

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

S := радиация

Далее Робот должен сместиться
вправо, измерить значение радиации в следующей
клетке и добавить его к S:

вправо; S := S + радиация

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

| известно, что Робот
находится

| в самой левой клетке

| горизонтального коридора,

| требуется найти суммарную радиацию

| во всех клетках коридора

| и запомнить ее в S

S := радиация

нц пока справа свободно

. вправо

. S := S + радиация

кц

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

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

вещтаб r[1:16]

Для правильного заполнения этой
таблицы необходимо помнить, в какой по счету
клетке коридора (нумерация от 1 до 16, слева
направо) находится Робот в момент очередного
измерения радиации. Введя для запоминания номера
целочисленную величину i,
получим такой алгоритм:

| известно, что Робот
в самой левой клетке

| горизонтального коридора длины 16

| требуется измерить радиацию во всех

| клетках коридора и

| запомнить ее в вещтаб r[1:16]

| Робот находится в клетке номер 1:

r[1] := радиация

нц для i от 2 до 16

. вправо

. r[i] := радиация

кц

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

Теперь нам нужно проделать
вычислительный этап работы, найти суммарную
радиацию. Для этого с линейной таблицей r
нужно проделать стандартную процедуру обработки
информации — найти сумму элементов этой таблицы.
Это делается так:

вещ S, цел i

S := 0

нц для i от 1 до 16

. S := S + r[i]

кц

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

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

5-0.gif (47674 bytes)

5-1.gif (11451 bytes)

Настало время снова вернуться к
простым величинам. Мы познакомились с числовыми
величинами и встречали в примерах литерные
величины. В алгоритмическом языке существуют еще
логические и символьные величины.

Величина целочисленного типа, как
следует из ее названия, может принимать только
целые значения. Величины такого типа можно
складывать, вычитать, умножать. К делению целых
чисел нужно относиться с осторожностью и
помнить, что при делении целых чисел всегда
получается вещественное число, даже если
возможно деление нацело. Например, 5/2 равно 2.5, 4/2 равно 2.02. Таким образом, деление целых
чисел всегда дает вещественный результат и, во
многих случаях, выполняется приближенно. Для
нахождения целой части вещественного числа в
алгоритмическом языке есть встроенная функция

цел int(вещ x)

Например, int(5/2) = 2, int(4/2) = 2,

int(-1/2) = -1.

Для деления с остатком на
положительное целое число в “КуМире” встроены
две функции:

цел div(цел m, цел
n)

| частное от деления m

|на n с остатком

цел mod(цел m, цел n)

| остаток от деления m

|на n

В отличие от многих других языков
программирования, где допускаются отрицательные
остатки, в алгоритмическом языке остаток никогда
не бывает отрицательным, при делении на
положитель-
ное число n остаток
может прини­-
мать только значения от 0 до n–1. В функциях div
и mod второй аргумент должен
быть положителен.

Числа можно сравнивать, в
алгоритмическом языке есть обозначения для 6
операций сравнения: “<”, “>”, “<=”, “>=”,
“=” и “<>”. Операции сравнения “=” и “<>”
в алгоритмическом языке применимы к значениям
любого типа, остальными операциями сравнения
можно без опаски пользоваться для числовых
величин и с некоторой опаской для текстовых
величин, так как результат сравнения текстовых
величин не соответствует алфавитному
упорядочению. Наконец, целочисленная величина
может появиться в левой части команды
присваивания

величина := значение.

Величина логического типа (лог) может принимать только
одно из двух значений: да, нет3. Над значениями
логического типа допустимы три логические
операции:

и, или,
не.

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

Величины логического типа можно
использовать в условиях в алгоритмическом языке.
Для примера рассмотрим такую задачу. От
горизонтального коридора на поле Робота кое-где
вверх отходят тупики разной высоты. Надо
отметить клетки коридора напротив тех тупиков,
высота которых больше трех клеток (мы их назвали
“длинными тупиками”). Если мы начнем решать эту
задачу, т.е. составлять алгоритм, у нас, конечно,
будет цикл, потому что неизвестно, сколько клеток
в коридоре. Условием окончания цикла служит
условие “справа стена”. Внутри цикла надо идти
по коридору вправо и, если сверху обнаружится
“длинный” тупик, то соответствующую клетку
коридора закрасить.

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

алг отметить клетку

дано | выше клетки имеется

| вертикальный тупик

надо | закрасить входную клетку
тупика,

| если «сверху длинный тупик»

нач

если сверху длинный тупик

то закрасить

все

кон

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

6-0.gif (26626 bytes)

6-1.gif (30098 bytes)

И, наконец, скажем несколько слов о
символьных и литерных величинах. Значением
символьной величины может быть любой символ,
всего имеется 256 символов. Некоторые символы
можно найти на клавиатуре или увидеть на экране,
а другие символы называются “непечатными” и
увидеть их нельзя. Зато у каждого символа имеется
код — целое число от 0 до 255, и есть встроенные
функции “КуМира”, преобразующие символ в код и
обратно. Попробуем напечатать все символы с
кодами от 32 до 127:

6-2.gif (26957 bytes)

Мы видим, что среди этих символов есть
цифры, латинские буквы, знаки препинания и
спецзнаки, но нет русских букв. Это и
неудивительно, символы с кодами от 0 до 127 — это
символы американской кодировки ASCII. Чтобы
увидеть русские буквы, нужно напечатать символы
с кодами от 128 до 255 (так называемые “символы
кодировки KOI-8r”) — см. скриншот.

7-0.gif (42881 bytes)

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

лит стр стр2

стр1:= «паровозик»

стр2:= «»

В этом примере заданы две строки с
именами стр1 и стр2.
Первая строка состоит из 8 символов:

стр1[1]=’п’

стр1[2]=’a’

стр1[8]=’к’

Вторая строка пуста, в ней нет ни
одного символа. В “КуМир” встроена функция

цел длин(лит стр)

подсчитывающая длину строки:

длин(стр1) = 8, длин(стр2) = 0

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

цел i, n, лит стр


n := 0

нц для i от 1 до длин(стр)

. если стр[i] = » «

. . n := n + 1

. все

кц

В отличие от линейных таблиц над
литерными величинами определены еще две
операции: “вырезка” куска строки и добавление
одной строки в конец другой. Приведем ровно один
пример. Пусть

стр1 = «паровозик»

стр2 = «ход»

Тогда стр1[1:4] =
«паро»
и стр1+стр2 =
«пароход»

Вырезка из строки снова является
строкой и обозначается так:

вырезка := строка[старт :
финиш]

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

лит строка, цел старт, цел
финиш

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


Пример:

лит строка, вырезка

строка = «строка»

вырезка := строка[3:5]

утв вырезка = «рок»

При изучении величин литерного типа
можно сформулировать достаточное количество
задач, в которых аргументами и/или результатами
являются строки. Эта область подобна играм с
шифровкой и дешифровкой, которые так любят
многие дети. Наверняка в классе найдутся ученики,
которым работа со словами понравится больше, чем
управление Роботом. Связать эти два непохожих
внешне клас-
са задач можно следующим образом. Закодируем
5 команд Робота буквами

7-1.gif (1032 bytes)

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

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

Средняя по трудности задача. Робот
начал движение на пустом поле. В строке путь ровно две буквы “З”.
Определить, сколько клеток закрасил Робот.

Трудная задача. Робот начал
движение на пустом поле. В строке путь
не менее одной буквы “З”. Определить, закрасил
ли Робот более одной клетки.

И, наконец, еще об одних командах в
алгоритмическом языке — командах контроля.

утв <логическое
выражение
>

дано <логическое выражение>

надо <логическое выражение>

Все три команды
выполняются так. Проверяется условие. Если
условие не соблюдается (равно нет), то “КуМир”
прекращает выполнение алгоритма и сообщает, что
возник отказ. Если же условие соблюдается, то
выполнение алгоритма нормально продолжается
так, как если бы команды контроля не было вовсе.

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

дано |Робот в начале
горизонтального

|коридора

|Вверх от коридора отходят тупики

|разной высоты

надо |Закрасить клетки коридора
напротив

|тех тупиков, высота которых больше

|трех клеток

Для простоты в начале освоения
“КуМира” можно считать эти конструкции
“предназначенными для комментариев” и
объяснение их реального смысла пропустить.

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

Ответ на вопрос “зачем нужна команда утв?” можно свести к бытовой
аналогии: в прошлом веке на дверях лифта, которые
еще часто были не автоматическими, висело
красочное объявление:

“НЕ открывайте дверь лифта, пока не
убедитесь, что кабина находится перед вами. Это
может привести к падению в шахту”.

Очевидно, что такая проверка спасла от
серьезных травм не одного человека.
Игнорирование этого требования, например, в
скоростных лифтах главного здания МГУ на
Ленинских горах в Москве привело к ряду трагедий.

В системе “КуМир” школьник, пишущий
программу, естественно, не подвержен такой
опасности.

В программе, как и в жизни, — если
контрольное условие выполнено, то надо просто
продолжать дальше выполнять алгоритм. Убедились,
что все в порядке, — и работаем дальше. Если же
контрольное условие не выполнено (лифта нет!),
значит, где-то есть ошибка: либо алгоритм неверен,
либо он применяется в недопустимой для него
ситуации.

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

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


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

2 В других языках
программирования операции деления с остатком и
нахождения остатка обозначаются другими
способами. Например, в языке Си частное и остаток
от деления двух целых чисел
m, n
обозначаются m/n и m%n
соответственно.

3 Точнее говоря, значением
логической величины может быть либо да, либо нет, либо значение величины может
быть не определено. Кроме того, для значений да и нет предусмотрены
синонимы true и false, которыми мы пользоваться
не будем.

Здесь описаны основные возможности системы КуМир (часть 1) и языка Кумир (часть 2). Знания этих возможностей достаточно для того, чтобы пройти тестирование. Полное описание возможностей системы КуМир приведено в файле system.pdf, языка КуМир – в файле manual.pdf; файлы находятся в каталоге KumirKumirHelp поставки системы КуМир. Полное описание доступно и из меню Инфо->«Язык и система Кумир» самой системы.

Часть 1. Система Кумир

1 Окно системы Кумир Окно системы Кумир выглядит так:

Рис.1

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

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

программы (слева) и область построчных сообщений (справа). Область по-

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

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

Окно можно свернуть-развернуть, сжать-растянуть, передвинуть и т. п.

1

2. Состояния системы Кумир

Усистемы Кумир есть четыре возможных состояния:

·РЕДАКТИРОВАНИЕ: происходит подготовка программы, выполнения нет.

·ВЫПОЛНЕНИЕ: происходит выполнение программы, редактирование текста программы запрещено.

·АНАЛИЗ результатов: выполнение завершено, однако все сообщения программы доступны для наблюдения и анализа; по любому действию в области программы, система переходит в состояние РЕДАКТИРОВАНИЕ, а сообщения сбрасываются. Система приходит в состояние АНАЛИЗ после окончания выполнения программы (нормального или аварийного).

·ПАУЗА: выполнение программы приостановлено, но может быть продолжено; редактирование текста программы запрещено. В состояние ПАУЗА система переходит в случае остановки во время выполнения (при вызове встроенной функции «пауза» или после очередного шага при выполнении программы по шагам), см. рис.2.

Рис.2 Окно системы КуМир в состоянии ПАУЗА

3. Главное меню Системы КуМир.

Меню «Программа» содержит следующие пункты:

2

Эти пункты имеют стандартный для современных оконных систем смысл и обеспечивают работу с файлами, в которых хранятся Кумирпрограммы, эти файлы имеют расширение .kum.

Меню «Редактирование» содержит следующие строки:

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

Команда «Закомментировать» добавляет знак комментария | в начало каждой выделенной (хотя бы частично) строки. Команда «Раскомментировать» удаляет знак комментария из начала каждой выделенной строки. Если в начале выделенной строки не было знака комментария, то содержимое этой строки не меняется. Для команд «Закомментировать» и «Раскомментировать» предусмотрены инструментальные клавиши.

Для того, чтобы набрать знак комментария при кириллической раскладке можно набрать аккорд Alt+!.

Меню «Вставка».

3

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

Меню «Выполнение» содержит следующие строки:

· Выполнить непрерывно – начинает (при состоянии системы РЕДАКТИРОВАНИЕ или АНАЛИЗ) или продолжает (при состоянии системы ПАУЗА) выполнение программы. Программа выполняется

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

·«Непрерывно без показа на полях» – аналогично «Выполнить непре-

рывно» — но без вывода на поля вычисляемых значений величин и условий.

·«ШАГ» – Выполняет один ШАГ программы и переходит в режим ПАУЗА. Выполнение команды вызова алгоритма-процедуры трактует как один «ШАГ». При запуске в состоянии РЕДАКТИРОВАНИЕ и АНАЛИЗ останавливается перед выполнением алг-строки основного алгоритма. Строка, которая будет выполняться, выделяется цветом.

4

·«шаг» – аналогично команде «ШАГ». Отличие состоит в обработке команды алгоритма-процедуры и вычислении значения алгорит- ма-функции (если они есть в основной программе). В этих случаях очередным шагом будет выполнение строки-заголовка вспомогательного алгоритма. В дальнейшем команда «шаг» или «ШАГ» приведет к выполнению очередной команды внутри выполняемого вспомогательного алгоритма.

·«До конца алгоритма» – допускается использование только в состоянии ПАУЗА. Программа выполняется непрерывно, но останавливается на первой встретившейся строке кон (как будто перед ней стоит вызов функции пауза).

·«Прервать» – прерывает выполнение программы. Допускается ис-

пользование только в состояниях ВЫПОЛНЕНИЕ и ПАУЗА.

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

Меню «Инфо» содержит следующие строки:

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

«Алгоритмы» – список доступных алгоритмов (включая алгоритмы пользователя).

«Ключевые слова» – список ключевых слов языка КуМир.

«Язык и система КуМир» – полное описание языка КуМир и системы КуМир;

4. Использование области ввода-вывода В начале выполнения программы в поле ввода вывода выводится стро-

ка-заголовок вида (см. рис.3):

> 16:39:48 — Новая программа* — Начало выполнения

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

1. при нормальном завершении:

>16:33:33 — Новая программа* — Выполнение завершено

2. при ошибке выполнения:

>16:32:38 — Новая программа* — ОШИБКА ВЫПОЛНЕНИЯ: утв ложно

3. при прекращении выполнения командой .Прервать.:

>16:30:51 — Новая программа — Выполнение прервано

5

Часть 2. Язык КуМир

1. Общий вид алгоритма без параметров

алг имя

нач

тело алгоритма

кон

Пример:

алг Мой первый алгоритм

нач

вывод «Здравствуй, школа!»

кон

2. Типы величин. Описания величин.

Базовые типы:

Таблицы:

целые цел

целые цел таб

вещественные вещ

вещественные вещ таб

логические лог

логические лог таб

символьные сим

символьные сим таб

литерные лит

литерные лит таб

Пример описания

алг

нач

цел i, j, сим s, вещ таб а[1:50] вещ ф

цел длина, высота, лит текст, цел таб моя таблица[0:10]

кон

3. Арифметически выражения. Присваивание.

Название операции

Форма записи

сложение

x + y

вычитание

x y

умножение

x * y

деление*

x / y

Возведение числа (x) в степень (y)

x ** y

присваивание

x := y

!!! результат деления имеет тип вещ даже при делении целых Пример:

алг

нач

цел x, y, z

вещ f

| Правильная запись

z:=x+y

f:=x/y

f:=x*y

x:=y**4

| Ошибочная запись

Нельзя: цел:=вещ (112385)

z:=x/y

Нельзя: цел:=вещ (112385)

x:=f-y

кон

6

4. Стандартные функции для работы с числами

Название функции

Форма записи

корень квадратный

sqrt(x)

абсолютная величина (x вещественное,

abs(x) и

y – целое)

iabs(y)

остаток от деления x на y (x, y — целые)

mod(x,y)

частное от деления x на y (x, y — целые)

div(x,y)

целая часть числа x

int(x)

5. Операции сравнения.

Название операции

Форма записи

Равно

x = y

не равно

x <> y

Меньше

x<y

Больше

x>y

меньше или равно

x<=y

больше или равно

x>=y

6. Логические операции

Название

операции

Форма записи

Пример

конъюнкция

и

а и б

дизъюнкция

или

а или б

отрицание

не

не a

7. Другие встроенные алгоритмы

Функция

Форма вызова

Код символа в таблице КОИ 8

код(с)

Символ таблицы КОИ 8

символ(х)

8. Команды повторения

Цикл «для»

нц для i от i1 до i2

тело цикла (последовательность команд)

кц

Здесь i — величина типа цел (она называется параметром цикла), а i1 и i2 — целые выражения, т. е. выражения типа цел. При выполнении цикла для тело цикла выполняется последовательно для i=i1, i = i1+1,

. . . , i = i2. Если i1 = i2, то тело цикла выполнится один раз для i = i1. Если же i1 > i2, то тело цикла не выполнится ни разу.

7

Пример:

Алг

нач

цел a, b, i

целтаб t1[1:5] a:=1

b:=5

нц для i от a до b t1[i]:= a*i+b

кц

кон

Цикл «пока»

нц пока условие

тело цикла (последовательность команд)

кц

При выполнении цикла пока КУМИР циклически повторяет следующие дей ствия:

Проверяет записанное после служебного слова пока условие.

Если условие не соблюдается (условие=нет), то выполнение цикла за вершается и КуМир начинает выполнять команды, записанные после кц.

Если же условие соблюдается (условие=да), то КуМир выполняет тело

цикла, снова проверяет условие и т.д. Пример:

алг нач

цел a, b a:=1 b:=5

нц пока a<b

| тело_цикла a:=a+1 b:=b-1

кц

кон

Цикл «кц_при»

нц

тело цикла (последовательность команд)

кц_при условие

Выполняется аналогично циклу «пока», но условие выхода из цикла прове ряется после выполнения тела цикла.

Пример:

Алг нач

цел a, b a:=1 b:=5

нц пока a<b

| тело_цикла a:=a+1 b:=b-1

кц

кон

8

9. Команды ветвления Общий вид команды если то иначе все:

если условие

то серия1 (последовательность команд) иначесерия2 (последовательность команд)

все

Серия2 вместе со служебным словом иначе может отсутствовать. В этом случае команда имеет вид:

если условие

то серия1 (последовательность команд)

все

При выполнении команды если КуМир сначала проверяет условие, запи санное между если и то. При соблюдении этого условия (условие=да) выполняется серия1, в противном случае — серия2 (если она есть), после чего КуМир переходит к выполнению ко манд, записанных после слова все.

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

Пример:

алг

нач

цел a, b цел p, q если a<b

то b:=b-a p:=p+q

иначе a:=a-b q:=q+p

все

кон

9. Операции ввода вывода Формат вызова ввод:

ввод имя

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

9

Формат вызова вывод:

вывод выражение

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

Пример:

Алг

нач

цел a, b, i

целтаб t1[1:5] ввод a

ввод b

нц для i от 1 до 5

ввод t1[i]

кц вывод a

вывод нс вывод b

нц для i от 1 до 5 вывод t1[i], нс

кц

кон

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

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

В информатике используется также понятие «переменная». В математике переменная – это величина, которая в рассматриваемой задаче принимает различные значения.

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

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

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

Алфавит языка КуМир состоит:

  1. из букв латинских от A до Z (прописных или строчных – разницы нет);
  2. из букв кириллических от А до Я (прописных или строчных – разницы нет);
  3. цифр от 0 до 9;
  4. специальных знаков – = + — * ^ / % & ! # $ ( ) [ ] . , ; : | < > » _.

Имя переменной – это последовательность слов, разделенных пробелами, например, альфа бета. Также допускается разделить слова символами @ и _, например, ku@mir, альфа_бета. Имя переменной должно обязательно начинаться с буквы (А, В, С, …; a, b, c; А, Б, В, …; а, б, в, …). За первой буквой могут идти буквы или цифры (АB, A1, …). Переменная типа альфа-бета недопустима, т.к. символ ‘-‘ в названии переменной запрещён. Символьная переменная может содержать любой литеральный символ. Несколько символов вместе образуют слово или строку литеральных символов. Символ или строка, которая помешается в ящик, предназначенный для хранения символьной переменной, заключается в кавычки (простые, либо двойные), например, ‘a’, “y”, ‘Это я’, “Привет, как дела?”. Если строка ограничена простыми кавычками, то она не может содержать простую кавычку внутри строки. Например, строка ‘Привет’ Пока’ недопустима. Аналогичное правило действует для двойных кавычек. Например, строка “Как” дела” также недопустима.

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

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

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

a:=15

b:=«ВАСЯ»

x:=125.5

z:=ax2 + bx + c

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

a:=275

b:=«275»

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

Примечание. Вещественные числа на языке КуМир записываются через точку – 1.5, 3.14 и т.п. Есть и другая форма записи – показательная, например, 1.025E+2, 1.025Е-2. В привычной форме записи это выглядит так: 1.025Е+2 – 1,025х102=102,5; 1.025Е-2 – 1,025х102=0,01025.

Символы «:» и «=» записанные вместе без пробела обозначают операцию присваивания. С точки зрения языка КуМир выражение

x:=x+5

означает следующее: к числу, записанному в переменной x прибавить число 5 и полученный результат поместить в переменную x.

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

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

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

ввод a

В тот момент, когда компьютер достигает в программе этой команды, он выводит на экран сообщение – запрос (и данном случае – знак «|») и ждёт, пока будет набрано какое-нибудь число и нажата клавиша Enter. Если вы ввели, например, число 15, то именно оно становится значением переменной a.

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

Если с клавиатуры мы по ошибке или умышленно введём символ, недопустимый для числа, например, a3, то компьютер ответит на это сообщением об ошибке и попросит повторить ввод. Если вы попытаетесь вовсе увильнуть от ответа, то компьютер также сообщит об ошибке и снова потребует ввести правильные данные (т.е. то или иное число).

Появление знака вопроса на экране дисплея может быть не всегда понятно. Предположим, что мы решаем задачу: «Найти скорость тела при равномерном движении, если время t=5 сек, а пройденный путь S=20 м». Видим на экране знак «|». А что же вводить: значение пути или значения времени?

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

вывод «Время равно «

ввод t

вывод «Пройденный путь равен «

ввод S

После исполнения первой команды на экране дисплея будет

Время равно |

Ясно, что в ответ на запрос необходимо ввести значение времени, будет выполнена команда ввода в переменную t. Сходную ситуацию будем иметь и с исполнением второй команды вывода.

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

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

вывод «Сегодня хорошая погода»

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

Рассмотрим еще один пример использования команды вывод.

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

Например, после того, как компьютер выполнит команду

вывод 6-4

на экран будет выведено число 2.

Операции сложения и вычитания обозначаются с помощью обычных знаков арифметических действий + и . Что же касается знаков умножения и деления, то в КуМир для обозначения этих операций используется соответственно знаки * и /, для возведения в степень – знак **.

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

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

a:=«Миша»

b:=«Иванов»

вывод a,b

на экран будет выведено

МишаИванов

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

вывод a,» «,b

то получим то, что нужно:

Миша Иванов

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

Например, команды

вывод «A»

вывод «B»

выводят на экран

AB

в то время как команды

вывод «A»,нс

вывод «B»

выводят на экран

A

B

Более коротко можно записать

вывод «A»,нс,«B»

Встроенные функции

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

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

Функция преобразования в целое int(x)

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

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

алг Целое число

нач

. вещ x

. цел y

. x:=2.8

. y:=int(x)

. вывод y

кон

получим:

2

В случае отрицательного значения аргумента, работа преобразователя int(x) похитрее. Так, если на вход поступит число -2.6, то на выходе будем иметь -3, поскольку именно -3 является наибольшим целым числом, меньшим -2.6.

Функция нахождения абсолютного значения abs(x)

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

Например, после выполнения программы

алг Абсолютная величина числа

нач

. вещ x

. цел y

. x:=-5.13

. y:=abs(x)

. вывод y

кон

получим:

5.13

Другие примеры встроенных функции мы рассмотрим ниже.

Выражения

Слово «выражение» в русском языке имеет несколько значений. Это может быть внешнее проявление чего-нибудь («это стихотворение ты прочитал с выражением»), внешний вид («у тебя сегодня грустное выражение лица»), оборот речи («Он не стесняется в выражениях!»).

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

a/-b

Нельзя также опускать знаки действий. Например, запись

6a-b

будет ошибочной. Правильная запись имеет вид:

6*a-b

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

a/(4*b-c)

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

Если выражение содержит подряд стоящие операции одинакового приоритета (например, сложение и вычитание, умножение и деление), то они выполняются по порядку слева направо. Например, выражение на языке КуМир

a+b/c*d

равносильно следующей алгебраической формуле a+(b/c)d.

Если бы мы захотели получить на языке КуМир выражение, соответствующее формуле a+(b/(c/d)), то можно было бы использовать скобки

a+b/(c*d)

или записать в виде

a+b/c/d

Обратите еще раз внимание на типичные ошибки при записи выражений.

  1. Нельзя писать два знака операций подряд. Неправильная запись: a*-5
    Правильная запись:
    a*(-5)
  2. Нельзя опускать знак умножения. Например, в школьной алгебре запись 3x является вполне законной, на языке же КуМир мы должны писать
    3*x
    иначе компьютер выдаст сообщение об ошибке. Выражение
    x3
    он воспримет как имя некоторой переменной.

Наверх

Понравилась статья? Поделить с друзьями:
  • Неравномерное мелирование как исправить
  • Неравномерно осветлились волосы как исправить
  • Неравномерно окрашенные волосы как исправить
  • Непрямой массаж сердца прекращается найдите ошибочный ответ
  • Непростительная ошибка как пишется слитно или раздельно