Содержание
- Типы величин
- Прямая и обратная пропорциональность
- Основные определения
- Прямо пропорциональные величины
- Обратно пропорциональные величины
- Свойства функции обратной пропорциональности:
- Потренируемся
- Виды физических величин и их единицы измерения
- Физические величины — что под этим понимается
- Описание основных физических величин в системе СИ, единицы их измерения, обозначения и формулы
- Единицы измерения основных физических величин в системе СИ
- Производные единицы СИ, имеющие собственные наименования
- Пространство и время
- Периодические явления, колебания и волны, акустика
- Тепловые явления
- Механика
- Молекулярная физика
- Электричество и магнетизм
- Оптика, электромагнитное излучение
- Атомная и ядерная физика. Радиоактивность
- Преобразование единиц измерения
Величины в языке Кумир принято делить на переменные и постоянные.
Постоянной называется величина, значение которой указывается в тексте программы (например, 10 ; 3.14 ; и т. д.) и не меняется в процессе исполнения алгоритма.
Переменной называется величина, значение которой может меняться в процессе исполнения алгоритма.
Каждая переменная величина, используемая в алгоритме на языке КуМир, должна иметь имя, тип, вид и значение .
Имя величины используется для ее идентификации в алгоритме.
Тип величины показывает диапазон ее допустимых значений и операции, которые можно с ней выполнять.
Вид величины определяет информационную роль, которую величина играет в алгоритме. Например, для хранения текущих расчетов используются промежуточные величины.
Имя, тип и вид величины являются статическими характеристиками, которые можно определить по тексту алгоритма.
В каждый момент выполнения Кумир-программы величина может иметь некоторое конкретное значение или быть неопределенной. Значение является динамической характеристикой величины поскольку может быть определено только во время выполнения алгоритма.
Типы величин
Как и в любом языке программирования в Кумире существует несколько типов величин. Рассмотрим классификацию типов и возможные диапазоны их значений.
- цел – целый тип, диапазон допустимых значений лежит в пределах от -(МАКСЦЕЛ+1) до МАКСЦЕЛ, где МАКСЦЕЛ = 2147483647 ;
- вещ – вещественный тип, диапазон допустимых значений лежит в пределах от -МАКСВЕЩ до МАКСВЕЩ, где МАКСВЕЩ – это число, немного меньшее, чем 1.797693×10 308 ;
Величины МАКСЦЕЛ и МАКСВЕЩ определяются способом представления чисел в памяти компьютеров и в большинстве современных языков программирования имеют примерно одинаковые значения.
Вещественные значения можно преобразовать к целым с помощью встроенной функции int , например:
- вещ а = 10.8; цел в
- в := int(а)
- вывод в
- сим – символьный тип, значением может быть любой литеральный символ;
- лит – значением может быть строка литеральных символов.
Встроенные функции языка Кумир позволяют преобразовать числовые типы в текстовые и наоборот.
- лог – может принимать значения да или нет .
В языке программирования Кумир используются простые и табличные величины.
Copyright © 2014-2021, Урок информатики
Все права защищены
Источник
Прямая и обратная пропорциональность
О чем эта статья:
Статья находится на проверке у методистов Skysmart.
Если вы заметили ошибку, сообщите об этом в онлайн-чат
(в правом нижнем углу экрана).
Основные определения
Математическая зависимость — это соответствие между элементами двух множеств, при котором каждому элементу одного множества ставится в соответствие элемент из другого множества.
- Прямая зависимость. Чем больше одна величина, тем больше вторая. Чем меньше одна величина, тем меньше вторая величина.
- Обратная зависимость. Чем больше одна величина, тем меньше вторая. Чем меньше одна величина, тем больше вторая.
Зависимости также можно классифицировать по формам: функциональная и статистическая.
Функциональная зависимость между двумя переменными величинами характеризуется тем, что каждому значению одной из них соответствует вполне определенное и единственное значение другой.
В математике функциональной зависимостью переменной Y от переменной Х называют зависимость вида y = f(x), где каждому допустимому значению X ставится в соответствие по определенному правилу единственно возможное значение Y.
Статистическая зависимость — это зависимость случайных величин, когда изменение одной переменной приводит к изменению другой.
Если изменение одной из случайных величин влечет изменение среднего другой случайной величины, то статистическую зависимость называют корреляционной. Сами случайные величины, связанные корреляционной зависимостью, оказываются коррелированными.
Пропорция в математике — это равенство между отношениями двух или нескольких пар чисел или величин. Пропорциональными называются две взаимно-зависимые величины, если отношение их значений остается неизменным.
Пропорциональность — это взаимосвязь между двумя величинами, при которой изменение одной из них влечет за собой изменение другой во столько же раз. Проще говоря — это зависимость одного числа от другого.
Есть две разновидности пропорциональностей:
- Прямая пропорциональность. Это зависимость, при которой увеличение одного числа ведет к увеличению другого во столько же раз. А уменьшение одно числа ведет к уменьшению другого во столько же раз.
- Обратная пропорциональность. Это зависимость, при которой уменьшение одного числа ведет к увеличению другого во столько же раз. А увеличение числа наоборот ведет к уменьшению другого во столько же раз.
Коэффициент пропорциональности — это неизменное отношение пропорциональных величин. Он показывает, сколько единиц одной величины приходится на единицу другой. Коэффициент пропорциональности обозначается латинской буквой k.
Прямо пропорциональные величины
Две величины называются прямо пропорциональными, если при увеличении (или уменьшении) одной из них в несколько раз — другая увеличивается (или уменьшается) во столько же раз.
Прямая пропорциональность в виде схемы: «больше — больше» или «меньше — меньше».
Свойство прямо пропорциональной зависимости:
Если две величины прямо пропорциональны, то отношения соответствующих значений этих величин равны.
Примеры прямо пропорциональной зависимости:
- при постоянной скорости пройденный маршрут прямо-пропорционально зависит от времени;
- периметр квадрата и его сторона — прямо-пропорциональные величины;
- стоимость конфет, купленных по одной цене, прямо-пропорционально зависит от их количества.
Если говорить метафорами, то прямую пропорциональную зависимость можно отличить от обратной по пословице: «Чем дальше в лес, тем больше дров». Что значит, чем дольше ты идешь по лесу, тем больше дров можно собрать.
Формула прямой пропорциональности
y = kx,
где y и x — переменные величины, k — постоянная величина, которую называют коэффициентом прямой пропорциональности.
Коэффициент прямой пропорциональности — это отношение любых соответствующих значений пропорциональных переменных y и x, равное одному и тому же числу.
Формула коэффициента прямой пропорциональности:
Графиком прямо пропорциональной зависимости величин является прямая линия.
Например, при k = 2 график выглядит так:
Пример 1.
В одно и то же путешествие поехали два автомобиля. Один двигался со скоростью 70 км/ч и за 2 часа проделал тот же путь, что другой за 7 часов. Найти скорость второго автомобиля.
- Вспомним формулу для определения пути через скорость и время: S = V * t.
- Так как оба автомобиля проделали одинаковый путь, можно составить пропорцию из двух выражений: 70 * 2 = V * 7
- Найдем скорость второго автомобиля: V = 70 * 2/7 = 20
Пример 2.
Блогер за 8 дней может написать 14 постов. Сколько помощников ему понадобится, чтобы написать 420 постов за 12 дней?
Количество человек (блогер и помощники) увеличивается с увеличением объема работы, если ее нужно сделать за то же количество времени.
Если разделить 420 на 14, узнаем, что объем увеличивается в 30 раз.
Но так как по условию задачи на работу дается больше времени, то количество помощников увеличивается не в 30 раз. Таким образом:
- х = 1 (блогер) * 30 (раз) : 12/8 (дней).
- х = 1 * 30 : 12/8
- х = 20
Ответ: 20 человек напишут 420 постов за 12 дней.
Обратно пропорциональные величины
Две величины называют обратно пропорциональными, если при увеличении (или уменьшении) одной из них в несколько раз — другая уменьшается (или увеличивается) во столько же раз.
Объясним, что значит обратно пропорционально в виде схемы: «больше — меньше» или «меньше — больше».
Свойство обратной пропорциональности величин:
Если две величины находятся в обратно пропорциональной зависимости, то отношение двух произвольно взятых значений одной величины равно обратному отношению соответствующих значений другой величины.
Примеры обратно пропорциональной зависимости:
- время на маршрут и скорость, с которой путь был пройден — обратно пропорциональные величины;
- при одинаковой продуктивности количество школьников, решающих конкретную задачу, обратно пропорционально времени выполнения этой задачи;
- количество конфет, купленных на определенную сумму денег, обратно пропорционально их цене.
Формула обратной пропорциональности
где y и x — это переменные величины,
k — постоянная величина, которую называют коэффициентом обратной пропорциональности.
Коэффициент обратной пропорциональности — это произведение любых соответствующих значений обратно пропорциональных переменных y и x, равное одному и тому же числу.
Формула коэффициента обратной пропорциональности:
Графиком обратно пропорциональной зависимости величин является гипербола.
Свойства функции обратной пропорциональности:
- Область определения — множество всех действительных чисел, кроме x = 0.
Область значений — все действительные числа, кроме y = 0.
Потренируемся
Пример 1. 24 человека за 5 дней раскрутили канальчик в ютубе. За сколько дней выполнят ту же работу 30 человек, если будут работать с той же эффективностью?
- В заполненном столбце стрелку ставим в направлении от большего числа к меньшему.
- Чем больше людей, тем меньше времени нужно для выполнения определенной работы (раскрутки канала). Значит, это обратно пропорциональная зависимость.
- Поэтому направим вторую стрелку в противоположную сторону. Обратная пропорция выглядит так:
- Пусть за х дней могут раскрутить канал 30 человек. Составляем пропорцию: 30 : 24 = 5 : х
- Чтобы найти неизвестный член пропорции, нужно произведение средних членов разделить на известный крайний член: х = 24 * 5 : 30; х = 4
- Значит, 30 человек раскрутят канал за 4 дня.
Пример 2. Автомобиль проезжает от одного города до другого за 13 часов со скоростью 75 км/ч. Сколько времени ему понадобится, если он будет ехать со скоростью 52 км/ч?
Скорость и время связаны обратно пропорциональной зависимостью: чем больше скорость, тем меньше времени понадобится.
- Составим пропорцию: v1/v2 = t2/t1.
Соотношения равны, но перевернуты относительно друг друга.
Источник
Виды физических величин и их единицы измерения
Физические величины — что под этим понимается
Физические величины — это понятие в физике описывает характеристики тел или процессов, которые могут быть измерены на опыте с использованием измерительных методов и приборов.
Физическая величина — это одно из свойств материальных объектов (физической системы, явления или процесса), общее в качественном отношении для многих физических объектов, но по количественной характеристике индивидуальное для каждого из них.
Значение физической величины выражается одним или несколькими числами, характеризующими необходимую физическую величину, у которой обязательно должна быть указана размерность.
Размер физической величины — это значения чисел, указанные в значении физической величины.
Описание основных физических величин в системе СИ, единицы их измерения, обозначения и формулы
Основными физическими величинами в Международной системе единиц (СИ) являются: длина, масса, время, сила электрического тока, термодинамическая температура, количество вещества, сила света.
Единицы измерения основных физических величин в системе СИ
Время в системе СИ измеряется в секундах (с).
Расчет величины секунды основан на фиксировании численного значения частоты сверхтонкого расщепления основного состояния атома цезия-133 при температуре 0 °К, равной в точности 9 192 631 770 Гц.
Солнечные сутки разбираются на 24 часа, каждый час разбирается на 60 минут, а каждая минута состоит из 60 секунд. Таким образом, секунда — это 1 / ( 24 * 60 * 60 ) = 1 / 86400 от солнечных суток.
Единица длины по системе СИ — это метр (м). Величина метра определяется фиксацией численного значения скорости света в вакууме, равной 299 792 458 м/с.
Масса в системных единицах измеряется в килограммах (кг). Килограмм — это величина, основой которой является численное значение постоянной Планка h = 6 , 626 * 10 — 34 , когда она выражена в Дж*с.
Следующая основная единица — это сила электрического тока, она измеряется в Амперах (А). Величина Ампера определяется зафиксированным численным значением элементарного заряда электрона равного в кулонах 1 , 602 * 10 — 19 К л .
Единицей измерения термодинамической температуры является Кельвин (K). В 1967-2019 годах Кельвин определялся как 1/273,16 части термодинамической температуры тройной точки воды. Шкала Кельвина использует тот же шаг, что и шкала Цельсия. 0 °K — это температура абсолютного нуля, а не температура плавления льда. Согласно современному определению что такое Кельвин, 0 °C установлены таким образом, что температура тройной точки воды на фазовой диаграмме равна 0,01 °C. В итоге шкалы Цельсия и Кельвина сдвинуты на 273,15 °.
Моль — это единица измерения количества вещества. Один моль содержит ровно 6 , 022 * 10 23 элементов. Это число фиксировано, постоянно и называется числом Авогадро, единицей измерения которого является 1/моль.
Кандела — единица силы света. Величина канделы устанавливается фиксированием численного значения световой эффективности монохроматического излучения частотой 540 * 10 12 Г ц .
Основная физическая величина | Обозначение | Единица измерения в системе СИ |
Длина | l | метр (м) |
Масса | m | килограмм (кг) |
Время | t | секунда (с) |
Сила электрического тока | I | Ампер (А) |
Термодинамическая температура | T | Кельвин (К) |
Количество вещества | n | моль |
Сила света | I_c | Кандела (кд) |
Табл.1. Основные физические величины, их обозначения и единицы измерения.
Производные единицы СИ, имеющие собственные наименования
Производные единицы СИ — это единицы измерения, которые исходят от семи основных единиц, определенных Международной системой единиц (СИ).
Такие единицы либо безразмерные, либо могут быть выражены с помощью различных математических операций из основных единиц СИ.
Пространство и время
Единиц измерения, входящих в систему СИ и имеющих собственные названия, которые относятся к пространству и времени — нет.
Периодические явления, колебания и волны, акустика
Частота — это число колебаний совершаемых за одну секунду. Единица измерения названа в честь физика Генриха Герца и обозначается Гц.
Тепловые явления
Температура по Цельсию. Абсолютный ноль по шкале Кельвинов (0 °K) соответствует -273,15 °C, поэтому для перевода температура из Кельвинов (T) в Цельсии (t), нужно совершить арифметическое действие t = T-273,15.
Энергия — это физическая величина, показывающая какую работу может совершить тело. Измеряется в джоулях (Дж).
Механика
Плоский угол — это часть плоскости, ограниченная двумя лучами, выходящими из одной точки. В системе СИ измеряется в радианах (рад).
Телесный угол — часть пространства, ограниченная некоторой конической поверхностью. Измеряется в системе СИ в стерадианах (ср).
Молекулярная физика
Давление — это скалярная физическая величина равная отношению силы давления, приложенной к данной поверхности, к площади этой поверхности. Единицей измерения в системе СИ является паскаль (Па).
Активность катализатора — характеристика, показывающая насколько катализатор активен в процессе своей работы.
Электричество и магнетизм
Сила — физическая величина, которая характеризует действие на тело других тел, в результате чего у тела изменяется скорость или оно деформируется. Измеряется в ньютонах (Н).
Мощность — это физическая величина, равная отношению работы к промежутку времени, за который совершенна эта работа. В Международной системе (СИ) единицей измерения мощности является ватт (Вт).
Электрический заряд — это физическая величина, характеризующая свойство тел или частиц входить в электромагнитные взаимодействия и определяющая значение сил и энергий этих взаимодействий. Единица измерения в системе СИ — это кулон (Кл).
Разность потенциалов (напряжение) между двумя точками равна отношению работы поля при перемещении положительного заряда из начальной точки в конечную к величине этого заряда. Измеряется в вольтах (В).
Сопротивление — физическая величина, характеризующая способность проводника препятствовать прохождению тока. Единица измерения — Ом. Источник электрической энергии является проводником и всегда имеет некоторое сопротивление, поэтому ток выделяет в нем тепло. Такое сопротивление называется внутренним. Если оно очень мало, то ток короткого замыкания будет большим, что может вывести источник тока из строя.
Емкость — это физическая величина, которая характеризует способность накапливать электрический заряд на одной из металлических обкладок конденсатора, равная отношению заряда к напряжению и измеряется в фарадах (Ф).
Конденсатор — это совокупность двух проводников, находящихся на малом расстоянии друг от друга и разделенных слоем диэлектрика. На значение емкости влияют геометрические размеры и среда. Материал, из которого сделаны обкладки конденсатора, может быть разным.
Электрическая проводимость (электропроводность) — это способность веществ пропускать электрический ток под действием электрического напряжения. Электрическая проводимость — величина, обратная сопротивлению. Измеряется в сименсах (См).
Характер электропроводности может быть разный, поэтому вещества делятся на электролиты (вещества, растворы и расплавы, проводящие электрический ток) и неэлектролиты (вещества, растворы и расплавы, которые не проводят электрический ток).
Оптика, электромагнитное излучение
Световой поток — величина, измеряемая количеством энергии, которую излучает источник света за единицу времени. В системе СИ единицей измерения светового потока является люмен (лм).
Освещенность — это величина светового потока, приходящаяся на единицу площади освещаемой поверхности. Освещенность измеряется в люксах.
Магнитный поток — физическая величина, численно равная произведению модуля магнитной индукции на площадь контура и на косинус угла между нормалью к контуру и вектором магнитной индукции. Единицей измерения магнитного потока в системе СИ является вебер (Вб).
Магнитная индукция — это векторная физическая величина, модуль которой численно равен максимальной силе, действующей со стороны магнитного поля на единичный элемент тока. Единичный элемент тока — это проводник длиной 1 м и силой тока в нем 1 А. Единицей измерения магнитной индукции в системе СИ является тесла (Тл).
Индуктивность — это физическая величина, характеризующая способность проводника с током создавать магнитное поле. Единица измерения — генри (Гн).
Атомная и ядерная физика. Радиоактивность
Радиоактивность — это способность некоторых атомных ядер самопроизвольно превращаться в другие ядра с испусканием различных видов радиоактивных излучений и элементарных частиц. Различают радиоактивность естественную – для существующих в природе неустойчивых изотопов, а также искусственную — для изотопов, полученных с использованием ядерных реакций. Единицей измерения радиоактивности является беккерель (Бк).
Поглощенная доза ионизирующего излучения — величина энергии ионизирующего излучения, переданная веществу. В единицах СИ поглощенная доза измеряется в джоулях, деленных на килограмм, и имеет специальное название — грей (Гр).
Эффективная доза ионизирующего излучения — величина, используемая как мера риска возникновения отдаленных последствий облучения всего человека и отдельных его органов и тканей с учетом их радиочувствительности. Единицей эквивалентной дозы является зиверт (Зв).
Собственные наименования имеют 22 производные единицы измерения, которые представлены в таблице 2.
Величина | Единица измерения | Обозначение |
Частота | герц | Гц |
Температура по шкале Цельсия | градус Цельсия | <>^оС |
Энергия | джоуль | Дж |
Плоский угол | радиан | рад |
Телесный угол | стерадиан | ср |
Давление | паскаль | Па |
Активность катализатора | катал | кат |
Сила | ньютон | Н |
Мощность | ватт | Вт |
Электрический заряд | кулон | Кл |
Разность потенциалов | вольт | В |
Сопротивление | ом | Ом |
Ёмкость | фарад | Ф |
Магнитный поток | вебер | Вб |
Магнитная индукция | тесла | Тл |
Индуктивность | генри | Гн |
Электрическая проводимость | сименс | См |
Световой поток | люмен | лм |
Освещенность | люкс | лк |
Радиоактивность | беккерель | Бк |
Поглощенная доза ионизирующего излучения | грэй | Гр |
Эффективная доза ионизирующего излучения | зиверт | Зв |
Таблица 2. Таблица с произвольными единицами измерения в системе СИ, которые имеют собственные названия.
Преобразование единиц измерения
Рассмотрим в этом пункте только способы преобразования основных единиц измерения в системе СИ, а именно длины (м), массы (кг), времени (с), силы электрического тока (А), термодинамической температуры (К), количества вещества (моль).
Длина:
1 м = 0,001 км = 10 дм =100 см = 1000 мм
1 кг = 0,001 т = 0,01 ц = 1000 г = 1000000 мг
Источник
Величины. Типы величин в Кумир.
Величины в языке Кумир принято делить на переменные и постоянные.
Постоянной называется величина, значение которой указывается в тексте программы (например, 10; 3.14; и т. д.) и не меняется в процессе исполнения алгоритма.
Переменной называется величина, значение которой может меняться в процессе исполнения алгоритма.
Каждая переменная величина, используемая в алгоритме на языке КуМир, должна иметь имя, тип, вид и значение.
Имя величины используется для ее идентификации в алгоритме.
Тип величины показывает диапазон ее допустимых значений и операции, которые можно с ней выполнять.
Вид величины определяет информационную роль, которую величина играет в алгоритме. Например, для хранения текущих расчетов используются промежуточные величины.
Имя, тип и вид величины являются статическими характеристиками, которые можно определить по тексту алгоритма.
В каждый момент выполнения Кумир-программы величина может иметь некоторое конкретное значение или быть неопределенной. Значение является динамической характеристикой величины поскольку может быть определено только во время выполнения алгоритма.
Типы величин
Как и в любом языке программирования в Кумире существует несколько типов величин. Рассмотрим классификацию типов и возможные диапазоны их значений.
Числовые типы:
- цел – целый тип, диапазон допустимых значений лежит в пределах от -(МАКСЦЕЛ+1) до МАКСЦЕЛ, где МАКСЦЕЛ = 2147483647;
- вещ – вещественный тип, диапазон допустимых значений лежит в пределах от -МАКСВЕЩ до МАКСВЕЩ, где МАКСВЕЩ – это число, немного меньшее, чем 1.797693×10308;
Величины МАКСЦЕЛ и МАКСВЕЩ определяются способом представления чисел в памяти компьютеров и в большинстве современных языков программирования имеют примерно одинаковые значения.
Вещественные значения можно преобразовать к целым с помощью встроенной функции int, например:
- вещ а = 10.8; цел в
- в := int(а)
- вывод в
Текстовые типы:
- сим – символьный тип, значением может быть любой литеральный символ;
- лит – значением может быть строка литеральных символов.
Встроенные функции языка Кумир позволяют преобразовать числовые типы в текстовые и наоборот.
Логический тип:
- лог – может принимать значения да или нет.
Содержание
- Кумир имя не объявлено что делать
- Помогите, пожалуйста, почему в программе КуМир ,,Имя не объявлено», хотя там всё правильно. Что мне нужно исправить.
- Настройка среды Кумир для исполнителя Робот
- КуМир, Исполнитель Робот
- Главное меню
- Пульт
- Задачи
- Знакомство с языком и системой КуМир путем решения задач С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-файл с картинкой обстановки, именем файла, датой и комментарием |
Закрыть | Закрывает окно редактирования |
Главное меню
Пульт
Вызов пульта производится нажатием на кнопку или через меню Робот→Показать пульт.
Если выполнить команду меню Редактирование→Перехватывать команды Пульта, то действия, производимые пультом будут записываться в виде правильных команд в текст программы. Названный пункт будет помечен флажком (галочкой).
Некоторые из записываемых команд окажутся избыточными, так как для них используется вывод информации, а не действия. Но их можно отредактировать, либо взять из них только нужные элементы.
Подробности использования пульта смотри меню Инфо→Язык и система КуМир.
Задачи
- Робот находится в левом верхнем углу прямоугольной области неизвестного размера, со всех сторон окруженной стенками. Посередине находится стена, в которой есть проход. Где он, точно неизвестно, но проход не примыкает к нижней стенке. Задача: написать программу, которая переведет робота в правый нижний угол. Файл среды.
- См. также ОГЭ: вопрос 20.1.
- См. также ЕГЭ: вопросы 6, 14.
Copyright © 1993–2022 Мацкявичюс Д.А. Все права защищены.
Никакая часть сайта не может быть воспроизведена никаким способом без письменного разрешения правообладателя и явной ссылки на данный ресурс.
Источник
Знакомство с языком и системой КуМир путем решения задач С2
Знакомство с языком и системой КуМир путем решения задач С2
Настоящая короткая инструкция адресована читателям, имеющим практический опыт решения нескольких десятков простейших задач по программированию на каком-нибудь языке программирования.
Предполагается, что читатель хочет с минимальными затратами времени научиться решать на школьном алгоритмическом языке в системе КуМир, задачи, подобные задачам С2-С6 демоверсии компьютеризированного ЕГЭ. Эта демоверсия опубликована на сайте МИОО: На том же сайте сказано, как загрузить систему КуМир (версия для ЕГЭ) для операционных систем типа MS Windows и Linux . Ниже мы будем обсуждать только те понятия, конструкции и команды школьного языка и системы КуМир, которые нужны при решении задач типа С2-С3. В частности, все программы ниже будут состоять из одного алгоритма без параметров. В условиях задач С2-С6 не предусмотрена какая-либо работа с файлами. Предписывается вводить информацию с клавиатуры и выводить ее на экран. Дополнительно требуется, чтобы каждая порция вводимой или выводимой информации размещалась на отдельной строке и обрабатывалась одной командой ввод или вывод .
Вывод значения величины х в отдельную строку производится в командой
где нс означает н овая с трока.
Ввод значения величины х производится командой
по этой команде в окне ввода/вывода подсвечивается строка, в которую будет направлено эхо ввода и система КуМир ожидает посимвольного ввода значения величины, завершаемого нажатием клавиши Enter .
Итак, загружаем КуМир и, согласно инструкции, запускаем версию КуМира для ЕГЭ. Мы увидим следующую картинку.
В верхней строке с иконками команд, правее крестика, должно быть пусто. Если правее крестика Вы увидели три желто-зеленые иконки, то Вы запустили полный КуМир, с Роботом и Чертежником, которые Вам не нужны. Перечитайте инструкцию и запустите версию КуМир для ЕГЭ. Размеры трех областей, которые мы видим при первом появлении окна КуМира на экране, для задач С2-С6 неудобны. Их нужно изменить. Для этого нужно «схватить» мышкой нижний край окна (под словом Редактирование) и уменьшить высоту окна, затем «схватить» мышкой правый край окна и уменьшить ширину и наконец, нужно подвинуть границы между тремя областями окна так, чтобы получилась картинка примерно такой формы и размера:
Начнем с задачи С2, в которой нужно подсчитать количество различных значений среди модулей трех введенных с клавиатуры целых чисел a , b , c .
Условие и решение задачи C 2
С2. Составить программу, которая вводит с клавиатуры три целых числа a, b,c (каждое число – отдельной командой «ввод»), заменяет каждое из этих чисел на его модуль и выводит на экран количество различных среди полученных трех чисел. Ничего, кроме этого количества, программа выводить не должна. Например, если все числа равны, программа должна выводить число 1 . При использовании системы Fr ee Pascal для представления целых чисел используйте тип LongInt .
Указание. Модуль целого числа можно вычислить следующим образом:
Пояснение. Ответом в этой задаче является программа, записанная на школьном алгоритмическом языке или языке Free Pascal. Эта программа должна быть подготовлена и проверена в среде программирования КуМир или Free Pascal и сохранена в одном файле средствами среды программирования. Далее этот файл должен быть загружен в экзаменационную работу средствами системы КТС ЕГЭ.
Не забудьте загрузить в Вашу экзаменационную работу файл с подготовленной Вами программой.
Важное замечание. В КуМире имена переменных можно писать русскими буквами, а можно и латинскими. Какой способ удобнее? При решении задач С2-С6 удобнее всего установить латинский нижний регистр и давать переменным однобуквенные имена, тем более, что в условиях задач уже используются имена: a , b , c , n . Чтобы поменьше переключать регистр при наборе ключевых слов на русском языке, используйте клавишу Alt: пока эта клавиша удерживается в нажатом положении, текущий латинский регистр становится русским (и наоборот).
Алгоритм решения задачи С2 назовем С2 (заглавная латинская буква С). КуМир для ЕГЭ настроен так, что латинские буквы в именах изображаются курсивом, поэтому в тексте программы латинские буквы можно отличить от схожих по начертанию русских. Сохранять программу будем в файле C 2.kum
Начнем составление алгоритма. В начале алгоритма, после слова нач, опишем целые переменные a , b , c
далее напишем команды ввода значения этих переменных с клавиатуры. Как требуется в условии задачи, каждое значение введем отдельной командой:
Далее, следуя указанию по программированию из условия задачи, добавим команды, заменяющие каждое число на его модуль, и выполним получившуюся программу, нажав клавишу F9
В окне ввода/вывода внизу появляется желтая строка, в которую будет производиться ввод цифр первого числа. В нижней части обрамления окна система выводит сообщение Ожидается ввод: цел. Ввод цифр целого числа должен быть завершен нажатием клавиши Enter . Введем единственую цифру первого числа 1 и нажмем клавишу Enter , аналогочно введем числа -1 и 2. Программа завершит работу:
На полях программы, справа от ее текста, система КуМир показывает результаты выполнения команд ввод в строках 3,4,5 и результаты присваиваний в строках 6,7,8. И на полях строк 3,4,5 и в окне ввода/вывода видно, что были введены три числа 1 -1 2 . Однако на полях строк 6,7,8 почему-то показано, что все три числа стали равны 1 . Почему же число c оказалось равным 1 , а не 2 ? «Элементарно, Ватсон»: на место строки 8 мы скопировали строку 6, собираясь затем поменять в ней в двух местах букву a на букву c . После этого мы изменили первую букву а , но забыли изменить вторую и получилась ошибочная команда
Исправим эту ошибку и попробуем дописать в конец алгоритма команду, вычисляющую количество различных среди чисел a , b :
Технические замечания. 1) Хотя в меню вставка есть макрокоманды по вставке управляющих конструкций, в данном случае удобнее набрать ключевые слова конструкции вручную, разместив их в одной строке.
2) В процессе редактировании строки, до момента окончания редактирования строки, КуМир не производит перепроверку программы. Эта перепроверка запускается после «покидания» строки курсором.
Уводим курсор из редактируемой строки номер 9 и смотрим, что получилось. КуМир сообщает, что в строке 9 найдены три ошибки типа «Величина или алгоритм не описаны»:
Какие именно величины не описаны, показано в строке 9 тремя красными подчеркиваниями. Во-первых, подчеркнута, русская буква а, ее нужно исправить на латинскую а. Кроме того, мы забыли описать величину k .
Исправляем эти ошибки и пока [1] КуМир переразбирает программу, думаем, что еще осталось сделать. Величина k показывает, сколько различных среди первых двух чисел a и b . Сравним третье число c числом а, затем с числом b . Если c не совпадает ни с a ни с b , то при переходе от набора чисел
a b к набору a b c количество различных чисел увеличивается на 1. Если же число c совпадает с одним из первых двух чисел, то добавление числа c к набору a b количества различных чисел не меняет. Эти длинные словесные объяснения записываются в алгоритме очень коротко:
Для завершения программы осталось вывести вычисленный ответ k в отдельной строке вывод k , нс:
Запустив программу для входных данных 1 1 1 , получим правильный ответ 1:
Запуская программу еще на нескольких наборах входных данных, убеждаемся, что она работает правильно:
Убедившись в правильности программы, необходимо сохранить ее, а затем включить файл C 2. kum в экзаменационную работу средствами системы КТС ЕГЭ.
[1] Для коротенькой программы переразбор происходит мгновенно. Для очень длинной программы на не очень новом компьютере переразбор может занять несколько секунд. Зеленый сигнал светофора показывает, что переразбор закончен. Для коротких программ на светофор можно не обращать внимания.
Источник
Цикл «для». Табличные
величины. Логические, символьные и литерные
величины
Мы находимся на финальной прямой
изучения алгоритмического языка.
Сейчас нам надо изучить еще одну
конструкцию алгоритмического языка — цикл для. Вспомним задачу про
подсчет суммы первых N нечетных чисел. В этой
задаче нужно сложить все числа арифметической
прогрессии с шагом 2, начиная от числа 1 и
заканчивая числом 2N–1. С помощью цикла для это записывается так:
S := 0
нц для k от 1 до 2*N — 1 шаг 2
. S := S + k
кц
Действие внутри цикла, а именно S := S + k, будет выполнено сначала для k = 1, затем для k = 3,
затем для k = 5 и последний раз
для k = 2*N — 1. Цикл для
и придуман для упрощения перебора членов
арифметических прогрессий с известными
начальным и конечным членами и шагом.
Как и команда выбор,
цикл для является
избыточной конструкцией в том смысле, что
абсолютно любой алгоритм можно записать и без
этого цикла, заменив его циклом пока:
i := i1
нц пока i <= i2
тело цикла
i := i + 1
кц
Но это не очень удобно, так как
можно забыть о присваивании начального значения
перед циклом или увеличении величины i внутри цикла. Поэтому цикл для вводится здесь просто, как
компактная форма записи.
При работе с табличными величинами
циклы для встречаются очень
часто. К табличным величинам мы сейчас и
перейдем.
№ |
Лекция |
17/2009 |
Лекция |
18/2009 |
Лекция |
18/2009 |
Лекция 3. |
Контрольная |
|
20/2009 |
Лекция 4. |
21/2009 |
Лекция 5. |
Контрольная |
|
22/2009 |
Лекция |
23/2009 |
Лекция 7. |
24/2009 |
Лекция 8. Итоговая работа. |
Соотношение между “табличными
величинами” и просто “величинами” примерно
такое же, как между “циклами” и просто
“командами”. Если циклы позволяют коротко
описывать огромные последовательности действий
для ЭВМ, то табличные величины дают возможность
коротко описывать огромные массивы информации,
которые должны быть обработаны1.
Общий вид цикла для:
нц для i от i1 до
i2
· тело_цикла
кц
Здесь i — величина типа цел (она называется
параметром цикла), а i1 и i2 — целые
выражения, т.е. выражения типа цел.
При выполнении цикла для
тело цикла выполняется
последовательно для i = i1, i = i1 + 1, … , i = i2. Если i1 = i2, то тело цикла
выполнится один раз для i = i1.
Если же i1 > i2, то тело цикла не выполнится ни разу.
Общий вид цикла для с шагом:
нц для i от i1 до
i2 шаг i3
· тело_цикла
кц
Если шаг i3 (который также должен
быть целым выражением) равен
положительному числу d, то тело цикла будет выполняться
последовательно для i = i1,
i = i1 + d, i = i1 + 2d,
… до тех пор, пока значение i удовлетворяет условию
i <= i2. Если же шаг
i3 отрицателен и равен
?d, то тело цикла будет
выполняться последовательно для i = i1,
i = i1 ? d, i = i1 ? 2d, … до тех пор, пока
значение i удовлетворяет
условию i >= i2.
Линейные таблицы соответствуют
классической модели памяти ЭВМ. Фактически у
самой ЭВМ основным хранилищем информации служит
одна большая линейная таблица байтов.
Табличная величина состоит из
“элементов”, доступ к элементу таблицы мы
получаем, указывая его номер — индекс, а
элемент таблицы Т с индексом i в алгоритмическом языке
записывается как T[i].
Для описания таблиц после описания
типа нужно указать ключевое слово таб.
Название типа и ключевое слово таб
разрешается писать и слитно, и раздельно. Обе
формы записи
вещ таб Т[1:10]
и
вещтаб Т[1:10]
являются правильными. Размерность
таблицы и границы изменения индексов
указываются после имени каждой величины.
Пример:
цел таб k[-5:5]
Здесь k —
линейная таблица, состоящая из 11 элементов
целого типа. Индексы элементов принимают
значения от –5 до 5. Этот пример не типичный. Чаще
всего элементы таблицы нумеруют, начиная с 1, как
в языке Паскаль, или начиная с 0, как в языке Си.
Табличная величина имеет одно общее
для всех ее элементов имя, а элементы таблицы
отдельных имен не имеют. Именно этим табличная
величина отличается от просто набора из
нескольких величин. За счет этого мы можем
компактно описать большое количество
“элементарных” величин. Так, например, запись
цел таб Т[1:1000]
заставляет ЭВМ выделить память для
тысячи целых чисел. Используя имя таблицы Т и вычисленное в алгоритме
значение величины i, можно
получить или изменить i-й
элемент таблицы, написав Т[i]. Мы
получаем возможность компактно записать
обработку большого количества информации.
Рассмотрим, например, фрагмент алгоритма
нц для i от 1 до
1000
Т[i] := 0
кц
Выполняя этот фрагмент, ЭВМ
присваивает значение 0 тысяче элементов таблицы,
то есть изменяет большой объем информации —
целую тысячу чисел. А ведь в приведенном
фрагменте программы всего три строчки. Таким
образом, использование табличных величин
позволяет составлять компактные алгоритмы,
обрабатывающие огромное количество информации,
задействовать не только быстродействие, но и
объем памяти ЭВМ.
Поле Робота можно рассматривать как
таблицу, в каждой клетке которой записаны два
числа — радиация и температура. Для лучшего
усвоения понятия таблицы можно использовать
аналогии с соответствующими фрагментами поля
Робота. Так, горизонтальный коридор на поле
Робота с заданной в каждой клетке коридора
радиацией аналогичен линейной таблице с
вещественными элементами (см. пример). А все поле
Робота с заданной в каждой клетке температурой —
это аналог прямоугольной таблицы, то есть аналог
массива с двумя измерениями. Такие массивы на
бумаге и на “доске” изображаются обычно в виде
прямоугольных таблиц, откуда и название.
Предположим, что Робот находится в
левом конце горизонтального коридора из 16
клеток, и требуется провести “радиационную
разведку” этого коридора, то есть измерить
радиацию в каждой клетке коридора и подсчитать
какие-то характеристики измеренных данных:
суммарную радиацию, максимальную радиацию, номер
клетки с минимальным значением радиации и т.п.
Для решения подобных задач применимы
два разных подхода. При первом подходе Робот
перемещается по коридору, для каждой клетки
проводит измерение уровня радиации в каждой
клетке и немедленно проводит все требуемые
подсчеты. При таком подходе нет необходимости
запоминать все измеренные значения уровня
радиации, обработка данных проводится “на
ходу”. Второй подход состоит в том, чтобы разделить
во времени этап получения информации и этап ее
последующей обработки. При втором подходе Робот
идет по коридору, измеряет уровень радиации в
каждой клетке и “накапливает” где-то полученную
информацию. Далее Робот “отдыхает”, а
накопленная информация обрабатывается нужным
образом, то есть с этой информацией ЭВМ проводит
требуемое вычисление. При этом на этапе
проведения вычисления совершенно неважно,
откуда взялись исходные данные для этого
вычисления: в процессе измерения радиации
Роботом или в результате каких-то других
действий. Важно только, чтобы эти данные были
представлены в какой-то стандартизованной форме.
В школьном алгоритмическом языке таких форм две.
Данные можно накапливать в таблицах или в файлах.
Для определенности далее мы
рассмотрим задачу подсчета суммарной радиации
коридора с сохранением “накопленной”
информации в линейной таблице.
При первом подходе — подсчете “на
ходу” — для подсчета суммарной радиации нам
понадобится всего одна величина вещ
S, которая будет хранить
суммарную радиацию в клетках, где уже побывал
Робот.
Составляя алгоритм, можно рассуждать
так. Перед началом перемещения по коридору Робот
побывал только в одной клетке коридора — в самой
левой, и нужно запомнить в S
значение радиации в этой клетке:
S := радиация
Далее Робот должен сместиться
вправо, измерить значение радиации в следующей
клетке и добавить его к S:
вправо; S := S + радиация
Этот процесс нужно продолжать до
тех пор, пока коридор не кончится, то есть пока
справа от Робота свободно. Для описания такого
повторяющегося процесса используется цикл
“пока справа свободно”. Тем самым мы получаем
такой алгоритм:
| известно, что Робот
находится
| в самой левой клетке
| горизонтального коридора,
| требуется найти суммарную радиацию
| во всех клетках коридора
| и запомнить ее в S
S := радиация
нц пока справа свободно
. вправо
. S := S + радиация
кц
При таком подходе нам не нужно
знать длину коридора, алгоритм будет успешно
работать для коридора любой длины.
Применим теперь второй подход и будем
запоминать информацию, получаемую Роботом, в
линейной таблице. Длина таблицы должна быть
задана в момент ее описания, так что в этом случае
нам важно знать, что длина коридора равна 16, чтобы
создать таблицу, в которой уместится вся
информация о радиации в коридоре:
вещтаб r[1:16]
Для правильного заполнения этой
таблицы необходимо помнить, в какой по счету
клетке коридора (нумерация от 1 до 16, слева
направо) находится Робот в момент очередного
измерения радиации. Введя для запоминания номера
целочисленную величину i,
получим такой алгоритм:
| известно, что Робот
в самой левой клетке
| горизонтального коридора длины 16
| требуется измерить радиацию во всех
| клетках коридора и
| запомнить ее в вещтаб r[1:16]
| Робот находится в клетке номер 1:
r[1] := радиация
нц для i от 2 до 16
. вправо
. r[i] := радиация
кц
На этом сбор информации, в
котором активно участвовал Робот, закончился.
Вся информация об уровнях радиации в клетках
исследуемого коридора собрана в памяти ЭВМ.
Остальную работу можно выполнить без помощи
Робота. Даже если Робот после сбора информации
сломается, ЭВМ, располагая данными измерений
радиации, сумеет завершить работу.
Теперь нам нужно проделать
вычислительный этап работы, найти суммарную
радиацию. Для этого с линейной таблицей r
нужно проделать стандартную процедуру обработки
информации — найти сумму элементов этой таблицы.
Это делается так:
вещ S, цел i
S := 0
нц для i от 1 до 16
. S := S + r[i]
кц
Замечание. Подсчет суммы
элементов вещественной линейной таблицы — это
часто встречающаяся операция, и обычно такие
операции оформляют как универсальные программы.
Поэтому мы составим универсальный
вспомогательный алгоритм-функцию сумма,
которым и воспользуемся для решения задачи.
Составим теперь полный алгоритм
подсчета суммарной радиации в коридоре, включая
универсальный алгоритм-функцию
Настало время снова вернуться к
простым величинам. Мы познакомились с числовыми
величинами и встречали в примерах литерные
величины. В алгоритмическом языке существуют еще
логические и символьные величины.
Величина целочисленного типа, как
следует из ее названия, может принимать только
целые значения. Величины такого типа можно
складывать, вычитать, умножать. К делению целых
чисел нужно относиться с осторожностью и
помнить, что при делении целых чисел всегда
получается вещественное число, даже если
возможно деление нацело. Например, 5/2 равно 2.5, 4/2 равно 2.02. Таким образом, деление целых
чисел всегда дает вещественный результат и, во
многих случаях, выполняется приближенно. Для
нахождения целой части вещественного числа в
алгоритмическом языке есть встроенная функция
цел int(вещ x)
Например, int(5/2) = 2, int(4/2) = 2,
int(-1/2) = -1.
Для деления с остатком на
положительное целое число в “КуМире” встроены
две функции:
цел div(цел m, цел
n)
| частное от деления m
|на n с остатком
цел mod(цел m, цел n)
| остаток от деления m
|на n
В отличие от многих других языков
программирования, где допускаются отрицательные
остатки, в алгоритмическом языке остаток никогда
не бывает отрицательным, при делении на
положитель-
ное число n остаток
может прини-
мать только значения от 0 до n–1. В функциях div
и mod второй аргумент должен
быть положителен.
Числа можно сравнивать, в
алгоритмическом языке есть обозначения для 6
операций сравнения: “<”, “>”, “<=”, “>=”,
“=” и “<>”. Операции сравнения “=” и “<>”
в алгоритмическом языке применимы к значениям
любого типа, остальными операциями сравнения
можно без опаски пользоваться для числовых
величин и с некоторой опаской для текстовых
величин, так как результат сравнения текстовых
величин не соответствует алфавитному
упорядочению. Наконец, целочисленная величина
может появиться в левой части команды
присваивания
величина := значение.
Величина логического типа (лог) может принимать только
одно из двух значений: да, нет3. Над значениями
логического типа допустимы три логические
операции:
и, или,
не.
Типы, которые мы уже изучали (цел, вещ),
и новые (лог, сим,
лит) являются так
называемыми встроенными, предопределенными
типами алгоритмического языка. Других (не
предопределенных) типов в алгоритмическом языке
нет. Средств для построения новых, “своих” типов
в алгоритмическом языке тоже нет.
Величины логического типа можно
использовать в условиях в алгоритмическом языке.
Для примера рассмотрим такую задачу. От
горизонтального коридора на поле Робота кое-где
вверх отходят тупики разной высоты. Надо
отметить клетки коридора напротив тех тупиков,
высота которых больше трех клеток (мы их назвали
“длинными тупиками”). Если мы начнем решать эту
задачу, т.е. составлять алгоритм, у нас, конечно,
будет цикл, потому что неизвестно, сколько клеток
в коридоре. Условием окончания цикла служит
условие “справа стена”. Внутри цикла надо идти
по коридору вправо и, если сверху обнаружится
“длинный” тупик, то соответствующую клетку
коридора закрасить.
Теперь, после введения величин
логического типа, мы, в соответствии с методом
последовательного уточнения, эту изложенную
выше идею решения можем записать прямо на
алгоритмическом языке:
алг отметить клетку
дано | выше клетки имеется
| вертикальный тупик
надо | закрасить входную клетку
тупика,
| если «сверху длинный тупик»
нач
если сверху длинный тупик
то закрасить
все
кон
Здесь условие “сверху длинный
тупик” — вызов вспомогательного
алгоритма-функции, значением которого является
логическое значение. Многие конструкции в
алгоритмическом языке вводятся именно для того,
чтобы, произнеся нормальную человеческую фразу
типа “если сверху длинный тупик, то закрасить
клетку коридора”, мы могли бы ее примерно в таком
же нормальном виде записать в алгоритм, но уже в
виде фрагмента алгоритма на алгоритмическом
языке. После того как мы написали этот фрагмент,
мы должны еще написать вспомогательный
алгоритм-функцию, который будет анализировать,
есть ли сверху “длинный” тупик.
И, наконец, скажем несколько слов о
символьных и литерных величинах. Значением
символьной величины может быть любой символ,
всего имеется 256 символов. Некоторые символы
можно найти на клавиатуре или увидеть на экране,
а другие символы называются “непечатными” и
увидеть их нельзя. Зато у каждого символа имеется
код — целое число от 0 до 255, и есть встроенные
функции “КуМира”, преобразующие символ в код и
обратно. Попробуем напечатать все символы с
кодами от 32 до 127:
Мы видим, что среди этих символов есть
цифры, латинские буквы, знаки препинания и
спецзнаки, но нет русских букв. Это и
неудивительно, символы с кодами от 0 до 127 — это
символы американской кодировки ASCII. Чтобы
увидеть русские буквы, нужно напечатать символы
с кодами от 128 до 255 (так называемые “символы
кодировки KOI-8r”) — см. скриншот.
Литерная величина строится из
символьных. Для литерных величин и их значений
часто используется термин строка. С
некоторой натяжкой литерную величину можно
представлять себе в виде линейной таблицы,
элементами которой являются символы, к которым
можно обращаться по номеру, как к элементам
таблицы. Но в отличие от числовых линейных таблиц
длина литерной строки (т.е. количество
“элементов таблицы”) может меняться в ходе
выполнения алгоритма, а при задании литерной
величины длина не указывается.
лит стр стр2
стр1:= «паровозик»
стр2:= «»
В этом примере заданы две строки с
именами стр1 и стр2.
Первая строка состоит из 8 символов:
стр1[1]=’п’
стр1[2]=’a’
…
стр1[8]=’к’
Вторая строка пуста, в ней нет ни
одного символа. В “КуМир” встроена функция
цел длин(лит стр)
подсчитывающая длину строки:
длин(стр1) = 8, длин(стр2) = 0
Эта функция облегчает работу со
строками: чтобы подсчитать какую-то
характеристику строки, перебирая все ее
элементы, можно использовать функцию длин в цикле для.
Например, для подсчета числа пробелов в строке
можно написать
цел i, n, лит стр
n := 0
нц для i от 1 до длин(стр)
. если стр[i] = » «
. . n := n + 1
. все
кц
В отличие от линейных таблиц над
литерными величинами определены еще две
операции: “вырезка” куска строки и добавление
одной строки в конец другой. Приведем ровно один
пример. Пусть
стр1 = «паровозик»
стр2 = «ход»
Тогда стр1[1:4] =
«паро» и стр1+стр2 =
«пароход»
Вырезка из строки снова является
строкой и обозначается так:
вырезка := строка[старт :
финиш]
В отличие от арифметических,
логических операций и операций сравнения
операция вырезки из строки имеет целых три
аргумента:
лит строка, цел старт, цел
финиш
и результат: лит
вырезка, причем аргументы вырезки из
строки имеют разные типы. Поэтому способ записи
вырезки из строки отличается от способа,
принятого для базовых операций.
Пример:
лит строка, вырезка
строка = «строка»
вырезка := строка[3:5]
утв вырезка = «рок»
При изучении величин литерного типа
можно сформулировать достаточное количество
задач, в которых аргументами и/или результатами
являются строки. Эта область подобна играм с
шифровкой и дешифровкой, которые так любят
многие дети. Наверняка в классе найдутся ученики,
которым работа со словами понравится больше, чем
управление Роботом. Связать эти два непохожих
внешне клас-
са задач можно следующим образом. Закодируем
5 команд Робота буквами
Закодируем программу управления
Роботом в виде строки путь из
этих пяти букв. Тогда можно будет поставить
несколько задач, в которых результат выполнения
Роботом данной программы нужно определить,
анализируя строку путь и не
используя массивы.
Легкая задача. По строке путь определить, вернулся ли Робот
в исходное положение.
Средняя по трудности задача. Робот
начал движение на пустом поле. В строке путь ровно две буквы “З”.
Определить, сколько клеток закрасил Робот.
Трудная задача. Робот начал
движение на пустом поле. В строке путь
не менее одной буквы “З”. Определить, закрасил
ли Робот более одной клетки.
И, наконец, еще об одних командах в
алгоритмическом языке — командах контроля.
утв <логическое
выражение>
дано <логическое выражение>
надо <логическое выражение>
Все три команды
выполняются так. Проверяется условие. Если
условие не соблюдается (равно нет), то “КуМир”
прекращает выполнение алгоритма и сообщает, что
возник отказ. Если же условие соблюдается, то
выполнение алгоритма нормально продолжается
так, как если бы команды контроля не было вовсе.
В этих командах может быть либо
записано так называемое контрольное условие,
либо не написано ничего, либо написан только
комментарий. Последний случай — самый частый в
примерах, когда дано и надо используются для
пояснения алгоритмов ученику, а не для
формальной проверки условий в ходе выполнения
алгоритма ЭВМ:
дано |Робот в начале
горизонтального
|коридора
|Вверх от коридора отходят тупики
|разной высоты
надо |Закрасить клетки коридора
напротив
|тех тупиков, высота которых больше
|трех клеток
Для простоты в начале освоения
“КуМира” можно считать эти конструкции
“предназначенными для комментариев” и
объяснение их реального смысла пропустить.
В отличие от конструкций дано
и надо, являющихся частью
записи алгоритма, команда утв может
быть помещена в произвольное место в теле
алгоритма. Если условие в дано
проверяется перед началом выполнения алгоритма,
а надо — после окончания
выполнения алгоритма, то утв —
в том месте, где эта команда написана.
Ответ на вопрос “зачем нужна команда утв?” можно свести к бытовой
аналогии: в прошлом веке на дверях лифта, которые
еще часто были не автоматическими, висело
красочное объявление:
“НЕ открывайте дверь лифта, пока не
убедитесь, что кабина находится перед вами. Это
может привести к падению в шахту”.
Очевидно, что такая проверка спасла от
серьезных травм не одного человека.
Игнорирование этого требования, например, в
скоростных лифтах главного здания МГУ на
Ленинских горах в Москве привело к ряду трагедий.
В системе “КуМир” школьник, пишущий
программу, естественно, не подвержен такой
опасности.
В программе, как и в жизни, — если
контрольное условие выполнено, то надо просто
продолжать дальше выполнять алгоритм. Убедились,
что все в порядке, — и работаем дальше. Если же
контрольное условие не выполнено (лифта нет!),
значит, где-то есть ошибка: либо алгоритм неверен,
либо он применяется в недопустимой для него
ситуации.
С содержательной точки зрения
значимость дано и надо состоит в том, что в них
описываются условия, которым должны
удовлетворять состояние Робота, значения
величин и пр.
Даже если условия записаны в виде комментариев,
они позволяют понять, что должен делать алгоритм,
не разбираясь с тем, как он это делает. Это полный
аналог формулировки теоремы в математике,
средство, позволяющее нам структурировать и
накапливать знания (алгоритмы). Аналогично, если
команда утв используется
для комментариев, пояснения алгоритма, то
некоторые его части становится возможным
понимать статически, понимать, что делает данный
фрагмент алгоритма. Это отличается от анализа и
восприятия того, какие действия происходят при
выполнении алгоритма.
1 В производственных языках
программирования вместо термина “таблица”
используется термин “массив” (массив данных,
массив информации). “Линейные таблицы”
называются “одномерными массивами”,
“прямоугольные таблицы” — “двумерными
массивами”, а также существуют трех-, четырех-,
пяти- и пр. “мерные массивы”.
2 В других языках
программирования операции деления с остатком и
нахождения остатка обозначаются другими
способами. Например, в языке Си частное и остаток
от деления двух целых чисел
m, n
обозначаются m/n и m%n
соответственно.
3 Точнее говоря, значением
логической величины может быть либо да, либо нет, либо значение величины может
быть не определено. Кроме того, для значений да и нет предусмотрены
синонимы true и false, которыми мы пользоваться
не будем.
Здесь описаны основные возможности системы КуМир (часть 1) и языка Кумир (часть 2). Знания этих возможностей достаточно для того, чтобы пройти тестирование. Полное описание возможностей системы КуМир приведено в файле system.pdf, языка КуМир – в файле manual.pdf; файлы находятся в каталоге KumirKumirHelp поставки системы КуМир. Полное описание доступно и из меню Инфо->«Язык и система Кумир» самой системы.
Часть 1. Система Кумир
1 Окно системы Кумир Окно системы Кумир выглядит так:
Рис.1
Вверху окна расположены заголовок окна, главное меню и панель инструментов; снизу — строка состояния. Строка состояния используется для вывода сообщений, показа положения курсора, состояния системы и т. п.
Окно разбито на две основные области: рабочую область (вверху) и область ввода-вывода (внизу). В рабочей области располагается программа, с которой работает система Кумир. Эта область делится на две части: область
программы (слева) и область построчных сообщений (справа). Область по-
строчных сообщений аналогична полям в ученических тетрадях. В эту область при подготовке программы выводятся сообщения об ошибках, найденных в каждой строке, а при выполнении — сведения о значениях переменных, присваиваемых в строке (см. ниже рис. 3).
Как по горизонтали, так и по вертикали виртуальный размер всех текстов не ограничены, поддерживается прокрутка. Границы между областями окна можно передвигать мышкой.
Окно можно свернуть-развернуть, сжать-растянуть, передвинуть и т. п.
1
2. Состояния системы Кумир
Усистемы Кумир есть четыре возможных состояния:
·РЕДАКТИРОВАНИЕ: происходит подготовка программы, выполнения нет.
·ВЫПОЛНЕНИЕ: происходит выполнение программы, редактирование текста программы запрещено.
·АНАЛИЗ результатов: выполнение завершено, однако все сообщения программы доступны для наблюдения и анализа; по любому действию в области программы, система переходит в состояние РЕДАКТИРОВАНИЕ, а сообщения сбрасываются. Система приходит в состояние АНАЛИЗ после окончания выполнения программы (нормального или аварийного).
·ПАУЗА: выполнение программы приостановлено, но может быть продолжено; редактирование текста программы запрещено. В состояние ПАУЗА система переходит в случае остановки во время выполнения (при вызове встроенной функции «пауза» или после очередного шага при выполнении программы по шагам), см. рис.2.
Рис.2 Окно системы КуМир в состоянии ПАУЗА
3. Главное меню Системы КуМир.
Меню «Программа» содержит следующие пункты:
2
Эти пункты имеют стандартный для современных оконных систем смысл и обеспечивают работу с файлами, в которых хранятся Кумирпрограммы, эти файлы имеют расширение .kum.
Меню «Редактирование» содержит следующие строки:
Первые шесть строк имеют стандартный смысл и могут быть выполнены с помощью стандартных аккордов, для них (кроме Найти и заменить.) предусмотрены инструментальные кнопки.
Команда «Закомментировать» добавляет знак комментария | в начало каждой выделенной (хотя бы частично) строки. Команда «Раскомментировать» удаляет знак комментария из начала каждой выделенной строки. Если в начале выделенной строки не было знака комментария, то содержимое этой строки не меняется. Для команд «Закомментировать» и «Раскомментировать» предусмотрены инструментальные клавиши.
Для того, чтобы набрать знак комментария при кириллической раскладке можно набрать аккорд Alt+!.
Меню «Вставка».
3
С помощью этого меню в текст программы можно вставлять заготовки основных алгоритмических конструкций.
Меню «Выполнение» содержит следующие строки:
· Выполнить непрерывно – начинает (при состоянии системы РЕДАКТИРОВАНИЕ или АНАЛИЗ) или продолжает (при состоянии системы ПАУЗА) выполнение программы. Программа выполняется
.непрерывно., т. е. без остановок между шагами. Выполнение программы может быть завершено (нормально, аварийно или по команде «Прервать») или приостановлено, если в ходе выполнения будет выполняться команда ввод, либо встроенная функция «пауза». Во время выполнения на поля выводятся вычисляемые значения величин и условий, см. рис.3
·«Непрерывно без показа на полях» – аналогично «Выполнить непре-
рывно» — но без вывода на поля вычисляемых значений величин и условий.
·«ШАГ» – Выполняет один ШАГ программы и переходит в режим ПАУЗА. Выполнение команды вызова алгоритма-процедуры трактует как один «ШАГ». При запуске в состоянии РЕДАКТИРОВАНИЕ и АНАЛИЗ останавливается перед выполнением алг-строки основного алгоритма. Строка, которая будет выполняться, выделяется цветом.
4
·«шаг» – аналогично команде «ШАГ». Отличие состоит в обработке команды алгоритма-процедуры и вычислении значения алгорит- ма-функции (если они есть в основной программе). В этих случаях очередным шагом будет выполнение строки-заголовка вспомогательного алгоритма. В дальнейшем команда «шаг» или «ШАГ» приведет к выполнению очередной команды внутри выполняемого вспомогательного алгоритма.
·«До конца алгоритма» – допускается использование только в состоянии ПАУЗА. Программа выполняется непрерывно, но останавливается на первой встретившейся строке кон (как будто перед ней стоит вызов функции пауза).
·«Прервать» – прерывает выполнение программы. Допускается ис-
пользование только в состояниях ВЫПОЛНЕНИЕ и ПАУЗА.
Для всех этих пунктов предусмотрены аккорды и инструментальные кнопки.
Меню «Инфо» содержит следующие строки:
«Величины» – это таблица содержит все величины, используемые в программе. Таблица является актуальной в каждый момент времени — так, если выполнение программы проходит при открытой таблице величин, то данные в таблице обновляются динамически.
«Алгоритмы» – список доступных алгоритмов (включая алгоритмы пользователя).
«Ключевые слова» – список ключевых слов языка КуМир.
«Язык и система КуМир» – полное описание языка КуМир и системы КуМир;
4. Использование области ввода-вывода В начале выполнения программы в поле ввода вывода выводится стро-
ка-заголовок вида (см. рис.3):
> 16:39:48 — Новая программа* — Начало выполнения
Далее под этой линией появляются все сообщения, выводимые программой (включая эхо ввода, см. ниже). В конце работы программы выводится итоговая строка и линия-разделитель. Предусмотрено 3 вида заключительной строки:
1. при нормальном завершении:
>16:33:33 — Новая программа* — Выполнение завершено
2. при ошибке выполнения:
>16:32:38 — Новая программа* — ОШИБКА ВЫПОЛНЕНИЯ: утв ложно
3. при прекращении выполнения командой .Прервать.:
>16:30:51 — Новая программа — Выполнение прервано
5
Часть 2. Язык КуМир
1. Общий вид алгоритма без параметров
алг имя
нач
тело алгоритма
кон
Пример:
алг Мой первый алгоритм
нач
вывод «Здравствуй, школа!»
кон
2. Типы величин. Описания величин. |
||
Базовые типы: |
Таблицы: |
|
целые цел |
целые цел таб |
|
вещественные вещ |
вещественные вещ таб |
|
логические лог |
логические лог таб |
|
символьные сим |
символьные сим таб |
|
литерные лит |
литерные лит таб |
|
Пример описания |
||
алг |
||
нач |
цел i, j, сим s, вещ таб а[1:50] вещ ф
цел длина, высота, лит текст, цел таб моя таблица[0:10]
кон
3. Арифметически выражения. Присваивание. |
|
Название операции |
Форма записи |
сложение |
x + y |
вычитание |
x y |
умножение |
x * y |
деление* |
x / y |
Возведение числа (x) в степень (y) |
x ** y |
присваивание |
x := y |
!!! результат деления имеет тип вещ даже при делении целых Пример:
алг
нач
цел x, y, z |
||
вещ f |
||
| Правильная запись |
||
z:=x+y |
||
f:=x/y |
||
f:=x*y |
||
x:=y**4 |
||
| Ошибочная запись |
Нельзя: цел:=вещ (112385) |
|
z:=x/y |
||
Нельзя: цел:=вещ (112385) |
||
x:=f-y |
||
кон
6
4. Стандартные функции для работы с числами
Название функции |
Форма записи |
||||||||
корень квадратный |
sqrt(x) |
||||||||
абсолютная величина (x вещественное, |
abs(x) и |
||||||||
y – целое) |
iabs(y) |
||||||||
остаток от деления x на y (x, y — целые) |
mod(x,y) |
||||||||
частное от деления x на y (x, y — целые) |
div(x,y) |
||||||||
целая часть числа x |
int(x) |
||||||||
5. Операции сравнения. |
|||||||||
Название операции |
Форма записи |
||||||||
Равно |
x = y |
||||||||
не равно |
x <> y |
||||||||
Меньше |
x<y |
||||||||
Больше |
x>y |
||||||||
меньше или равно |
x<=y |
||||||||
больше или равно |
x>=y |
||||||||
6. Логические операции |
|||||||||
Название |
|||||||||
операции |
Форма записи |
Пример |
|||||||
конъюнкция |
и |
а и б |
|||||||
дизъюнкция |
или |
а или б |
|||||||
отрицание |
не |
не a |
|||||||
7. Другие встроенные алгоритмы |
|||||||||
Функция |
Форма вызова |
||||||||
Код символа в таблице КОИ 8 |
код(с) |
||||||||
Символ таблицы КОИ 8 |
символ(х) |
8. Команды повторения
Цикл «для»
нц для i от i1 до i2
тело цикла (последовательность команд)
кц
Здесь i — величина типа цел (она называется параметром цикла), а i1 и i2 — целые выражения, т. е. выражения типа цел. При выполнении цикла для тело цикла выполняется последовательно для i=i1, i = i1+1,
. . . , i = i2. Если i1 = i2, то тело цикла выполнится один раз для i = i1. Если же i1 > i2, то тело цикла не выполнится ни разу.
7
Пример:
Алг
нач
цел a, b, i
целтаб t1[1:5] a:=1
b:=5
нц для i от a до b t1[i]:= a*i+b
кц
кон
Цикл «пока»
нц пока условие
тело цикла (последовательность команд)
кц
При выполнении цикла пока КУМИР циклически повторяет следующие дей ствия:
•Проверяет записанное после служебного слова пока условие.
•Если условие не соблюдается (условие=нет), то выполнение цикла за вершается и КуМир начинает выполнять команды, записанные после кц.
•Если же условие соблюдается (условие=да), то КуМир выполняет тело
цикла, снова проверяет условие и т.д. Пример:
алг нач
цел a, b a:=1 b:=5
нц пока a<b
| тело_цикла a:=a+1 b:=b-1
кц
кон
Цикл «кц_при»
нц
тело цикла (последовательность команд)
кц_при условие
Выполняется аналогично циклу «пока», но условие выхода из цикла прове ряется после выполнения тела цикла.
Пример:
Алг нач
цел a, b a:=1 b:=5
нц пока a<b
| тело_цикла a:=a+1 b:=b-1
кц
кон
8
9. Команды ветвления Общий вид команды если то иначе все:
если условие
то серия1 (последовательность команд) иначесерия2 (последовательность команд)
все
Серия2 вместе со служебным словом иначе может отсутствовать. В этом случае команда имеет вид:
если условие
то серия1 (последовательность команд)
все
При выполнении команды если КуМир сначала проверяет условие, запи санное между если и то. При соблюдении этого условия (условие=да) выполняется серия1, в противном случае — серия2 (если она есть), после чего КуМир переходит к выполнению ко манд, записанных после слова все.
Если условие не соблюдается (условие=нет), а серия2 вместе с иначе отсутствует, то КуМир сразу переходит к выполнению команд, записан ных после слова все.
Пример:
алг
нач
цел a, b цел p, q если a<b
то b:=b-a p:=p+q
иначе a:=a-b q:=q+p
все
кон
9. Операции ввода вывода Формат вызова ввод:
ввод имя
В качестве имени величины можно указать имя простой величины или имя элемента таблицы с указанием значений индексов. Признаком конца вво да служит нажатие на клавишу Enter.
9
Формат вызова вывод:
вывод выражение
Значения выражения выводится последовательно в строку области ввода вывода. Для вывода в новую строку используют ключевое слово нс.
Пример:
Алг
нач
цел a, b, i
целтаб t1[1:5] ввод a
ввод b
нц для i от 1 до 5
ввод t1[i]
кц вывод a
вывод нс вывод b
нц для i от 1 до 5 вывод t1[i], нс
кц
кон
10
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Alvin Seville 337 / 269 / 132 Регистрация: 25.07.2014 Сообщений: 4,537 Записей в блоге: 9 |
|
1 |
|
[Кумир] Ошибка: Индексы не нужны12.08.2018, 16:09. Показов 3046. Ответов 3
Ошибка: Как исправить? Код цел таб а[1 : 10] алг нач выводТаб(a) кон алг выводТаб (аргрез цел таб цель[1:10]) нач цел индекс нц для индекс от 1 до длина(цель) шаг 1 вывод цель[индекс], " " кц вывод нс кон 0 |
Супер-модератор 32445 / 20940 / 8104 Регистрация: 22.10.2011 Сообщений: 36,203 Записей в блоге: 7 |
|
12.08.2018, 18:34 |
2 |
Как исправить? Написать имена одинаково. Либо и в описании массива и в вызове процедуры латиницей, либо и там и там кириллицей. А ты пишешь в одном месте так, а в другом — эдак. Вот и ошибки… 1 |
Alvin Seville 337 / 269 / 132 Регистрация: 25.07.2014 Сообщений: 4,537 Записей в блоге: 9 |
|
12.08.2018, 18:44 [ТС] |
3 |
volvo, понял косяк. А на глаз и не видно. Добавлено через 3 минуты 0 |
Супер-модератор 32445 / 20940 / 8104 Регистрация: 22.10.2011 Сообщений: 36,203 Записей в блоге: 7 |
|
12.08.2018, 18:49 |
4 |
Сообщение было отмечено Соколиный глаз как решение РешениеНет, динамических структур данных вообще (и динамических массивов в частности) в КуМире тоже нет. 1 |
Здесь описаны основные возможности системы КуМир (часть 1) и языка Кумир (часть 2). Знания этих возможностей достаточно для того, чтобы пройти тестирование. Полное описание возможностей системы КуМир приведено в файле system.pdf, языка КуМир – в файле manual.pdf; файлы находятся в каталоге KumirKumirHelp поставки системы КуМир. Полное описание доступно и из меню Инфо->«Язык и система Кумир» самой системы.
Часть 1. Система Кумир
1 Окно системы Кумир Окно системы Кумир выглядит так:
Рис.1
Вверху окна расположены заголовок окна, главное меню и панель инструментов; снизу — строка состояния. Строка состояния используется для вывода сообщений, показа положения курсора, состояния системы и т. п.
Окно разбито на две основные области: рабочую область (вверху) и область ввода-вывода (внизу). В рабочей области располагается программа, с которой работает система Кумир. Эта область делится на две части: область
программы (слева) и область построчных сообщений (справа). Область по-
строчных сообщений аналогична полям в ученических тетрадях. В эту область при подготовке программы выводятся сообщения об ошибках, найденных в каждой строке, а при выполнении — сведения о значениях переменных, присваиваемых в строке (см. ниже рис. 3).
Как по горизонтали, так и по вертикали виртуальный размер всех текстов не ограничены, поддерживается прокрутка. Границы между областями окна можно передвигать мышкой.
Окно можно свернуть-развернуть, сжать-растянуть, передвинуть и т. п.
1
2. Состояния системы Кумир
Усистемы Кумир есть четыре возможных состояния:
·РЕДАКТИРОВАНИЕ: происходит подготовка программы, выполнения нет.
·ВЫПОЛНЕНИЕ: происходит выполнение программы, редактирование текста программы запрещено.
·АНАЛИЗ результатов: выполнение завершено, однако все сообщения программы доступны для наблюдения и анализа; по любому действию в области программы, система переходит в состояние РЕДАКТИРОВАНИЕ, а сообщения сбрасываются. Система приходит в состояние АНАЛИЗ после окончания выполнения программы (нормального или аварийного).
·ПАУЗА: выполнение программы приостановлено, но может быть продолжено; редактирование текста программы запрещено. В состояние ПАУЗА система переходит в случае остановки во время выполнения (при вызове встроенной функции «пауза» или после очередного шага при выполнении программы по шагам), см. рис.2.
Рис.2 Окно системы КуМир в состоянии ПАУЗА
3. Главное меню Системы КуМир.
Меню «Программа» содержит следующие пункты:
2
Эти пункты имеют стандартный для современных оконных систем смысл и обеспечивают работу с файлами, в которых хранятся Кумирпрограммы, эти файлы имеют расширение .kum.
Меню «Редактирование» содержит следующие строки:
Первые шесть строк имеют стандартный смысл и могут быть выполнены с помощью стандартных аккордов, для них (кроме Найти и заменить.) предусмотрены инструментальные кнопки.
Команда «Закомментировать» добавляет знак комментария | в начало каждой выделенной (хотя бы частично) строки. Команда «Раскомментировать» удаляет знак комментария из начала каждой выделенной строки. Если в начале выделенной строки не было знака комментария, то содержимое этой строки не меняется. Для команд «Закомментировать» и «Раскомментировать» предусмотрены инструментальные клавиши.
Для того, чтобы набрать знак комментария при кириллической раскладке можно набрать аккорд Alt+!.
Меню «Вставка».
3
С помощью этого меню в текст программы можно вставлять заготовки основных алгоритмических конструкций.
Меню «Выполнение» содержит следующие строки:
· Выполнить непрерывно – начинает (при состоянии системы РЕДАКТИРОВАНИЕ или АНАЛИЗ) или продолжает (при состоянии системы ПАУЗА) выполнение программы. Программа выполняется
.непрерывно., т. е. без остановок между шагами. Выполнение программы может быть завершено (нормально, аварийно или по команде «Прервать») или приостановлено, если в ходе выполнения будет выполняться команда ввод, либо встроенная функция «пауза». Во время выполнения на поля выводятся вычисляемые значения величин и условий, см. рис.3
·«Непрерывно без показа на полях» – аналогично «Выполнить непре-
рывно» — но без вывода на поля вычисляемых значений величин и условий.
·«ШАГ» – Выполняет один ШАГ программы и переходит в режим ПАУЗА. Выполнение команды вызова алгоритма-процедуры трактует как один «ШАГ». При запуске в состоянии РЕДАКТИРОВАНИЕ и АНАЛИЗ останавливается перед выполнением алг-строки основного алгоритма. Строка, которая будет выполняться, выделяется цветом.
4
·«шаг» – аналогично команде «ШАГ». Отличие состоит в обработке команды алгоритма-процедуры и вычислении значения алгорит- ма-функции (если они есть в основной программе). В этих случаях очередным шагом будет выполнение строки-заголовка вспомогательного алгоритма. В дальнейшем команда «шаг» или «ШАГ» приведет к выполнению очередной команды внутри выполняемого вспомогательного алгоритма.
·«До конца алгоритма» – допускается использование только в состоянии ПАУЗА. Программа выполняется непрерывно, но останавливается на первой встретившейся строке кон (как будто перед ней стоит вызов функции пауза).
·«Прервать» – прерывает выполнение программы. Допускается ис-
пользование только в состояниях ВЫПОЛНЕНИЕ и ПАУЗА.
Для всех этих пунктов предусмотрены аккорды и инструментальные кнопки.
Меню «Инфо» содержит следующие строки:
«Величины» – это таблица содержит все величины, используемые в программе. Таблица является актуальной в каждый момент времени — так, если выполнение программы проходит при открытой таблице величин, то данные в таблице обновляются динамически.
«Алгоритмы» – список доступных алгоритмов (включая алгоритмы пользователя).
«Ключевые слова» – список ключевых слов языка КуМир.
«Язык и система КуМир» – полное описание языка КуМир и системы КуМир;
4. Использование области ввода-вывода В начале выполнения программы в поле ввода вывода выводится стро-
ка-заголовок вида (см. рис.3):
> 16:39:48 — Новая программа* — Начало выполнения
Далее под этой линией появляются все сообщения, выводимые программой (включая эхо ввода, см. ниже). В конце работы программы выводится итоговая строка и линия-разделитель. Предусмотрено 3 вида заключительной строки:
1. при нормальном завершении:
>16:33:33 — Новая программа* — Выполнение завершено
2. при ошибке выполнения:
>16:32:38 — Новая программа* — ОШИБКА ВЫПОЛНЕНИЯ: утв ложно
3. при прекращении выполнения командой .Прервать.:
>16:30:51 — Новая программа — Выполнение прервано
5
Часть 2. Язык КуМир
1. Общий вид алгоритма без параметров
алг имя
нач
тело алгоритма
кон
Пример:
алг Мой первый алгоритм
нач
вывод «Здравствуй, школа!»
кон
2. Типы величин. Описания величин. |
||
Базовые типы: |
Таблицы: |
|
целые цел |
целые цел таб |
|
вещественные вещ |
вещественные вещ таб |
|
логические лог |
логические лог таб |
|
символьные сим |
символьные сим таб |
|
литерные лит |
литерные лит таб |
|
Пример описания |
||
алг |
||
нач |
цел i, j, сим s, вещ таб а[1:50] вещ ф
цел длина, высота, лит текст, цел таб моя таблица[0:10]
кон
3. Арифметически выражения. Присваивание. |
|
Название операции |
Форма записи |
сложение |
x + y |
вычитание |
x y |
умножение |
x * y |
деление* |
x / y |
Возведение числа (x) в степень (y) |
x ** y |
присваивание |
x := y |
!!! результат деления имеет тип вещ даже при делении целых Пример:
алг
нач
цел x, y, z |
||
вещ f |
||
| Правильная запись |
||
z:=x+y |
||
f:=x/y |
||
f:=x*y |
||
x:=y**4 |
||
| Ошибочная запись |
Нельзя: цел:=вещ (112385) |
|
z:=x/y |
||
Нельзя: цел:=вещ (112385) |
||
x:=f-y |
||
кон
6
4. Стандартные функции для работы с числами
Название функции |
Форма записи |
||||||||
корень квадратный |
sqrt(x) |
||||||||
абсолютная величина (x вещественное, |
abs(x) и |
||||||||
y – целое) |
iabs(y) |
||||||||
остаток от деления x на y (x, y — целые) |
mod(x,y) |
||||||||
частное от деления x на y (x, y — целые) |
div(x,y) |
||||||||
целая часть числа x |
int(x) |
||||||||
5. Операции сравнения. |
|||||||||
Название операции |
Форма записи |
||||||||
Равно |
x = y |
||||||||
не равно |
x <> y |
||||||||
Меньше |
x<y |
||||||||
Больше |
x>y |
||||||||
меньше или равно |
x<=y |
||||||||
больше или равно |
x>=y |
||||||||
6. Логические операции |
|||||||||
Название |
|||||||||
операции |
Форма записи |
Пример |
|||||||
конъюнкция |
и |
а и б |
|||||||
дизъюнкция |
или |
а или б |
|||||||
отрицание |
не |
не a |
|||||||
7. Другие встроенные алгоритмы |
|||||||||
Функция |
Форма вызова |
||||||||
Код символа в таблице КОИ 8 |
код(с) |
||||||||
Символ таблицы КОИ 8 |
символ(х) |
8. Команды повторения
Цикл «для»
нц для i от i1 до i2
тело цикла (последовательность команд)
кц
Здесь i — величина типа цел (она называется параметром цикла), а i1 и i2 — целые выражения, т. е. выражения типа цел. При выполнении цикла для тело цикла выполняется последовательно для i=i1, i = i1+1,
. . . , i = i2. Если i1 = i2, то тело цикла выполнится один раз для i = i1. Если же i1 > i2, то тело цикла не выполнится ни разу.
7
Пример:
Алг
нач
цел a, b, i
целтаб t1[1:5] a:=1
b:=5
нц для i от a до b t1[i]:= a*i+b
кц
кон
Цикл «пока»
нц пока условие
тело цикла (последовательность команд)
кц
При выполнении цикла пока КУМИР циклически повторяет следующие дей ствия:
•Проверяет записанное после служебного слова пока условие.
•Если условие не соблюдается (условие=нет), то выполнение цикла за вершается и КуМир начинает выполнять команды, записанные после кц.
•Если же условие соблюдается (условие=да), то КуМир выполняет тело
цикла, снова проверяет условие и т.д. Пример:
алг нач
цел a, b a:=1 b:=5
нц пока a<b
| тело_цикла a:=a+1 b:=b-1
кц
кон
Цикл «кц_при»
нц
тело цикла (последовательность команд)
кц_при условие
Выполняется аналогично циклу «пока», но условие выхода из цикла прове ряется после выполнения тела цикла.
Пример:
Алг нач
цел a, b a:=1 b:=5
нц пока a<b
| тело_цикла a:=a+1 b:=b-1
кц
кон
8
9. Команды ветвления Общий вид команды если то иначе все:
если условие
то серия1 (последовательность команд) иначесерия2 (последовательность команд)
все
Серия2 вместе со служебным словом иначе может отсутствовать. В этом случае команда имеет вид:
если условие
то серия1 (последовательность команд)
все
При выполнении команды если КуМир сначала проверяет условие, запи санное между если и то. При соблюдении этого условия (условие=да) выполняется серия1, в противном случае — серия2 (если она есть), после чего КуМир переходит к выполнению ко манд, записанных после слова все.
Если условие не соблюдается (условие=нет), а серия2 вместе с иначе отсутствует, то КуМир сразу переходит к выполнению команд, записан ных после слова все.
Пример:
алг
нач
цел a, b цел p, q если a<b
то b:=b-a p:=p+q
иначе a:=a-b q:=q+p
все
кон
9. Операции ввода вывода Формат вызова ввод:
ввод имя
В качестве имени величины можно указать имя простой величины или имя элемента таблицы с указанием значений индексов. Признаком конца вво да служит нажатие на клавишу Enter.
9
Формат вызова вывод:
вывод выражение
Значения выражения выводится последовательно в строку области ввода вывода. Для вывода в новую строку используют ключевое слово нс.
Пример:
Алг
нач
цел a, b, i
целтаб t1[1:5] ввод a
ввод b
нц для i от 1 до 5
ввод t1[i]
кц вывод a
вывод нс вывод b
нц для i от 1 до 5 вывод t1[i], нс
кц
кон
10
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Содержание
- Описания простых величин
- Описания таблиц
- Область действия описаний
- Знакомство с языком и системой КуМир путем решения задач С2
- Типы величин
- Понятие «слово»
- Ключевые слова
- Особенности имен в языке КуМир
- Вопросы для самопроверки
Перед использованием в КуМир-программе каждую величину необходимо описать, то есть задать величине статические характеристики: имя, тип и вид.
Рассмотрим способы описания простых и табличных величин.
Описания простых величин
Для описания простых величин используется команда описания, состоящая из ключевого слова необходимого типа ( цел , вещ , сим , лит , лог ), после которого следует имя (или список имен) величины. Например,
- цел длина, ширина
- лит примечание
В приведенном примере в первом случае описываются две величины целого типа длина и ширина , следующая команда описывает величину диагональ , которой присваивается вещественный тип и в последнем случае величина примечание получает литерный тип.
Описания таблиц
В описании таблиц после описания типа используется ключевое слово таб (может записываться слитно или раздельно с ключевым словом типа), затем, для каждой величины указываются размерность таблицы и диапазон изменения индексов. Например,
- вещтаб рост[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, а&в
Исключение: ключевое слово не можно использовать в Кумир-программе не более одного раза в отрицаниях логических величин, таблиц и алгоритмов функций между словами многословного имени. Например,
- лог А, пятый урок история = да
- А := не пятый урок история
- А := пятый не урок история
- А := пятый урок не история
Вопросы для самопроверки
- Какие символы относятся к словарным символам в языке Кумир?
- Что представляет собой слово в Кумире?
- Какие слова называются ключевыми?
- Какими особенностями обладает имя в языке Кумир?
Copyright © 2014-2021, Урок информатики
Все права защищены
Источник
Содержание
- Кумир имя не объявлено что делать
- Помогите, пожалуйста, почему в программе КуМир ,,Имя не объявлено», хотя там всё правильно. Что мне нужно исправить.
- Настройка среды Кумир для исполнителя Робот
- КуМир, Исполнитель Робот
- Главное меню
- Пульт
- Задачи
- Знакомство с языком и системой КуМир путем решения задач С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-файл с картинкой обстановки, именем файла, датой и комментарием |
Закрыть | Закрывает окно редактирования |
Главное меню
Пульт
Вызов пульта производится нажатием на кнопку или через меню Робот→Показать пульт.
Если выполнить команду меню Редактирование→Перехватывать команды Пульта, то действия, производимые пультом будут записываться в виде правильных команд в текст программы. Названный пункт будет помечен флажком (галочкой).
Некоторые из записываемых команд окажутся избыточными, так как для них используется вывод информации, а не действия. Но их можно отредактировать, либо взять из них только нужные элементы.
Подробности использования пульта смотри меню Инфо→Язык и система КуМир.
Задачи
- Робот находится в левом верхнем углу прямоугольной области неизвестного размера, со всех сторон окруженной стенками. Посередине находится стена, в которой есть проход. Где он, точно неизвестно, но проход не примыкает к нижней стенке. Задача: написать программу, которая переведет робота в правый нижний угол. Файл среды.
- См. также ОГЭ: вопрос 20.1.
- См. также ЕГЭ: вопросы 6, 14.
Copyright © 1993–2022 Мацкявичюс Д.А. Все права защищены.
Никакая часть сайта не может быть воспроизведена никаким способом без письменного разрешения правообладателя и явной ссылки на данный ресурс.
Источник
Знакомство с языком и системой КуМир путем решения задач С2
Знакомство с языком и системой КуМир путем решения задач С2
Настоящая короткая инструкция адресована читателям, имеющим практический опыт решения нескольких десятков простейших задач по программированию на каком-нибудь языке программирования.
Предполагается, что читатель хочет с минимальными затратами времени научиться решать на школьном алгоритмическом языке в системе КуМир, задачи, подобные задачам С2-С6 демоверсии компьютеризированного ЕГЭ. Эта демоверсия опубликована на сайте МИОО: На том же сайте сказано, как загрузить систему КуМир (версия для ЕГЭ) для операционных систем типа MS Windows и Linux . Ниже мы будем обсуждать только те понятия, конструкции и команды школьного языка и системы КуМир, которые нужны при решении задач типа С2-С3. В частности, все программы ниже будут состоять из одного алгоритма без параметров. В условиях задач С2-С6 не предусмотрена какая-либо работа с файлами. Предписывается вводить информацию с клавиатуры и выводить ее на экран. Дополнительно требуется, чтобы каждая порция вводимой или выводимой информации размещалась на отдельной строке и обрабатывалась одной командой ввод или вывод .
Вывод значения величины х в отдельную строку производится в командой
где нс означает н овая с трока.
Ввод значения величины х производится командой
по этой команде в окне ввода/вывода подсвечивается строка, в которую будет направлено эхо ввода и система КуМир ожидает посимвольного ввода значения величины, завершаемого нажатием клавиши Enter .
Итак, загружаем КуМир и, согласно инструкции, запускаем версию КуМира для ЕГЭ. Мы увидим следующую картинку.
В верхней строке с иконками команд, правее крестика, должно быть пусто. Если правее крестика Вы увидели три желто-зеленые иконки, то Вы запустили полный КуМир, с Роботом и Чертежником, которые Вам не нужны. Перечитайте инструкцию и запустите версию КуМир для ЕГЭ. Размеры трех областей, которые мы видим при первом появлении окна КуМира на экране, для задач С2-С6 неудобны. Их нужно изменить. Для этого нужно «схватить» мышкой нижний край окна (под словом Редактирование) и уменьшить высоту окна, затем «схватить» мышкой правый край окна и уменьшить ширину и наконец, нужно подвинуть границы между тремя областями окна так, чтобы получилась картинка примерно такой формы и размера:
Начнем с задачи С2, в которой нужно подсчитать количество различных значений среди модулей трех введенных с клавиатуры целых чисел a , b , c .
Условие и решение задачи C 2
С2. Составить программу, которая вводит с клавиатуры три целых числа a, b,c (каждое число – отдельной командой «ввод»), заменяет каждое из этих чисел на его модуль и выводит на экран количество различных среди полученных трех чисел. Ничего, кроме этого количества, программа выводить не должна. Например, если все числа равны, программа должна выводить число 1 . При использовании системы Fr ee Pascal для представления целых чисел используйте тип LongInt .
Указание. Модуль целого числа можно вычислить следующим образом:
Пояснение. Ответом в этой задаче является программа, записанная на школьном алгоритмическом языке или языке Free Pascal. Эта программа должна быть подготовлена и проверена в среде программирования КуМир или Free Pascal и сохранена в одном файле средствами среды программирования. Далее этот файл должен быть загружен в экзаменационную работу средствами системы КТС ЕГЭ.
Не забудьте загрузить в Вашу экзаменационную работу файл с подготовленной Вами программой.
Важное замечание. В КуМире имена переменных можно писать русскими буквами, а можно и латинскими. Какой способ удобнее? При решении задач С2-С6 удобнее всего установить латинский нижний регистр и давать переменным однобуквенные имена, тем более, что в условиях задач уже используются имена: a , b , c , n . Чтобы поменьше переключать регистр при наборе ключевых слов на русском языке, используйте клавишу Alt: пока эта клавиша удерживается в нажатом положении, текущий латинский регистр становится русским (и наоборот).
Алгоритм решения задачи С2 назовем С2 (заглавная латинская буква С). КуМир для ЕГЭ настроен так, что латинские буквы в именах изображаются курсивом, поэтому в тексте программы латинские буквы можно отличить от схожих по начертанию русских. Сохранять программу будем в файле C 2.kum
Начнем составление алгоритма. В начале алгоритма, после слова нач, опишем целые переменные a , b , c
далее напишем команды ввода значения этих переменных с клавиатуры. Как требуется в условии задачи, каждое значение введем отдельной командой:
Далее, следуя указанию по программированию из условия задачи, добавим команды, заменяющие каждое число на его модуль, и выполним получившуюся программу, нажав клавишу F9
В окне ввода/вывода внизу появляется желтая строка, в которую будет производиться ввод цифр первого числа. В нижней части обрамления окна система выводит сообщение Ожидается ввод: цел. Ввод цифр целого числа должен быть завершен нажатием клавиши Enter . Введем единственую цифру первого числа 1 и нажмем клавишу Enter , аналогочно введем числа -1 и 2. Программа завершит работу:
На полях программы, справа от ее текста, система КуМир показывает результаты выполнения команд ввод в строках 3,4,5 и результаты присваиваний в строках 6,7,8. И на полях строк 3,4,5 и в окне ввода/вывода видно, что были введены три числа 1 -1 2 . Однако на полях строк 6,7,8 почему-то показано, что все три числа стали равны 1 . Почему же число c оказалось равным 1 , а не 2 ? «Элементарно, Ватсон»: на место строки 8 мы скопировали строку 6, собираясь затем поменять в ней в двух местах букву a на букву c . После этого мы изменили первую букву а , но забыли изменить вторую и получилась ошибочная команда
Исправим эту ошибку и попробуем дописать в конец алгоритма команду, вычисляющую количество различных среди чисел a , b :
Технические замечания. 1) Хотя в меню вставка есть макрокоманды по вставке управляющих конструкций, в данном случае удобнее набрать ключевые слова конструкции вручную, разместив их в одной строке.
2) В процессе редактировании строки, до момента окончания редактирования строки, КуМир не производит перепроверку программы. Эта перепроверка запускается после «покидания» строки курсором.
Уводим курсор из редактируемой строки номер 9 и смотрим, что получилось. КуМир сообщает, что в строке 9 найдены три ошибки типа «Величина или алгоритм не описаны»:
Какие именно величины не описаны, показано в строке 9 тремя красными подчеркиваниями. Во-первых, подчеркнута, русская буква а, ее нужно исправить на латинскую а. Кроме того, мы забыли описать величину k .
Исправляем эти ошибки и пока [1] КуМир переразбирает программу, думаем, что еще осталось сделать. Величина k показывает, сколько различных среди первых двух чисел a и b . Сравним третье число c числом а, затем с числом b . Если c не совпадает ни с a ни с b , то при переходе от набора чисел
a b к набору a b c количество различных чисел увеличивается на 1. Если же число c совпадает с одним из первых двух чисел, то добавление числа c к набору a b количества различных чисел не меняет. Эти длинные словесные объяснения записываются в алгоритме очень коротко:
Для завершения программы осталось вывести вычисленный ответ k в отдельной строке вывод k , нс:
Запустив программу для входных данных 1 1 1 , получим правильный ответ 1:
Запуская программу еще на нескольких наборах входных данных, убеждаемся, что она работает правильно:
Убедившись в правильности программы, необходимо сохранить ее, а затем включить файл C 2. kum в экзаменационную работу средствами системы КТС ЕГЭ.
[1] Для коротенькой программы переразбор происходит мгновенно. Для очень длинной программы на не очень новом компьютере переразбор может занять несколько секунд. Зеленый сигнал светофора показывает, что переразбор закончен. Для коротких программ на светофор можно не обращать внимания.
Источник
Цикл «для». Табличные
величины. Логические, символьные и литерные
величины
Мы находимся на финальной прямой
изучения алгоритмического языка.
Сейчас нам надо изучить еще одну
конструкцию алгоритмического языка — цикл для. Вспомним задачу про
подсчет суммы первых N нечетных чисел. В этой
задаче нужно сложить все числа арифметической
прогрессии с шагом 2, начиная от числа 1 и
заканчивая числом 2N–1. С помощью цикла для это записывается так:
S := 0
нц для k от 1 до 2*N — 1 шаг 2
. S := S + k
кц
Действие внутри цикла, а именно S := S + k, будет выполнено сначала для k = 1, затем для k = 3,
затем для k = 5 и последний раз
для k = 2*N — 1. Цикл для
и придуман для упрощения перебора членов
арифметических прогрессий с известными
начальным и конечным членами и шагом.
Как и команда выбор,
цикл для является
избыточной конструкцией в том смысле, что
абсолютно любой алгоритм можно записать и без
этого цикла, заменив его циклом пока:
i := i1
нц пока i <= i2
тело цикла
i := i + 1
кц
Но это не очень удобно, так как
можно забыть о присваивании начального значения
перед циклом или увеличении величины i внутри цикла. Поэтому цикл для вводится здесь просто, как
компактная форма записи.
При работе с табличными величинами
циклы для встречаются очень
часто. К табличным величинам мы сейчас и
перейдем.
№ |
Лекция |
17/2009 |
Лекция |
18/2009 |
Лекция |
18/2009 |
Лекция 3. |
Контрольная |
|
20/2009 |
Лекция 4. |
21/2009 |
Лекция 5. |
Контрольная |
|
22/2009 |
Лекция |
23/2009 |
Лекция 7. |
24/2009 |
Лекция 8. Итоговая работа. |
Соотношение между “табличными
величинами” и просто “величинами” примерно
такое же, как между “циклами” и просто
“командами”. Если циклы позволяют коротко
описывать огромные последовательности действий
для ЭВМ, то табличные величины дают возможность
коротко описывать огромные массивы информации,
которые должны быть обработаны1.
Общий вид цикла для:
нц для i от i1 до
i2
· тело_цикла
кц
Здесь i — величина типа цел (она называется
параметром цикла), а i1 и i2 — целые
выражения, т.е. выражения типа цел.
При выполнении цикла для
тело цикла выполняется
последовательно для i = i1, i = i1 + 1, … , i = i2. Если i1 = i2, то тело цикла
выполнится один раз для i = i1.
Если же i1 > i2, то тело цикла не выполнится ни разу.
Общий вид цикла для с шагом:
нц для i от i1 до
i2 шаг i3
· тело_цикла
кц
Если шаг i3 (который также должен
быть целым выражением) равен
положительному числу d, то тело цикла будет выполняться
последовательно для i = i1,
i = i1 + d, i = i1 + 2d,
… до тех пор, пока значение i удовлетворяет условию
i <= i2. Если же шаг
i3 отрицателен и равен
?d, то тело цикла будет
выполняться последовательно для i = i1,
i = i1 ? d, i = i1 ? 2d, … до тех пор, пока
значение i удовлетворяет
условию i >= i2.
Линейные таблицы соответствуют
классической модели памяти ЭВМ. Фактически у
самой ЭВМ основным хранилищем информации служит
одна большая линейная таблица байтов.
Табличная величина состоит из
“элементов”, доступ к элементу таблицы мы
получаем, указывая его номер — индекс, а
элемент таблицы Т с индексом i в алгоритмическом языке
записывается как T[i].
Для описания таблиц после описания
типа нужно указать ключевое слово таб.
Название типа и ключевое слово таб
разрешается писать и слитно, и раздельно. Обе
формы записи
вещ таб Т[1:10]
и
вещтаб Т[1:10]
являются правильными. Размерность
таблицы и границы изменения индексов
указываются после имени каждой величины.
Пример:
цел таб k[-5:5]
Здесь k —
линейная таблица, состоящая из 11 элементов
целого типа. Индексы элементов принимают
значения от –5 до 5. Этот пример не типичный. Чаще
всего элементы таблицы нумеруют, начиная с 1, как
в языке Паскаль, или начиная с 0, как в языке Си.
Табличная величина имеет одно общее
для всех ее элементов имя, а элементы таблицы
отдельных имен не имеют. Именно этим табличная
величина отличается от просто набора из
нескольких величин. За счет этого мы можем
компактно описать большое количество
“элементарных” величин. Так, например, запись
цел таб Т[1:1000]
заставляет ЭВМ выделить память для
тысячи целых чисел. Используя имя таблицы Т и вычисленное в алгоритме
значение величины i, можно
получить или изменить i-й
элемент таблицы, написав Т[i]. Мы
получаем возможность компактно записать
обработку большого количества информации.
Рассмотрим, например, фрагмент алгоритма
нц для i от 1 до
1000
Т[i] := 0
кц
Выполняя этот фрагмент, ЭВМ
присваивает значение 0 тысяче элементов таблицы,
то есть изменяет большой объем информации —
целую тысячу чисел. А ведь в приведенном
фрагменте программы всего три строчки. Таким
образом, использование табличных величин
позволяет составлять компактные алгоритмы,
обрабатывающие огромное количество информации,
задействовать не только быстродействие, но и
объем памяти ЭВМ.
Поле Робота можно рассматривать как
таблицу, в каждой клетке которой записаны два
числа — радиация и температура. Для лучшего
усвоения понятия таблицы можно использовать
аналогии с соответствующими фрагментами поля
Робота. Так, горизонтальный коридор на поле
Робота с заданной в каждой клетке коридора
радиацией аналогичен линейной таблице с
вещественными элементами (см. пример). А все поле
Робота с заданной в каждой клетке температурой —
это аналог прямоугольной таблицы, то есть аналог
массива с двумя измерениями. Такие массивы на
бумаге и на “доске” изображаются обычно в виде
прямоугольных таблиц, откуда и название.
Предположим, что Робот находится в
левом конце горизонтального коридора из 16
клеток, и требуется провести “радиационную
разведку” этого коридора, то есть измерить
радиацию в каждой клетке коридора и подсчитать
какие-то характеристики измеренных данных:
суммарную радиацию, максимальную радиацию, номер
клетки с минимальным значением радиации и т.п.
Для решения подобных задач применимы
два разных подхода. При первом подходе Робот
перемещается по коридору, для каждой клетки
проводит измерение уровня радиации в каждой
клетке и немедленно проводит все требуемые
подсчеты. При таком подходе нет необходимости
запоминать все измеренные значения уровня
радиации, обработка данных проводится “на
ходу”. Второй подход состоит в том, чтобы разделить
во времени этап получения информации и этап ее
последующей обработки. При втором подходе Робот
идет по коридору, измеряет уровень радиации в
каждой клетке и “накапливает” где-то полученную
информацию. Далее Робот “отдыхает”, а
накопленная информация обрабатывается нужным
образом, то есть с этой информацией ЭВМ проводит
требуемое вычисление. При этом на этапе
проведения вычисления совершенно неважно,
откуда взялись исходные данные для этого
вычисления: в процессе измерения радиации
Роботом или в результате каких-то других
действий. Важно только, чтобы эти данные были
представлены в какой-то стандартизованной форме.
В школьном алгоритмическом языке таких форм две.
Данные можно накапливать в таблицах или в файлах.
Для определенности далее мы
рассмотрим задачу подсчета суммарной радиации
коридора с сохранением “накопленной”
информации в линейной таблице.
При первом подходе — подсчете “на
ходу” — для подсчета суммарной радиации нам
понадобится всего одна величина вещ
S, которая будет хранить
суммарную радиацию в клетках, где уже побывал
Робот.
Составляя алгоритм, можно рассуждать
так. Перед началом перемещения по коридору Робот
побывал только в одной клетке коридора — в самой
левой, и нужно запомнить в S
значение радиации в этой клетке:
S := радиация
Далее Робот должен сместиться
вправо, измерить значение радиации в следующей
клетке и добавить его к S:
вправо; S := S + радиация
Этот процесс нужно продолжать до
тех пор, пока коридор не кончится, то есть пока
справа от Робота свободно. Для описания такого
повторяющегося процесса используется цикл
“пока справа свободно”. Тем самым мы получаем
такой алгоритм:
| известно, что Робот
находится
| в самой левой клетке
| горизонтального коридора,
| требуется найти суммарную радиацию
| во всех клетках коридора
| и запомнить ее в S
S := радиация
нц пока справа свободно
. вправо
. S := S + радиация
кц
При таком подходе нам не нужно
знать длину коридора, алгоритм будет успешно
работать для коридора любой длины.
Применим теперь второй подход и будем
запоминать информацию, получаемую Роботом, в
линейной таблице. Длина таблицы должна быть
задана в момент ее описания, так что в этом случае
нам важно знать, что длина коридора равна 16, чтобы
создать таблицу, в которой уместится вся
информация о радиации в коридоре:
вещтаб r[1:16]
Для правильного заполнения этой
таблицы необходимо помнить, в какой по счету
клетке коридора (нумерация от 1 до 16, слева
направо) находится Робот в момент очередного
измерения радиации. Введя для запоминания номера
целочисленную величину i,
получим такой алгоритм:
| известно, что Робот
в самой левой клетке
| горизонтального коридора длины 16
| требуется измерить радиацию во всех
| клетках коридора и
| запомнить ее в вещтаб r[1:16]
| Робот находится в клетке номер 1:
r[1] := радиация
нц для i от 2 до 16
. вправо
. r[i] := радиация
кц
На этом сбор информации, в
котором активно участвовал Робот, закончился.
Вся информация об уровнях радиации в клетках
исследуемого коридора собрана в памяти ЭВМ.
Остальную работу можно выполнить без помощи
Робота. Даже если Робот после сбора информации
сломается, ЭВМ, располагая данными измерений
радиации, сумеет завершить работу.
Теперь нам нужно проделать
вычислительный этап работы, найти суммарную
радиацию. Для этого с линейной таблицей r
нужно проделать стандартную процедуру обработки
информации — найти сумму элементов этой таблицы.
Это делается так:
вещ S, цел i
S := 0
нц для i от 1 до 16
. S := S + r[i]
кц
Замечание. Подсчет суммы
элементов вещественной линейной таблицы — это
часто встречающаяся операция, и обычно такие
операции оформляют как универсальные программы.
Поэтому мы составим универсальный
вспомогательный алгоритм-функцию сумма,
которым и воспользуемся для решения задачи.
Составим теперь полный алгоритм
подсчета суммарной радиации в коридоре, включая
универсальный алгоритм-функцию
Настало время снова вернуться к
простым величинам. Мы познакомились с числовыми
величинами и встречали в примерах литерные
величины. В алгоритмическом языке существуют еще
логические и символьные величины.
Величина целочисленного типа, как
следует из ее названия, может принимать только
целые значения. Величины такого типа можно
складывать, вычитать, умножать. К делению целых
чисел нужно относиться с осторожностью и
помнить, что при делении целых чисел всегда
получается вещественное число, даже если
возможно деление нацело. Например, 5/2 равно 2.5, 4/2 равно 2.02. Таким образом, деление целых
чисел всегда дает вещественный результат и, во
многих случаях, выполняется приближенно. Для
нахождения целой части вещественного числа в
алгоритмическом языке есть встроенная функция
цел int(вещ x)
Например, int(5/2) = 2, int(4/2) = 2,
int(-1/2) = -1.
Для деления с остатком на
положительное целое число в “КуМире” встроены
две функции:
цел div(цел m, цел
n)
| частное от деления m
|на n с остатком
цел mod(цел m, цел n)
| остаток от деления m
|на n
В отличие от многих других языков
программирования, где допускаются отрицательные
остатки, в алгоритмическом языке остаток никогда
не бывает отрицательным, при делении на
положитель-
ное число n остаток
может прини-
мать только значения от 0 до n–1. В функциях div
и mod второй аргумент должен
быть положителен.
Числа можно сравнивать, в
алгоритмическом языке есть обозначения для 6
операций сравнения: “<”, “>”, “<=”, “>=”,
“=” и “<>”. Операции сравнения “=” и “<>”
в алгоритмическом языке применимы к значениям
любого типа, остальными операциями сравнения
можно без опаски пользоваться для числовых
величин и с некоторой опаской для текстовых
величин, так как результат сравнения текстовых
величин не соответствует алфавитному
упорядочению. Наконец, целочисленная величина
может появиться в левой части команды
присваивания
величина := значение.
Величина логического типа (лог) может принимать только
одно из двух значений: да, нет3. Над значениями
логического типа допустимы три логические
операции:
и, или,
не.
Типы, которые мы уже изучали (цел, вещ),
и новые (лог, сим,
лит) являются так
называемыми встроенными, предопределенными
типами алгоритмического языка. Других (не
предопределенных) типов в алгоритмическом языке
нет. Средств для построения новых, “своих” типов
в алгоритмическом языке тоже нет.
Величины логического типа можно
использовать в условиях в алгоритмическом языке.
Для примера рассмотрим такую задачу. От
горизонтального коридора на поле Робота кое-где
вверх отходят тупики разной высоты. Надо
отметить клетки коридора напротив тех тупиков,
высота которых больше трех клеток (мы их назвали
“длинными тупиками”). Если мы начнем решать эту
задачу, т.е. составлять алгоритм, у нас, конечно,
будет цикл, потому что неизвестно, сколько клеток
в коридоре. Условием окончания цикла служит
условие “справа стена”. Внутри цикла надо идти
по коридору вправо и, если сверху обнаружится
“длинный” тупик, то соответствующую клетку
коридора закрасить.
Теперь, после введения величин
логического типа, мы, в соответствии с методом
последовательного уточнения, эту изложенную
выше идею решения можем записать прямо на
алгоритмическом языке:
алг отметить клетку
дано | выше клетки имеется
| вертикальный тупик
надо | закрасить входную клетку
тупика,
| если «сверху длинный тупик»
нач
если сверху длинный тупик
то закрасить
все
кон
Здесь условие “сверху длинный
тупик” — вызов вспомогательного
алгоритма-функции, значением которого является
логическое значение. Многие конструкции в
алгоритмическом языке вводятся именно для того,
чтобы, произнеся нормальную человеческую фразу
типа “если сверху длинный тупик, то закрасить
клетку коридора”, мы могли бы ее примерно в таком
же нормальном виде записать в алгоритм, но уже в
виде фрагмента алгоритма на алгоритмическом
языке. После того как мы написали этот фрагмент,
мы должны еще написать вспомогательный
алгоритм-функцию, который будет анализировать,
есть ли сверху “длинный” тупик.
И, наконец, скажем несколько слов о
символьных и литерных величинах. Значением
символьной величины может быть любой символ,
всего имеется 256 символов. Некоторые символы
можно найти на клавиатуре или увидеть на экране,
а другие символы называются “непечатными” и
увидеть их нельзя. Зато у каждого символа имеется
код — целое число от 0 до 255, и есть встроенные
функции “КуМира”, преобразующие символ в код и
обратно. Попробуем напечатать все символы с
кодами от 32 до 127:
Мы видим, что среди этих символов есть
цифры, латинские буквы, знаки препинания и
спецзнаки, но нет русских букв. Это и
неудивительно, символы с кодами от 0 до 127 — это
символы американской кодировки ASCII. Чтобы
увидеть русские буквы, нужно напечатать символы
с кодами от 128 до 255 (так называемые “символы
кодировки KOI-8r”) — см. скриншот.
Литерная величина строится из
символьных. Для литерных величин и их значений
часто используется термин строка. С
некоторой натяжкой литерную величину можно
представлять себе в виде линейной таблицы,
элементами которой являются символы, к которым
можно обращаться по номеру, как к элементам
таблицы. Но в отличие от числовых линейных таблиц
длина литерной строки (т.е. количество
“элементов таблицы”) может меняться в ходе
выполнения алгоритма, а при задании литерной
величины длина не указывается.
лит стр стр2
стр1:= «паровозик»
стр2:= «»
В этом примере заданы две строки с
именами стр1 и стр2.
Первая строка состоит из 8 символов:
стр1[1]=’п’
стр1[2]=’a’
…
стр1[8]=’к’
Вторая строка пуста, в ней нет ни
одного символа. В “КуМир” встроена функция
цел длин(лит стр)
подсчитывающая длину строки:
длин(стр1) = 8, длин(стр2) = 0
Эта функция облегчает работу со
строками: чтобы подсчитать какую-то
характеристику строки, перебирая все ее
элементы, можно использовать функцию длин в цикле для.
Например, для подсчета числа пробелов в строке
можно написать
цел i, n, лит стр
n := 0
нц для i от 1 до длин(стр)
. если стр[i] = » «
. . n := n + 1
. все
кц
В отличие от линейных таблиц над
литерными величинами определены еще две
операции: “вырезка” куска строки и добавление
одной строки в конец другой. Приведем ровно один
пример. Пусть
стр1 = «паровозик»
стр2 = «ход»
Тогда стр1[1:4] =
«паро» и стр1+стр2 =
«пароход»
Вырезка из строки снова является
строкой и обозначается так:
вырезка := строка[старт :
финиш]
В отличие от арифметических,
логических операций и операций сравнения
операция вырезки из строки имеет целых три
аргумента:
лит строка, цел старт, цел
финиш
и результат: лит
вырезка, причем аргументы вырезки из
строки имеют разные типы. Поэтому способ записи
вырезки из строки отличается от способа,
принятого для базовых операций.
Пример:
лит строка, вырезка
строка = «строка»
вырезка := строка[3:5]
утв вырезка = «рок»
При изучении величин литерного типа
можно сформулировать достаточное количество
задач, в которых аргументами и/или результатами
являются строки. Эта область подобна играм с
шифровкой и дешифровкой, которые так любят
многие дети. Наверняка в классе найдутся ученики,
которым работа со словами понравится больше, чем
управление Роботом. Связать эти два непохожих
внешне клас-
са задач можно следующим образом. Закодируем
5 команд Робота буквами
Закодируем программу управления
Роботом в виде строки путь из
этих пяти букв. Тогда можно будет поставить
несколько задач, в которых результат выполнения
Роботом данной программы нужно определить,
анализируя строку путь и не
используя массивы.
Легкая задача. По строке путь определить, вернулся ли Робот
в исходное положение.
Средняя по трудности задача. Робот
начал движение на пустом поле. В строке путь ровно две буквы “З”.
Определить, сколько клеток закрасил Робот.
Трудная задача. Робот начал
движение на пустом поле. В строке путь
не менее одной буквы “З”. Определить, закрасил
ли Робот более одной клетки.
И, наконец, еще об одних командах в
алгоритмическом языке — командах контроля.
утв <логическое
выражение>
дано <логическое выражение>
надо <логическое выражение>
Все три команды
выполняются так. Проверяется условие. Если
условие не соблюдается (равно нет), то “КуМир”
прекращает выполнение алгоритма и сообщает, что
возник отказ. Если же условие соблюдается, то
выполнение алгоритма нормально продолжается
так, как если бы команды контроля не было вовсе.
В этих командах может быть либо
записано так называемое контрольное условие,
либо не написано ничего, либо написан только
комментарий. Последний случай — самый частый в
примерах, когда дано и надо используются для
пояснения алгоритмов ученику, а не для
формальной проверки условий в ходе выполнения
алгоритма ЭВМ:
дано |Робот в начале
горизонтального
|коридора
|Вверх от коридора отходят тупики
|разной высоты
надо |Закрасить клетки коридора
напротив
|тех тупиков, высота которых больше
|трех клеток
Для простоты в начале освоения
“КуМира” можно считать эти конструкции
“предназначенными для комментариев” и
объяснение их реального смысла пропустить.
В отличие от конструкций дано
и надо, являющихся частью
записи алгоритма, команда утв может
быть помещена в произвольное место в теле
алгоритма. Если условие в дано
проверяется перед началом выполнения алгоритма,
а надо — после окончания
выполнения алгоритма, то утв —
в том месте, где эта команда написана.
Ответ на вопрос “зачем нужна команда утв?” можно свести к бытовой
аналогии: в прошлом веке на дверях лифта, которые
еще часто были не автоматическими, висело
красочное объявление:
“НЕ открывайте дверь лифта, пока не
убедитесь, что кабина находится перед вами. Это
может привести к падению в шахту”.
Очевидно, что такая проверка спасла от
серьезных травм не одного человека.
Игнорирование этого требования, например, в
скоростных лифтах главного здания МГУ на
Ленинских горах в Москве привело к ряду трагедий.
В системе “КуМир” школьник, пишущий
программу, естественно, не подвержен такой
опасности.
В программе, как и в жизни, — если
контрольное условие выполнено, то надо просто
продолжать дальше выполнять алгоритм. Убедились,
что все в порядке, — и работаем дальше. Если же
контрольное условие не выполнено (лифта нет!),
значит, где-то есть ошибка: либо алгоритм неверен,
либо он применяется в недопустимой для него
ситуации.
С содержательной точки зрения
значимость дано и надо состоит в том, что в них
описываются условия, которым должны
удовлетворять состояние Робота, значения
величин и пр.
Даже если условия записаны в виде комментариев,
они позволяют понять, что должен делать алгоритм,
не разбираясь с тем, как он это делает. Это полный
аналог формулировки теоремы в математике,
средство, позволяющее нам структурировать и
накапливать знания (алгоритмы). Аналогично, если
команда утв используется
для комментариев, пояснения алгоритма, то
некоторые его части становится возможным
понимать статически, понимать, что делает данный
фрагмент алгоритма. Это отличается от анализа и
восприятия того, какие действия происходят при
выполнении алгоритма.
1 В производственных языках
программирования вместо термина “таблица”
используется термин “массив” (массив данных,
массив информации). “Линейные таблицы”
называются “одномерными массивами”,
“прямоугольные таблицы” — “двумерными
массивами”, а также существуют трех-, четырех-,
пяти- и пр. “мерные массивы”.
2 В других языках
программирования операции деления с остатком и
нахождения остатка обозначаются другими
способами. Например, в языке Си частное и остаток
от деления двух целых чисел
m, n
обозначаются m/n и m%n
соответственно.
3 Точнее говоря, значением
логической величины может быть либо да, либо нет, либо значение величины может
быть не определено. Кроме того, для значений да и нет предусмотрены
синонимы true и false, которыми мы пользоваться
не будем.
Алгоритмический язык имеет сходство с математическим тем, что в нём также используется понятие величины. Используются, в-основном, величины двух типов – числовые и символьные, хотя не исключены и другие типы. Числовые величины – это числа: натуральные, целые, вещественные; символьные – буквы, цифры, слова, предложения.
В информатике используется также понятие «переменная». В математике переменная – это величина, которая в рассматриваемой задаче принимает различные значения.
В информатике смысл термина «переменная» связан с возможностью хранения и обновления различных видов данных.
Переменные удобно представить в виде «почтовых ящиков» (ячеек памяти компьютера), на которые навешены ярлыки с их именами. Информация, хранимая в переменной, называется её значением.
Переменные, предназначенные для записи числа, называются числовыми. Переменные, в которые можно записывать слова, называются символьными. При этом под словом понимается любой набор символов, которые можно ввести с клавиатуры.
Алфавит языка КуМир состоит:
- из букв латинских от A до Z (прописных или строчных – разницы нет);
- из букв кириллических от А до Я (прописных или строчных – разницы нет);
- цифр от 0 до 9;
- специальных знаков – = + — * ^ / % & ! # $ ( ) [ ] . , ; : | < > » _.
Имя переменной – это последовательность слов, разделенных пробелами, например, альфа бета. Также допускается разделить слова символами @ и _, например, ku@mir, альфа_бета. Имя переменной должно обязательно начинаться с буквы (А, В, С, …; a, b, c; А, Б, В, …; а, б, в, …). За первой буквой могут идти буквы или цифры (АB, A1, …). Переменная типа альфа-бета недопустима, т.к. символ ‘-‘ в названии переменной запрещён. Символьная переменная может содержать любой литеральный символ. Несколько символов вместе образуют слово или строку литеральных символов. Символ или строка, которая помешается в ящик, предназначенный для хранения символьной переменной, заключается в кавычки (простые, либо двойные), например, ‘a’, “y”, ‘Это я’, “Привет, как дела?”. Если строка ограничена простыми кавычками, то она не может содержать простую кавычку внутри строки. Например, строка ‘Привет’ Пока’ недопустима. Аналогичное правило действует для двойных кавычек. Например, строка “Как” дела” также недопустима.
Наш почтовый ящик имеет некоторые необычные свойства. Когда в него помещается другое значение, начальное стирается и исчезает. Оно уже не может быть восстановлено.
Среди значений символьной переменной есть слово, не содержащее ни одного символа. Это слово называют пустым.
Осуществить запись значения в переменную можно несколькими способами. Первый способ состоит в использовании команды присваивания. Она имеет следующий вид:
a:=15
b:=«ВАСЯ»
x:=125.5
z:=ax2 + bx + c
Обратите внимание на следующие две команды:
a:=275
b:=«275»
В первой команде записана переменная числового типа, и её значение может использоваться в арифметических вычислениях. Это значение хранится в компьютере как число. Во втором примере переменная имеет символьный тип, её значение состоит из трех символов – трех цифр. Это значение не может быть использовано в вычислениях. Оно хранится в компьютере в виде трех символов.
Примечание. Вещественные числа на языке КуМир записываются через точку – 1.5, 3.14 и т.п. Есть и другая форма записи – показательная, например, 1.025E+2, 1.025Е-2. В привычной форме записи это выглядит так: 1.025Е+2 – 1,025х102=102,5; 1.025Е-2 – 1,025х102=0,01025.
Символы «:» и «=» записанные вместе без пробела обозначают операцию присваивания. С точки зрения языка КуМир выражение
x:=x+5
означает следующее: к числу, записанному в переменной x прибавить число 5 и полученный результат поместить в переменную x.
Запись значения в переменную при помощи команды присваивания обладает существенным недостатком. Каждый раз, когда нужно изменить значение переменной, приходится заново редактировать такие программы, чтобы изменить соответствующую команду присваивания.
Оказывается, можно изменить значение переменной при каждом новом прогоне программы, избегая ее повторного редактирования. Для этого используется команда ввод. Эта команда действует подобно команде присваивания в том смысле, что она также записывает какое-то значение в переменную. Однако, в данном случае устанавливаемое значение переменной зависит от того, какая информация набирается на клавиатуре во время выполнения программы.
Посмотрим, как работает команда ввод с числовыми данными. Предположим, в программе имеется команда
ввод a
В тот момент, когда компьютер достигает в программе этой команды, он выводит на экран сообщение – запрос (и данном случае – знак «|») и ждёт, пока будет набрано какое-нибудь число и нажата клавиша Enter. Если вы ввели, например, число 15, то именно оно становится значением переменной a.
Таким образом, команда ввод позволяет компьютеру «останавливаться» всякий раз при выполнении программы и ждать, занесения какого-то значения в переменную.
Если с клавиатуры мы по ошибке или умышленно введём символ, недопустимый для числа, например, a3, то компьютер ответит на это сообщением об ошибке и попросит повторить ввод. Если вы попытаетесь вовсе увильнуть от ответа, то компьютер также сообщит об ошибке и снова потребует ввести правильные данные (т.е. то или иное число).
Появление знака вопроса на экране дисплея может быть не всегда понятно. Предположим, что мы решаем задачу: «Найти скорость тела при равномерном движении, если время t=5 сек, а пройденный путь S=20 м». Видим на экране знак «|». А что же вводить: значение пути или значения времени?
Помочь в данный ситуации может использование команды вывод вместе с подсказкой перед командой ввод. В рассматриваемом случае в программе нужно записать четыре команды
вывод «Время равно «
ввод t
вывод «Пройденный путь равен «
ввод S
После исполнения первой команды на экране дисплея будет
Время равно |
Ясно, что в ответ на запрос необходимо ввести значение времени, будет выполнена команда ввода в переменную t. Сходную ситуацию будем иметь и с исполнением второй команды вывода.
Команда вывод даёт компьютеру указание вывести на экран слова, числа, значения переменных, результаты арифметических действий и других операций, доступных компьютеру.
Предположим, вы хотите вывести на экран сообщение “Сегодня хорошая погода”. Сделать это можно при помощи программы из одной команды
вывод «Сегодня хорошая погода»
Мы видим, что в записи этой команды сообщение, которое нужно вывести на экран, заключено в кавычки. Кавычки указывают компьютеру, что на экран надо выводить то, что находится между ними. Когда выполняется команда, кавычки не выводятся, а выводится лишь то, что в них заключено.
Рассмотрим еще один пример использования команды вывод.
Если команда вывод применяется без использования кавычек, но с использованием чисел и арифметических действий, то компьютер вычисляет результат и выводит его на экран.
Например, после того, как компьютер выполнит команду
вывод 6-4
на экран будет выведено число 2.
Операции сложения и вычитания обозначаются с помощью обычных знаков арифметических действий + и —. Что же касается знаков умножения и деления, то в КуМир для обозначения этих операций используется соответственно знаки * и /, для возведения в степень – знак **.
Примеры использования команды вывод для выполнения других операций будут рассмотрены позднее.
Команду вывод можно использовать для вывода на экран значений нескольких переменных, нескольких слов или чисел. В этом случае они обычно разделяются запятой. При выводе слов нужно иметь ввиду, что разделитель запятая не оставляет пробела между соседними значениями. Если пробел нужен, то мы сами должны его добавить. Например, после выполнения программы
a:=«Миша»
b:=«Иванов»
вывод a,b
на экран будет выведено
МишаИванов
Если мы слегка видоизменим третью команду программы:
вывод a,» «,b
то получим то, что нужно:
Миша Иванов
Ключевое слово нс в качестве одного из выражений команды вывод, является признаком перехода на новую строку.
Например, команды
вывод «A»
вывод «B»
выводят на экран
AB
в то время как команды
вывод «A»,нс
вывод «B»
выводят на экран
A
B
Более коротко можно записать
вывод «A»,нс,«B»
Встроенные функции
Функцию В языке КуМир полезно наглядно представлять в виде некоторого преобразователя, который может иметь несколько входов и один выход. На входы поступают значения переменных, числа, слова, на выходе получается число или слово. Данные, поступающие на входы, называются аргументами функции.
Некоторым из функций присвоены специальные имена, по которым, в случае необходимости, мы можем вызвать их в ходе исполнения программы. Такие функции называются встроенными функциями. В Бейсик встроено много различных функций. Познакомимся пока с двумя из них.
Функция преобразования в целое int(x)
Аргументом этой функции может быть любое число или значение числовой переменной. На выходе получается наибольшее целое число, не превосходящее значения аргумента.
Если значение аргумента положительно, то его преобразование функцией int состоит просто в отбрасывании дробной части числа. Например, если на вход int(x) поступит число 2.8, то на выходе получим просто 2. В результате выполнения программы
алг Целое число
нач
. вещ x
. цел y
. x:=2.8
. y:=int(x)
. вывод y
кон
получим:
2
В случае отрицательного значения аргумента, работа преобразователя int(x) похитрее. Так, если на вход поступит число -2.6, то на выходе будем иметь -3, поскольку именно -3 является наибольшим целым числом, меньшим -2.6.
Функция нахождения абсолютного значения abs(x)
Аргументом этой функции может быть так же любое число или значение числовой перемен¬ной. На выходе получается абсолютная величина значения на входе. Абсолютная величина числа определяется следующим образом:
Например, после выполнения программы
алг Абсолютная величина числа
нач
. вещ x
. цел y
. x:=-5.13
. y:=abs(x)
. вывод y
кон
получим:
5.13
Другие примеры встроенных функции мы рассмотрим ниже.
Выражения
Слово «выражение» в русском языке имеет несколько значений. Это может быть внешнее проявление чего-нибудь («это стихотворение ты прочитал с выражением»), внешний вид («у тебя сегодня грустное выражение лица»), оборот речи («Он не стесняется в выражениях!»).
В информатике выражение представляет собой формулу, определяющую некоторое значение. На языке Бейсик выражение записывается в форме, близкой к обычной математической записи. Оно состоит из чисел, переменных, функций, соеди¬ненных знаками арифметических действии. Выполняются операции в соответствии со следующим приоритетом: сначала вычисляются функции, затем выполняется возведение в степень, потом умножение и деление и, наконец, сложение и вычитание. Все формулы записываются в строку без подстрочных и надстрочных знаков. Не разрешается ставить подряд два знака арифметических действий, например, нельзя писать
a/-b
Нельзя также опускать знаки действий. Например, запись
6a-b
будет ошибочной. Правильная запись имеет вид:
6*a-b
Если нужно выполнить какие-либо действия с нарушением их приоритета, то необходимо использовать круглые скобки. Например,
a/(4*b-c)
В этом выражении сначала вычисляется значение знаменателя, а затем происходит вычисление дроби.
Если выражение содержит подряд стоящие операции одинакового приоритета (например, сложение и вычитание, умножение и деление), то они выполняются по порядку слева направо. Например, выражение на языке КуМир
a+b/c*d
равносильно следующей алгебраической формуле a+(b/c)d.
Если бы мы захотели получить на языке КуМир выражение, соответствующее формуле a+(b/(c/d)), то можно было бы использовать скобки
a+b/(c*d)
или записать в виде
a+b/c/d
Обратите еще раз внимание на типичные ошибки при записи выражений.
- Нельзя писать два знака операций подряд. Неправильная запись: a*-5
Правильная запись:
a*(-5) - Нельзя опускать знак умножения. Например, в школьной алгебре запись 3x является вполне законной, на языке же КуМир мы должны писать
3*x
иначе компьютер выдаст сообщение об ошибке. Выражение
x3
он воспримет как имя некоторой переменной.
Наверх
Помогите, пожалуйста, почему в программе КуМир ,,Имя не объявлено», хотя там всё правильно. Что мне нужно исправить.
Замечание: предполагается, что в имени файла нет «.».
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)
программа на руби, для нахождения
(-100..100).step(0.5) t = 1.0 + b + b*b
a = 15.0/t
a1 = a.round(0)
puts «# + # + # = 15 (q = #)» if (a — a1).abs < 0.01 and a1!=0
>
Ответ:
Объяснение:
В этой кодировке символ занимат 1 байт = 8 бит.
284 на 8 нацело не делится, а число символов должно быть целым, поэтому такое сообщение невозможно.
Настройка среды Кумир для исполнителя Робот
На прошлом уроке мы познакомились с исполнителем Робот, узнали как его установить и запустить. Сегодня будем настраивать программу для дальнейшей работы.
Запущенная программа Кумир выглядит так.
Среда Кумир, исполнитель Робот
Первым делом мы должны раскомментировать первую строку нашей программы, убрав символ |
Раскомментируем первую строку
Таким образом, программа станет выглядеть так:
использовать Робот
алг
нач
кон
Удалив символ |, мы тем самым указали Кумиру на то, что будем работать с исполнителем Робот. Если этого не сделать, то при написании программы мы столкнемся с ошибкой «Нет такого алгоритма». Поэтому очень важно при создании новой программы раскомментировать первую строку. Теперь все готово для дальнейшей работы.
КуМир, Исполнитель Робот
Чтобы задать условия для выполнения, нужно выполнить команду меню Инструменты→Редактировать стартовую обстановку Робота.
В результате мы увидим окно:
Помощь выводит исчерпывающую информацию о возможных действиях:
Меню Обстановка позволяет сделать следующее:
Новая обстановка | Сбрасывает имя файла и создает обстановку, показанную в синем окне выше |
Открыть | Открытие уже созданной обстановки (файл *.fil) для редактирования |
Недавние обстановки | Ускоряет доступ к 8 последним проектам |
Сохранить | Сохраняет текущие изменения |
Сохранить как. | Позволяет задать имя для обстановки |
Сохранить как стартовую | Именно она будет средой по умолчанию |
Печать в файл | Создает PDF-файл с картинкой обстановки, именем файла, датой и комментарием |
Закрыть | Закрывает окно редактирования |
Главное меню
Пульт
Вызов пульта производится нажатием на кнопку или через меню Робот→Показать пульт.
Если выполнить команду меню Редактирование→Перехватывать команды Пульта, то действия, производимые пультом будут записываться в виде правильных команд в текст программы. Названный пункт будет помечен флажком (галочкой).
Некоторые из записываемых команд окажутся избыточными, так как для них используется вывод информации, а не действия. Но их можно отредактировать, либо взять из них только нужные элементы.
Подробности использования пульта смотри меню Инфо→Язык и система КуМир.
Задачи
- Робот находится в левом верхнем углу прямоугольной области неизвестного размера, со всех сторон окруженной стенками. Посередине находится стена, в которой есть проход. Где он, точно неизвестно, но проход не примыкает к нижней стенке. Задача: написать программу, которая переведет робота в правый нижний угол. Файл среды.
- См. также ОГЭ: вопрос 20.1.
- См. также ЕГЭ: вопросы 6, 14.
Copyright © 1993–2022 Мацкявичюс Д.А. Все права защищены.
Никакая часть сайта не может быть воспроизведена никаким способом без письменного разрешения правообладателя и явной ссылки на данный ресурс.