Ошибка выполнения строка вне алгоритма

Содержание

  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] Для коротенькой программы переразбор происходит мгновенно. Для очень длинной программы на не очень новом компьютере переразбор может занять несколько секунд. Зеленый сигнал светофора показывает, что переразбор закончен. Для коротких программ на светофор можно не обращать внимания.

Источник

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

  1. Находит в памяти
    алгоритм с указанным именем.

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

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

  4. Встретив строку
    кон,
    проверяет,
    достигнута ли цель алгоритма, указанная
    в строке надо
    (см. примечание
    к п. 2).

  5. Заканчивает
    выполнение алгоритма.

Пример.
Компьютер
получает приказ исполнить алгоритм
«ход конем».

  1. Компьютер находит
    в памяти алгоритм А1.

  2. В строке дано
    записан
    комментарий — компьютер его пропускает.

  3. Компьютер
    последовательно командует Роботу
    вправо,
    вправо, вниз
    .
    Робот
    исполняет
    эти команды.

  4. В строке надо
    помещен
    комментарий — компьютер его пропускает.

  5. Компьютер
    заканчивает выполнение алгоритма «ход
    конем».

7.6. Ошибки в алгоритмах

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

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

Иногда логическая
ошибка может привести к отказу
— невозможности
выполнить очередную команду. Например,
при попытке выполнить алгоритм «ход
конем» (А1) в обстановке, изображенной
на рисунке 2, компьютер попытается
последовательно вызвать команды вправо,
вправо, вниз
.
Однако вторую команду вправо
Робот выполнить
не сможет — возникает отказ. Получив
от исполнителя сигнал отказа, компьютер
сообщает об ошибке и прекращает выполнение
алгоритма.

Рис. 2

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

Ошибки в алгоритме
не всегда приводят к отказам. Возможны
логические ошибки, не обнаруживаемые
компьютером ни до, ни во время выполнения
алгоритма. Так, если в алгоритме А1 мы
вместо вправо
случайно напишем влево,
то компьютер выполнит алгоритм, Робот
из клетки А
переместится в клетку В (см. рис. 2), но
никаких сообщений об ошибках мы не
получим (да и откуда компьютеру знать,
куда мы на самом деле хотели переместить
Робота!).

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

Таблица 1. Ошибки
в алгоритмах.

Смысл ошибки

Название

Пример

1

Цель не достигнута

Логическая

Робот не попал
куда надо

2

Команда не входит
в СКИ

Синтаксическая

наверх, направо

3

Авария при попытке
исполнения команды

Семантическая
(отказ)

Попытка пройти
сквозь стену

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

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

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

6.09.2013

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

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

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

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

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

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

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

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

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

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

алг

нач

кон

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

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

Автор:

Содержание

  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] Для коротенькой программы переразбор происходит мгновенно. Для очень длинной программы на не очень новом компьютере переразбор может занять несколько секунд. Зеленый сигнал светофора показывает, что переразбор закончен. Для коротких программ на светофор можно не обращать внимания.

Источник

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

  1. Находит в памяти
    алгоритм с указанным именем.

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

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

  4. Встретив строку
    кон,
    проверяет,
    достигнута ли цель алгоритма, указанная
    в строке надо
    (см. примечание
    к п. 2).

  5. Заканчивает
    выполнение алгоритма.

Пример.
Компьютер
получает приказ исполнить алгоритм
«ход конем».

  1. Компьютер находит
    в памяти алгоритм А1.

  2. В строке дано
    записан
    комментарий — компьютер его пропускает.

  3. Компьютер
    последовательно командует Роботу
    вправо,
    вправо, вниз
    .
    Робот
    исполняет
    эти команды.

  4. В строке надо
    помещен
    комментарий — компьютер его пропускает.

  5. Компьютер
    заканчивает выполнение алгоритма «ход
    конем».

7.6. Ошибки в алгоритмах

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

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

Иногда логическая
ошибка может привести к отказу
— невозможности
выполнить очередную команду. Например,
при попытке выполнить алгоритм «ход
конем» (А1) в обстановке, изображенной
на рисунке 2, компьютер попытается
последовательно вызвать команды вправо,
вправо, вниз
.
Однако вторую команду вправо
Робот выполнить
не сможет — возникает отказ. Получив
от исполнителя сигнал отказа, компьютер
сообщает об ошибке и прекращает выполнение
алгоритма.

Рис. 2

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

Ошибки в алгоритме
не всегда приводят к отказам. Возможны
логические ошибки, не обнаруживаемые
компьютером ни до, ни во время выполнения
алгоритма. Так, если в алгоритме А1 мы
вместо вправо
случайно напишем влево,
то компьютер выполнит алгоритм, Робот
из клетки А
переместится в клетку В (см. рис. 2), но
никаких сообщений об ошибках мы не
получим (да и откуда компьютеру знать,
куда мы на самом деле хотели переместить
Робота!).

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

Таблица 1. Ошибки
в алгоритмах.

Смысл ошибки

Название

Пример

1

Цель не достигнута

Логическая

Робот не попал
куда надо

2

Команда не входит
в СКИ

Синтаксическая

наверх, направо

3

Авария при попытке
исполнения команды

Семантическая
(отказ)

Попытка пройти
сквозь стену

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

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

Содержание

  1. Описания простых величин
  2. Описания таблиц
  3. Область действия описаний
  4. Знакомство с языком и системой КуМир путем решения задач С2
  5. Типы величин
  6. Понятие «слово»
  7. Ключевые слова
  8. Особенности имен в языке КуМир
  9. Вопросы для самопроверки

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

Рассмотрим способы описания простых и табличных величин.

Описания простых величин

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

  • цел длина, ширина
  • лит примечание

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

Описания таблиц

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

  • вещтаб рост[1: 10]
  • цел таб классы [1:4, 1:11]

В первой строке описывается таблица рост , состоящая из 10 элементов вещественного типа. Индексы элементов этой таблицы принимают значения от 1 до 10.

Во второй строке описывается двумерная (4 строки и 11 столбцов) таблица классы , в которой 44 элемента.

Область действия описаний

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

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

Если величина описана в теле алгоритма, то ее можно использовать после места описания только в теле этого алгоритма.

  • цел длина, ширина
  • алг
  • нач
  • Команды алгоритма
  • вещ диагональ
  • | Область действия описания величины диагональ
  • кон

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

Copyright © 2014-2021, Урок информатики
Все права защищены

Источник

Знакомство с языком и системой КуМир путем решения задач С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] Для коротенькой программы переразбор происходит мгновенно. Для очень длинной программы на не очень новом компьютере переразбор может занять несколько секунд. Зеленый сигнал светофора показывает, что переразбор закончен. Для коротких программ на светофор можно не обращать внимания.

Источник

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

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

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

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

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

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

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

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

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

Типы величин

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

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

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

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

  • вещ а = 10.8; цел в
  • в := int(а)
  • вывод в
  • сим – символьный тип, значением может быть любой литеральный символ;
  • лит – значением может быть строка литеральных символов.

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

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

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

Copyright © 2014-2021, Урок информатики
Все права защищены

Источник

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

Понятие «слово»

Слово в языке КуМир представляет собой последовательность разрешенных (словарных) символов . К словарным символам относятся:

  • буквы (кириллические и латинские, прописные и строчные);
  • цифры;
  • два специальных знака: @ _.

Примеры допустимых слов: длина, сумма1, 3кг, MacOS, admin@mail_ru

Примеры недопустимых слов: альфа-123, а%в, С++

Ключевые слова

Ключевые слова — это слова, которые имеют специальное значение в языке программирования . В языке КуМир к зарезервированным словам относятся

  • алг, нач, кон, исп, кон_исп, дано, надо, арг, рез, аргрез, знач, цел, вещ, лог, сим, лит, таб, целтаб, вещтаб, логтаб, литтаб, и, или, не, да, нет, утв, выход, ввод, вывод, нс, если, то, иначе, все, выбор, при, нц, кц, кц_при, раз, пока, для, от, до, шаг.

Особенности имен в языке КуМир

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

Имена в Кумире могут быть присвоены величинам, таблицам, алгоритмам и исполнителям.

Примеры допустимых имен: m, периметр, площадь квадрата, Сумма10, Класс_10

Примеры недопустимых имен: 1S, а&в

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

  • лог А, пятый урок история = да
  • А := не пятый урок история
  • А := пятый не урок история
  • А := пятый урок не история

Вопросы для самопроверки

  1. Какие символы относятся к словарным символам в языке Кумир?
  2. Что представляет собой слово в Кумире?
  3. Какие слова называются ключевыми?
  4. Какими особенностями обладает имя в языке Кумир?

Copyright © 2014-2021, Урок информатики
Все права защищены

Источник

 Система подготовки обучающихся к ОГЭ по информатике на примере решения задач по алгоритмизации в среде «КУМИР»  Гребнева Татьяна Васильевна,  учитель информатики МБОУ г. Мурманска СОШ № 33

Система подготовки обучающихся к ОГЭ по информатике на примере решения задач по алгоритмизации в среде «КУМИР»

Гребнева Татьяна Васильевна,

учитель информатики

МБОУ г. Мурманска СОШ № 33

Задание 15.1  Разработка алгоритма для учебного исполнителя «Робот»

Задание 15.1 Разработка алгоритма для учебного исполнителя «Робот»

Задание 15.1 Традиционно заключается в разработке алгоритма для учебного исполнителя «Робот». Описание команд исполнителя и синтаксиса управляющих конструкций соответствует общепринятому школьному алгоритмическому языку, также оно дано в тексте задания. Формулировке задания предшествует описание команд исполнителя и синтаксиса записи алгоритмических конструкций ветвления и цикла, поэтому задание может быть выполнено даже теми школьниками, которые не знакомы с используемым синтаксисом языка, но владеют основами алгоритмизации. На бесконечном поле имеются стены, которые робот должен обойти, закрасить нужные клетки и не разбиться. Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться. Учащиеся записывают алгоритм в текстовом редакторе и сохраняют в текстовом файле.

Задание 15.1

  • Традиционно заключается в разработке алгоритма для учебного исполнителя «Робот». Описание команд исполнителя и синтаксиса управляющих конструкций соответствует общепринятому школьному алгоритмическому языку, также оно дано в тексте задания.
  • Формулировке задания предшествует описание команд исполнителя и синтаксиса записи алгоритмических конструкций ветвления и цикла, поэтому задание может быть выполнено даже теми школьниками, которые не знакомы с используемым синтаксисом языка, но владеют основами алгоритмизации.
  • На бесконечном поле имеются стены, которые робот должен обойти, закрасить нужные клетки и не разбиться. Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться.
  • Учащиеся записывают алгоритм в текстовом редакторе и сохраняют в текстовом файле.

Основные ошибки при выполнении задания 15.1 Представленные алгоритмы решения работают только в частных случаях. Использование цикла «n раз» вместо цикла «пока». Использование конструкций ветвления вместо конструкции цикла. Представлены линейные алгоритмы решения. Происходит «зацикливание» (алгоритм не завершается). Закрашены лишние клетки. Закрашена лишняя клетка / Не закрашена нужная клетка. Столкновение со стеной (Робот разбивается). Алгоритм содержит бесконечные циклы. Некорректное использование операторов цикла – отсутствует начало цикла (НЦ) или конец цикла (КЦ).

Основные ошибки при выполнении задания 15.1

  • Представленные алгоритмы решения работают только в частных случаях.
  • Использование цикла «n раз» вместо цикла «пока».
  • Использование конструкций ветвления вместо конструкции цикла.
  • Представлены линейные алгоритмы решения.
  • Происходит «зацикливание» (алгоритм не завершается).
  • Закрашены лишние клетки.
  • Закрашена лишняя клетка / Не закрашена нужная клетка.
  • Столкновение со стеной (Робот разбивается).
  • Алгоритм содержит бесконечные циклы.
  • Некорректное использование операторов цикла – отсутствует начало цикла (НЦ) или конец цикла (КЦ).

Проблема Большая часть затруднений учащихся связана с недостаточностью умений смыслового чтения : представленные алгоритмы решения работают только при конкретных размерах коридора; робот закрашивает клетки, например, слева от стены, а не справа; алгоритм работает только для конкретной обстановки. По-прежнему учащиеся показывают недостаточные умения в использовании конструкции цикла «ПОКА» с условием : путают с конструкцией ветвления «ЕСЛИ» или неверно указывают условие выхода из цикла.

Проблема

Большая часть затруднений учащихся связана с недостаточностью умений смыслового чтения :

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

По-прежнему учащиеся показывают недостаточные умения в использовании конструкции цикла «ПОКА» с условием :

  • путают с конструкцией ветвления «ЕСЛИ» или неверно указывают условие выхода из цикла.

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

Пример формулировки задания 15.1

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

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

Напишите для Робота алгоритм,

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

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

Важно учитывать:

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

Правильное решение:

Правильное решение:

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

Правильное решение:

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

Критерии оценивания:

Критерии оценивания:

Разбор возможных ошибок

Разбор возможных ошибок

Ошибка № 1 :  ширина прохода ровно      1 клетка  За такое решение: 0 баллов .

Ошибка № 1 : ширина прохода ровно 1 клетка

За такое решение: 0 баллов .

Ошибка № 2 : цикл n раз  За такое решение: 0 баллов .

Ошибка № 2 : цикл n раз

За такое решение: 0 баллов .

Ошибка № 3 : ветвление вместо цикла  За такое решение: 0 баллов .

Ошибка № 3 : ветвление вместо цикла

За такое решение: 0 баллов .

Ошибка № 4 : линейный алгоритм  За такое решение: 0 баллов .

Ошибка № 4 : линейный алгоритм

За такое решение: 0 баллов .

Ошибка № 5 : Задача решена, но при возвращении в исходную позицию  произведена проверка препятствия сверху За такое решение: 0 баллов . Здесь надо помнить, что поле Робота бесконечно ! Поэтому произойдёт зацикливание последнего цикла. Если в условии задачи не указано конечное расположение Робота, а учащийся возвращает его в исходную позицию, то это за ошибку не считается (п ри условии корректной остановки).

Ошибка № 5 : Задача решена, но при возвращении в исходную позицию произведена проверка препятствия сверху

За такое решение: 0 баллов .

Здесь надо помнить, что поле Робота бесконечно !

Поэтому произойдёт зацикливание последнего цикла.

Если в условии задачи не указано конечное расположение Робота, а учащийся возвращает его в исходную позицию, то это за ошибку не считается (п ри условии корректной остановки).

Ошибка № 6 : Закрашены лишние клетки Здесь надо помнить, что по условию поле Робота бесконечно и ширина прохода может быть бесконечно большой ! Поэтому в результате увеличения ширины прохода будет закрашено более 10 клеток.  За такое решение: 0 баллов .

Ошибка № 6 : Закрашены лишние клетки

Здесь надо помнить, что по условию поле Робота бесконечно и ширина прохода может быть бесконечно большой !

Поэтому в результате увеличения ширины прохода будет закрашено более 10 клеток.

За такое решение: 0 баллов .

Ошибка № 7 :  Закрашена лишняя клетка/     Не закрашена нужная клетка Данное решение на 1 балл :  Робот не разбивается;  закрашено не более 10 лишних клеток;  не закрашено не более 10 клеток, которые должны быть закрашены.

Ошибка № 7 : Закрашена лишняя клетка/ Не закрашена нужная клетка

Данное решение на 1 балл :

  • Робот не разбивается;
  • закрашено не более 10 лишних клеток;
  • не закрашено не более 10 клеток, которые должны быть закрашены.

Ошибка № 8 : Столкновение со стеной ОШИБКА ВЫПОЛНЕНИЯ: Робот - нельзя сквозь стену ( 8061 )  За такое решение: 0 баллов .

Ошибка № 8 : Столкновение со стеной

ОШИБКА ВЫПОЛНЕНИЯ:

Робот — нельзя сквозь стену ( 8061 )

За такое решение: 0 баллов .

Правильное решение:

Правильное решение:

Рекомендации по проверке задания 15.1

Рекомендации по проверке задания 15.1

Задание 15.1 Представление в задании команд исполнителя и синтаксиса управляющих конструкций соответствует общепринятому школьному алгоритмическому языку. Использование свободно распространяемой среды учебного исполнителя, например, среду Кумир (сайт http:// www.niisi.ru/kumir ) или другую среду с аналогичными возможностями исполнителя «Робот». Синтаксис команд используемой среды может отличаться от синтаксиса, описанного в условии. Результатом выполнения является файл, подготовленный в среде учебного исполнителя , содержащий запись алгоритма, являющегося решением задания или  текстовый файл , содержащий запись алгоритма.

Задание 15.1

  • Представление в задании команд исполнителя и синтаксиса управляющих конструкций соответствует общепринятому школьному алгоритмическому языку.
  • Использование свободно распространяемой среды учебного исполнителя, например, среду Кумир (сайт http:// www.niisi.ru/kumir ) или другую среду с аналогичными возможностями исполнителя «Робот».
  • Синтаксис команд используемой среды может отличаться от синтаксиса, описанного в условии.
  • Результатом выполнения является файл, подготовленный в среде учебного исполнителя , содержащий запись алгоритма, являющегося решением задания или текстовый файл , содержащий запись алгоритма.

Рекомендации по оцениванию Завершает ли работу проверяемый алгоритм (то есть верно ли, что алгоритм не содержит бесконечных циклов)? Остается ли робот цел в результате исполнения алгоритма (то есть верно ли, что Робот не разрушается от столкновения со стеной)? Полностью ли Робот выполняет поставленную задачу, то есть закрашивает все требуемые клетки .  Если ответы утвердительные на все вопросы, то есть алгоритм всегда заканчивает свою роботу , Робот не разрушается  при исполнении алгоритма и полностью выполняет поставленную в условии задачу, то задание оценивается в 2 балла.

Рекомендации по оцениванию

  • Завершает ли работу проверяемый алгоритм (то есть верно ли, что алгоритм не содержит бесконечных циклов)?
  • Остается ли робот цел в результате исполнения алгоритма (то есть верно ли, что Робот не разрушается от столкновения со стеной)?
  • Полностью ли Робот выполняет поставленную задачу, то есть закрашивает все требуемые клетки .

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

Источники Система программирования КуМир https://www.niisi.ru/kumir/books.htm К.Ю. Поляков Кумир для подготовки к ОГЭ. Практикум http://kpolyakov.spb.ru/school/kumir.htm Программирование в системе Кумир https://sites.google.com/site/fakultativinformatika/ Денис Кириенко (Архив с курсом заданий для практикума) http://server.179.ru/wiki/?page=DenisKirienko/Kumir https://server.179.ru/wiki/?show_files=1&page=Denis_Kirienko/Kumir#header-files Удалова Т.Л. (Варианты для Робота) http://licey.net/free/18-programmirovanie_na_yazyke_kumir/70-sistema_programmirovaniya_kumir.html «Информатика. Кумир» Удалова Т.Л. https://books.google.ru/books?id=CdAqevFDPa4C&printsec=frontcover&hl=ru#v=onepage&q&f=false

Источники

Система программирования КуМир

https://www.niisi.ru/kumir/books.htm

К.Ю. Поляков Кумир для подготовки к ОГЭ. Практикум

http://kpolyakov.spb.ru/school/kumir.htm

Программирование в системе Кумир

https://sites.google.com/site/fakultativinformatika/

Денис Кириенко (Архив с курсом заданий для практикума)

http://server.179.ru/wiki/?page=DenisKirienko/Kumir

https://server.179.ru/wiki/?show_files=1&page=Denis_Kirienko/Kumir#header-files

Удалова Т.Л. (Варианты для Робота)

http://licey.net/free/18-programmirovanie_na_yazyke_kumir/70-sistema_programmirovaniya_kumir.html

«Информатика. Кумир» Удалова Т.Л.

https://books.google.ru/books?id=CdAqevFDPa4C&printsec=frontcover&hl=ru#v=onepage&q&f=false

Как в кумир исправит строка вне алгоритма

По традиции первой программой на изучаемом языке программирования становится программа вывода строки «Hello, World!». Хотя КуМир чаще всего воспринимают как среду программирования для исполнителей Робот и Чертежник, не будем отступать от общего правила, и напишем программу вывода строки приветствия, но в русском переводе.

Итак, наша задача: написать программу, которая выводит строку «Привет, Мир!».

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

Давайте разбираться. Первая строка » использовать Робот » закомментирована, на это указывает символ » | » и серый цвет шрифта.

» | » — знак комментария, т.е. строка, в начале которой стоит этот символ, не воспринимается системой программным кодом. Но только одна строка.
алг, нач, кон — служебные слова, значение которых очевидно: алгоритм, начало, конец. Они служат для оформления программы. Часть алгоритма до служебного слова нач называют заголовком, а часть между нач и кон — телом программы. Можно вспомнить, что в языке Паскаль имеется похожая структура, а именно
program
.
begin
.
end.
Называем программу «первая_программа» и вводим между нач и кон следующую строку вывод «Привет, мир!»
Все, программа написана, можно ее запустить, что мы и делаем, после чего видим следующее:

Давайте разберем все детально. Как видите из рисунка, название программы выделяется синим цветом. Интересно, что система КуМир лояльно отнеслась к тому, что наше название состоит из двух слов. Однако, настоятельно рекомендую называть программу одним словом. Если хотите иметь название из двух или более слов, то ставьте между этими словами знак подчеркивания, т.е. «_». Другие языки программирования не допускают в названии программ пробелов.

Далее, команда вывод предназначена для вывода информации в поле вывода (см. рисунок). Запуск программы осуществляется активной на рисунке кнопкой на панеле инструментов системы, видна всплывающая подсказка.

О назначении копок на панеле инструментов следует сказать немного подробнее.

О первой («Выполнить непрерывно») мы уже сказали. Следующаяя служит для запуска программы без показа на полях. Третья из «запускаемых» конопок — ШАГ, т.е. при нажатии на нее выполняется одна строка программы. И последняя «Выполнить до конца алгоритма» служит для того, чтобы в любой момент при пошаговом выполнении, заставить выполняться программу до конца.

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

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

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

В КуМире используются несколько типов данных:

  • цел — принимает целые значения от -2147483647 до 2147483647
  • вещ — принимает вещественные значения между −21023 и 21023
  • лог — принимает значения да или нет (внутреннее представление – да=1, нет=0)
  • сим — значением может быть любой литеральный символ (практически любой символ)
  • лит — значением может быть строка литеральных символов

Мы использовали тип литерный для переменной имя . В системе КуМир разрешено написание имен переменных кириллицей.

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

После выполнения этой команды система предлагает ответить на вопрос «Как тебя зовут?». Выполнение программы остановлено до тех пор, пока пользователь не введет литерную строку (свое имя) и не нажмет Enter. Обратите внимание, что после знака вопроса в строке стоит пробел. Если его не будет, то после знака вопроса и введенным именем пробела не будет. Хотя это не играет особой роли, но старайтесь писать программы так, чтобы результаты выводились в правильном виде.

Ввод строки с именем организуется командой ввод . После нажатия на Enter введенная строка будет значением переменной имя . После этого формируется строка, которая выводится в окно вывода. Если говорить подробно, то это выглядит так: выводится «Привет » (с пробелом в конце), после чего выводится значение переменной имя , а затем и «!». Обратите внимание, что между константами и переменными стоят запятые. В конце строки стоит нс (новая строка). На следующей строке выводится сообщение «А я — система КуМир». Общий вид показан на рисунке.

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

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

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

Задание : Если вы еще не устали, то предлагаем опытным путем разобраться в вопросе о соединении строк, т.к. конкатенации. Каким образом можно соединить две или более строки.

Основные понятия и команды в программе КУМИР

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

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

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

В разных языках программирования такие единицы называются по-разному, в КуМире такая единица называется «Исполнитель».

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

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

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

ОБЩИЙ ВИД ОПИСАНИЯ АЛГОРИТМА алг имя_алгоритма тип_алгоритма дано условие_применимости алгоритма надо цель_выполнения_алгоритма нач последовательность команд кон Описание алгоритма состоит из: Заголовка (часть до служебного слова нач ) Тела алгоритма (часть словами нач и кон )

ОБЩИЙ ВИД ОПИСАНИЯ АЛГОРИТМА

алг имя_алгоритма тип_алгоритма

  • даноусловие_применимости алгоритма
  • надоцель_выполнения_алгоритма

последовательность команд

Описание алгоритма состоит из:

Заголовка (часть до служебного слова нач )

Тела алгоритма (часть словами нач и кон )

Блок-схема алгоритма алг имя_алгоритма нач тело алгоритма кон НАЧАЛО ТЕЛО АЛГОРИТМА КОНЕЦ

алг имя_алгоритма

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

ТИПЫ ВЕЛИЧИН ИСПОЛЬЗУЕМЫХ В ПРОГРАММЕ Типы величин Как пишутся в программе Целые Пример описания цел Вещественные 1 2 3 4 и т.д. вещ Литерные 0,5 2,3 1,345 лит а б в г В записи имен переменных могут быть использованы любые символы русского и латинского алфавита, а так же цифры. Имя не должно начинаться с цифры. На длину имен в системе КуМир строгих ограничений не накладывается, но для удобства редактирования и во избежание переполнения строк переменным и алгоритмам не стоит давать слишком длинные имена. Обычно имя подбирается так, чтобы можно было понять, для чего предназначен алгоритм. При редактировании программ также следует помнить о том, что русские и латинские буквы, сходные по написанию, различаются ЭВМ. Например, если при описании переменной с именем А пользователь набрал

ТИПЫ ВЕЛИЧИН ИСПОЛЬЗУЕМЫХ В ПРОГРАММЕ

Типы величин

Как пишутся в программе

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

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

1 2 3 4 и т.д.

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

Арифметические операции и стандартные функции для работы с числами Название операции Как пишутся в программе Сложение а+б Вычитание а-б Умножение а*б Деление а/б Возведение в степень а**б Присваивание а:=б

Арифметические операции и стандартные функции для работы с числами

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

Как пишутся в программе

Возведение в степень

Присваивание

б Меньше или равно a Больше или равно a=б » width=»640″

ОПЕРАЦИИ СРАВНЕНИЯ ЧИСЕЛ

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

Как пишутся в программе

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

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

ВСТРОЕННЫЕ ФУНКЦИИ Обращение Функция Типы SIN (X) COS (X) TG (X) EXP (X) LN (X) ABS (X) SQRT (X) MOD (A, B) INT (X) ПИ Аргумента синус х косинус х тангенс х экспонента х (е х ) натур. логарифм х модуль х корень квадратный х остаток от деления (А на В) целая часть числа число

ВСТРОЕННЫЕ ФУНКЦИИ

SIN (X) COS (X) TG (X) EXP (X) LN (X) ABS (X) SQRT (X) MOD (A, B) INT (X) ПИ

синус х косинус х тангенс х экспонента х (е х ) натур. логарифм х модуль х корень квадратный х остаток от деления (А на В) целая часть числа число «пи» — 3,14159

вещ вещ вещ вещ вещ вещ вещ вещ, цел вещ вещ

вещ вещ вещ вещ вещ вещ вещ цел цел без аргум

КОМАНДЫ АЛГОРИТМИЧЕСКОГО ЯЗЫКА Вначале алгоритма объявляются перемен-ные и константы , которым будут присваи-ваться значения необходимые для расчетов вещ а, р Сколько величин участвует в работе программы - столько и должно быть объявлено их вначале.

КОМАНДЫ АЛГОРИТМИЧЕСКОГО ЯЗЫКА

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

вещ а, р

Сколько величин участвует в работе программы — столько и должно быть объявлено их вначале.

КОМАНДЫ АЛГОРИТМИЧЕСКОГО ЯЗЫКА Например команда: Вывод “введите сторону квадрата” в процессе работы программы будет отображаться в нижнем окне: ВЫВОД диалога

КОМАНДЫ АЛГОРИТМИЧЕСКОГО ЯЗЫКА

Например команда:

Вывод “введите сторону квадрата”

в процессе работы программы будет отображаться в нижнем окне:

ВЫВОД диалога

КОМАНДЫ АЛГОРИТМИЧЕСКОГО ЯЗЫКА Например команда: ввод а после нажатия клавиши Enter будет отображена в правом окне, ВВОД данных то есть в буфере обмена (в памяти) программы.

КОМАНДЫ АЛГОРИТМИЧЕСКОГО ЯЗЫКА

Например команда:

после нажатия клавиши Enter будет отображена в правом окне,

ВВОД данных

то есть в буфере обмена (в памяти) программы.

КОМАНДЫ АЛГОРИТМИЧЕСКОГО ЯЗЫКА Например команда: р:=а*4 это ПРОЦЕСС, читается так: значению р присваивается переменная а умноженная на число 4 Выполнение операций

КОМАНДЫ АЛГОРИТМИЧЕСКОГО ЯЗЫКА

Например команда:

это ПРОЦЕСС, читается так: значению р присваивается переменная а умноженная на число 4

Выполнение операций

КОМАНДЫ АЛГОРИТМИЧЕСКОГО ЯЗЫКА Например команда: вывод “периметр =” , р в процессе работы программы будет отображаться в нижнем окне, ВЫВОД данных то есть будет выводиться результат работы программы.

КОМАНДЫ АЛГОРИТМИЧЕСКОГО ЯЗЫКА

Например команда:

вывод “периметр =” , р

в процессе работы программы будет отображаться в нижнем окне,

ВЫВОД данных

то есть будет выводиться результат работы программы.

КОМАНДЫ АЛГОРИТМИЧЕСКОГО ЯЗЫКА ВЕТВЛЕНИЕ если условие то серия 1 иначе серия 2 все если условие то серия 1 все ЦИКЛИЧЕСКИЕ нц число повторений раз тело цикла кц Ветвление бывает полное и неполное. Цикл с предусловием (цикл пока) - цикл, выполнение которого повторяется, пока истинно условие цикла. Служебные слова НЦ (начало цикла) и КЦ (конец цикла)пишутся строго одно под другим и соединяются вертикальной чертой. Правее этой черты записывается повторяемая последовательность команд (тело цикла). Цикл с параметром (цикл для) - повторное выполнение тела цикла, пока целочисленный параметр пробегает множество всех значений от начального ( i1 ) до конечного ( in ): нц пока условие тело цикла кц

КОМАНДЫ АЛГОРИТМИЧЕСКОГО ЯЗЫКА

если условие

  • тосерия 1
  • иначесерия 2

если условие

  • тосерия 1

нц число повторений раз

  • тело цикла

Ветвление бывает полное и неполное.

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

Цикл с параметром (цикл для) — повторное выполнение тела цикла, пока целочисленный параметр пробегает множество всех значений от начального ( i1 ) до конечного ( in ):

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

  • тело цикла

КОМАНДЫ АЛГОРИТМИЧЕСКОГО ЯЗЫКА нс, Служебное слово ( новая строка ) указывает ЭВМ, что информация должна выводиться на новую строку.

КОМАНДЫ АЛГОРИТМИЧЕСКОГО ЯЗЫКА

Служебное слово ( новая строка ) указывает ЭВМ, что информация должна выводиться на новую строку.

-80%

KumirL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Команды исполнителя робот

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

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

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

Начать работу со стандартным Исполнителем Робот можно перейдя по ссылке. Прочитать подробнее о работе с исполнителем можно на странице «Исполнитель робот».

Команды, перемещающие робота

Для перемещения робота служат четыре команды.

ВВЕРХ

ВЛЕВО

ВПРАВО

Команды проверки

СЛЕВА СВОБОДНО

СПРАВА СВОБОДНО

СВЕРХУ СВОБОДНО

СНИЗУ СВОБОДНО

Цикл «ПОКА»

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

Рассмотрим следующее задание:

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

Простейшим вариантом цикла является цикл с условием, который описывается с помощью трех ключевых слов:

Ключевое слово «ПОКА» ставится сразу после «НЦ». После «ПОКА» используется одна из команд проверки, описанных выше.

В нашем случае мы дадим задание роботу, чтобы он проверял в цикле, свободно ли место справа от него. Внутри циклической конструкции мы зададим всего одну команду — «вперед». Цикл будет выполняться пока условие «справа свободно» будет истинным. Когда робот дойдет до стены, цикл остановится.

Данную конструкцию можно написать и в одну строчку:

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

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

«НЕ» следует ставить перед командой проверкой, но не внутри нее. Например, «справа не свободно» будет неправильным написанием, а «не справа свободно» — правильным.

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

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

Круглые скобки

Закрашивание клеток

ЗАКРАСИТЬ

Условие

ЕСЛИ . ТО . ВСЕ

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

Робот стоит возле стены. В стене есть проход. Сверху тоже есть стена. Длины стен и прохода неизвестны. Нам необходимо закрасить клетки, помеченные лиловым цветом.

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

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

Алгоритмические конструкции могут быть вложенными друг в друга. В предыдущем примере мы рассмотрели условие, вложенное в цикл.

Вложенными могут быть циклы. То есть один цикл может находиться внутри другого цикла.

Условия могут также быть вложенными одно в другое.

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

Отладка¶

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

  1. Синтаксические ошибки — ошибки, обнаруживаемые Python в ходе трансляции
    исходного кода в байт-код. Такие ошибки вызваны тем, что что-то не так с
    синтаксисом программы. Пример: забыв поставить двоеточие в конце строки def,
    получим такое сообщение об ошибке: SyntaxError: invalid syntax.
  2. Ошибки времени выполнения — ошибки, возникающие при выполнении программы
    в случае, если происходит что-то неожиданное. Большинство ошибок времени выполнения
    включают информацию о том, где произошла ошибка и какие функции при этом выполнялись.
    Пример: бесконечная рекурсия в конце концов приводит к ошибке времени выполнения
    из-за превышения максимальной разрешенной глубины рекурсии.
  3. Семантические ошибки — логические ошибки в программе, которая компилируется и выполняется,
    но делает не то, что от нее ожидается. Пример: Выражение может быть вычислено не в том
    порядке, как ожидает программист, не позаботившийся о скобках.

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

Синтаксические ошибки¶

Синтаксическую ошибку легко исправить, как только вы поняли, в чем она состоит. К сожалению, сообщения об ошибках часто оказываются не очень полезны. Наиболее частые сообщения SyntaxError: invalid syntax и SyntaxError: invalid token не очень информативны.

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

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

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

Вот несколько советов, как избежать самых распространенных синтаксических ошибок:

  1. Убедитесь, что вы не используете одно из ключевых слов Python как идентификатор
    (имя переменной или функции).
  2. Проверьте, что не забыли поставить двоеточие в конце заголовка каждого составного
    предложения, включая for, while, if и def.
  3. Проверьте, что отступы в вашей программе сделаны единообразно. Можете
    пользоваться пробелами или табуляцией, но лучше не смешивать одно с другим.
    Все строки каждого уровня вложенности кода должны иметь одинаковый отступ.
  4. Убедитесь, что все строковые литералы в коде имеют открывающие и закрывающие кавычки.
  5. Если в программе имеются строковые литералы в тройных кавычках,
    занимающие несколько строк в файле, убедитесь, что они корректно
    завершены. Незавершенная строка может привести к ошибке invalid token в конце
    вашей программы, или к тому, что последующая часть программы будет восприниматься
    как продолжение строки (пока не встретится другая строка). В последнем случае
    может даже не быть сообщения об ошибке!
  6. Незакрытая скобка – (, { или [ – заставляет Python полагать, что следующая строка
    является продолжением текущей. В этом случае Python почти всегда сообщает об ошибке в
    следующей строке.
  7. Проверьте, что в условии используется оператор ==, а не =.

Если ничто из этого не помогло, переходите к следующему разделу…

Не могу запустить программу, что бы я ни делал¶

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

Если это случилось, можно создать новую программу (вроде Hello World!) и убедиться, что она-то запускается. Затем постепенно добавляйте необходимый код к работающей программе.

Ошибки времени выполнения¶

Если ваша программа синтаксически корректна, Python, как минимум, начнет ее выполнение. Что теперь может пойти не так?

Моя программа совсем ничего не делает¶

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

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

Моя программа зависает¶

Если программа “останавливается” и как-будто ничего не делает, то говорят, что программа зависла. Часто это означает, что программа вошла в бесконечный цикл.

  1. Если вы подозреваете какой-то определенный цикл, то добавьте предложение
    print непосредственно перед циклом, которое сообщит о входе в цикл, и
    еще одно сразу после цикла, сообщающее о выходе из него.
  2. Запустите программу. Если вы видите первое сообщение, но не видите второго,
    то программа вошла в бесконечный цикл. См. раздел Бесконечный цикл ниже.
  3. Что касается неограниченной рекурсии, то в этом случае программа будет выполняться
    какое-то время, пока не выдаст ошибку RuntimeError: Maximum recursion depth exceeded.
    Если это случилось, см. раздел Неограниченная рекурсия ниже.
  4. Если программа не выдает такую ошибку, но вы подозреваете, что проблема в
    рекурсивном методе или функции, приемы, описанные в разделе Неограниченная рекурсия,
    все же могут оказаться полезны.
  5. Если вышеописанные шаги не работают, проверьте другие циклы или другие рекурсивные
    функции и методы.
  6. Если и это не помогает, то вы, вероятно, не понимаете последовательность
    выполнения предложений в вашей программе. См. раздел Поток выполнения ниже.

Бесконечный цикл¶

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

Например:

while x > 0 and y < 0:
    # do something to x
    # do something to y

    print  "x: ", x
    print  "y: ", y
    print  "condition: ", (x > 0 and y < 0)

Теперь, когда вы запустите программу, в каждой итерации цикла будут выводиться три строки. В последней итерации условие должно стать false. Если цикл продолжает выполняться, вы увидите значения x и y, и сможете понять, что идет не так, как ожидалось.

Неограниченная рекурсия¶

В большинстве случаев неограниченная рекурсия приведет к ошибке RuntimeError: Maximum recursion depth exceeded.

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

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

Поток выполнения¶

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

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

При выполнении программы возникает исключение¶

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

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

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

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

Здесь несколько возможных причин:

  1. Вы пытаетесь неправильно использовать значение. Пример: индексирование
    строки, списка или кортежа значением, отличным от числа.
  2. Имеется несоответствие между строкой формата и элементами, которые должны
    быть в нее подставлены. Либо передается неверное количество элементов, либо
    в строке формата указано недопустимое для данного элемента преобразование.
  3. Вы передали неправильное число аргументов в функцию или метод.
    Для методов, посмотрите на определение метода и проверьте, что первым параметром
    является self. Затем посмотрите на вызов метода; убедитесь, что вызываете
    метод для объекта правильного типа, и что все аргументы корректны.
KeyError
Вы пытаетесь получить доступ к элементу словаря, используя ключ, которого нет в словаре.
AttributeError
Вы пытаетесь получить доступ к атрибуту или методу, который не существует.
IndexError
Индекс, который вы используете для доступа к списку (строке или кортежу), больше,
чем длина списка минус один. Непосредственно перед строкой, в которой возникает ошибка,
вставьте предложение print, которое выведет индекс и длину списка.
Длина правильная? А индекс?

Слишком много данных выводится на печать¶

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

Чтобы упростить выводимые данные, можно удалить или закомментировать предложения print, которые уже не нужны, либо объединить отдельные print в один и отформатировать выводимые данные для более легкого восприятия.

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

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

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

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

Семантические ошибки¶

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

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

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

Моя программа не работает¶

Спросите себя:

  1. Есть ли что-то, что программа должна делать, но это не делается?
    Найдите ту часть кода, которая отвечает за эту функциональность, и
    убедитесь, что она выполняется тогда, когда вы этого ожидаете.
  2. Происходит ли что-то, чего не должно происходить? Найдите в программе
    код, отвечающий за это, и выясните, почему он выполняется вопреки
    вашим ожиданиям.
  3. Производит ли часть кода эффект, который вы не ожидаете?
    Убедитесь, что вы понимаете этот участок кода; будьте особенно внимательны,
    если код вызывает функции или методы из других модулей Python. Прочтите
    документацию по функциям, которые вы используете. Изучите эти функции, написав
    для них несложные тесты.

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

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

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

Мое длинное выражение не работает¶

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

Пример:

self.hands[i].addCard (self.hands[self.findNeighbor(i)].popCard())

Это выражение можно переписать так:

neighbor = self.findNeighbor (i)
pickedCard = self.hands[neighbor].popCard()
self.hands[i].addCard (pickedCard)

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

Другая проблема, связанная с длинными выражениями, состоит в том, что порядок вычисления выражения может оказаться не таким, какой вы ожидали. Например, если вы запишете выражение x/2pi на Python, у вас может получиться:

Это неправильно. Операции умножения и деления имеют одинаковый приоритет, и их вычисление производится слева направо. Поэтому данное выражение на Python вычисляет (x/2)pi.

Отличный способ избавиться от подобных ошибок — явно обозначить порядок вычисления с помощью скобок:

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

Моя функция (или метод) возвращает не то, что мне нужно¶

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

return self.hands[i].removeMatches()

напишите:

count = self.hands[i].removeMatches()
return count

Теперь у вас есть возможность вывести значение count перед выходом из функции.

Ничего не понимаю, бред какой-то¶

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

  1. Отчаяние и/или ярость.
  2. Вера в сверхъестественное (компьютер меня ненавидит) и магию (программа работает только
    тогда, когда я надеваю шляпу).
  3. Программирование методом случайного тыка (кодирование одного и того же разными способами
    в надежде, что один из способов сработает).

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

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

Нет, мне реально нужна помощь¶

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

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

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

  1. Если имеется сообщение об ошибке, то что это за сообщение и где оно возникает?
  2. Какое последнее изменение вы сделали перед тем, как возникла проблема? Какие
    строки кода вы изменили/добавили, или какой новый тест не проходит?
  3. Что вы уже сделали, и что поняли к настоящему моменту в связи с этой проблемой?

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

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

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Ошибка выполнения робот нельзя сквозь стену
  • Ошибка выполнения рецепта для цели
  • Ошибка выполнения операции visual studio 2008 redistributable files
  • Ошибка выполнения операции 500 электронная школа

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии