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

Анатолииий

0 / 0 / 0

Регистрация: 18.12.2013

Сообщений: 15

1

26.12.2013, 20:38. Показов 1596. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <stdio.h>
using namespace std;
int St (int x)
{ if (x==0)
        return 1;
    return St(x-1)*10;
}
int rec(int x, int prev = 0)
{ return x ? rec(x / 10, x % 10 + prev * 10) : prev; }
int Ys (int x)
{ if (x%10==0 && x>=10)
        return 0;
    if(x<10 && x>=0)
        return 0;
}
int Per (int x,int y)
 
{if (rec(x)!=x)
        return Per ((x/St(y-1))%St(y-1)+(x/St(y-1))/St(y-1)*St(y)+(x%St(y-1))*St(y-1));
}
 
 
 
int V (int x)
{
    if(x==rec(x))
        return 1;
           return 0;
           int i= Ys(rec(x));
 
 
           return V (x);
}
 
 
int main()
 
{ int x;
    scanf ("%d",&x);
    int b=V(x);
    printf("%d",b);
}



0



1403 / 1260 / 262

Регистрация: 10.11.2013

Сообщений: 3,763

26.12.2013, 21:01

2

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



0



0 / 0 / 0

Регистрация: 18.12.2013

Сообщений: 15

26.12.2013, 21:08

 [ТС]

3

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



0



1403 / 1260 / 262

Регистрация: 10.11.2013

Сообщений: 3,763

26.12.2013, 21:11

4

Как я могу поставить запятую в формуле которую я не писал?



0



Диссидент

Эксперт C

27497 / 17185 / 3784

Регистрация: 24.12.2010

Сообщений: 38,714

27.12.2013, 13:33

5

Анатолииий, у тебя еще одна ошибка. Если rec(x) == x функция Per не возвращает НИЧЕГО, что недопустимо.
А вообще-то старайся не писать таких длинных выражений. Разбей вычисления аргументов на несколько операторов.



0



Содержание

  1. Типы величин
  2. Прямая и обратная пропорциональность
  3. Основные определения
  4. Прямо пропорциональные величины
  5. Обратно пропорциональные величины
  6. Свойства функции обратной пропорциональности:
  7. Потренируемся
  8. Виды физических величин и их единицы измерения
  9. Физические величины — что под этим понимается
  10. Описание основных физических величин в системе СИ, единицы их измерения, обозначения и формулы
  11. Единицы измерения основных физических величин в системе СИ
  12. Производные единицы СИ, имеющие собственные наименования
  13. Пространство и время
  14. Периодические явления, колебания и волны, акустика
  15. Тепловые явления
  16. Механика
  17. Молекулярная физика
  18. Электричество и магнетизм
  19. Оптика, электромагнитное излучение
  20. Атомная и ядерная физика. Радиоактивность
  21. Преобразование единиц измерения

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

Постоянной называется величина, значение которой указывается в тексте программы (например, 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 часов. Найти скорость второго автомобиля.

  1. Вспомним формулу для определения пути через скорость и время: S = V * t.
  2. Так как оба автомобиля проделали одинаковый путь, можно составить пропорцию из двух выражений: 70 * 2 = V * 7
  3. Найдем скорость второго автомобиля: 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, равное одному и тому же числу.

Формула коэффициента обратной пропорциональности:

Графиком обратно пропорциональной зависимости величин является гипербола.

Свойства функции обратной пропорциональности:

  1. Область определения — множество всех действительных чисел, кроме x = 0.

Область значений — все действительные числа, кроме y = 0.

  • Не имеет наибольших и наименьших значений.
  • Является нечетной, и ее график симметричен относительно начала координат.
  • Непериодическая.
  • Ее график не пересекает оси координат.
  • Не имеет нулей.
  • Если k > 0 (аргумент возрастает), функция пропорционально убывает на каждом из своих промежутков. Если k 0) отрицательные значения функции находятся в промежутке (-∞; 0), а положительные — (0; +∞). При убывании аргумента (k

    Потренируемся

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

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

    1. Пусть за х дней могут раскрутить канал 30 человек. Составляем пропорцию: 30 : 24 = 5 : х
    2. Чтобы найти неизвестный член пропорции, нужно произведение средних членов разделить на известный крайний член: х = 24 * 5 : 30; х = 4
    3. Значит, 30 человек раскрутят канал за 4 дня.

    Пример 2. Автомобиль проезжает от одного города до другого за 13 часов со скоростью 75 км/ч. Сколько времени ему понадобится, если он будет ехать со скоростью 52 км/ч?

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

      Составим пропорцию: v1/v2 = t2/t1.

    Соотношения равны, но перевернуты относительно друг друга.

  • Подставим известные значения: 75/52 = t2/13
  • Источник

    Виды физических величин и их единицы измерения

    Физические величины — что под этим понимается

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

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

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

    Размер физической величины — это значения чисел, указанные в значении физической величины.

    Описание основных физических величин в системе СИ, единицы их измерения, обозначения и формулы

    Основными физическими величинами в Международной системе единиц (СИ) являются: длина, масса, время, сила электрического тока, термодинамическая температура, количество вещества, сила света.

    Единицы измерения основных физических величин в системе СИ

    Время в системе СИ измеряется в секундах (с).

    Расчет величины секунды основан на фиксировании численного значения частоты сверхтонкого расщепления основного состояния атома цезия-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(а)
    • вывод в

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

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

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

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

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

    Содержание

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

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

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

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

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

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

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

    Ответ:

    Объяснение:

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

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

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

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

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

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

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

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

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

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

    алг

    нач

    кон

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

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

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

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

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

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

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

    Главное меню

    Пульт

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

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

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

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

    Задачи

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

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

    Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Источник

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

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

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

    S := 0

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

    . S := S + k

    кц

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

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

    i := i1

    нц пока i <= i2

    тело цикла

    i := i + 1

    кц

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

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


    газеты

    Лекция

    17/2009

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

    18/2009

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

    18/2009

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

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

    20/2009

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

    21/2009

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

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

    22/2009

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

    23/2009

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

    24/2009

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

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

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

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

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

    · тело_цикла

    кц

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

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

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

    · тело_цикла

    кц

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

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

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

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

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

    и

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

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

    Пример:

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

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

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

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

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

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

    Т[i] := 0

    кц

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

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

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

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

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

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

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

    S := радиация

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

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

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

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

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

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

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

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

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

    S := радиация

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

    . вправо

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

    кц

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

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

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

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

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

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

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

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

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

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

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

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

    . вправо

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

    кц

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

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

    вещ S, цел i

    S := 0

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

    . S := S + r[i]

    кц

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

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

    5-0.gif (47674 bytes)

    5-1.gif (11451 bytes)

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

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

    цел int(вещ x)

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

    int(-1/2) = -1.

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

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

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

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

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

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

    |на n

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

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

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

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

    и, или,
    не.

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

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

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

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

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

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

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

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

    нач

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

    то закрасить

    все

    кон

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

    6-0.gif (26626 bytes)

    6-1.gif (30098 bytes)

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

    6-2.gif (26957 bytes)

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

    7-0.gif (42881 bytes)

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

    лит стр стр2

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

    стр2:= «»

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

    стр1[1]=’п’

    стр1[2]=’a’

    стр1[8]=’к’

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

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

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

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

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

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

    n := 0

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

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

    . . n := n + 1

    . все

    кц

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

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

    стр2 = «ход»

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

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

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

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

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

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

    Пример:

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

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

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

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

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

    7-1.gif (1032 bytes)

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

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

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

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

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

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

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

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

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

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

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

    |коридора

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

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

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

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

    |трех клеток

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

    Рис.1

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

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

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

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

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

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

    1

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

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

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

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

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

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

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

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

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

    2

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

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

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

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

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

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

    3

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

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

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

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

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

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

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

    4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    5

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

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

    алг имя

    нач

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

    кон

    Пример:

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

    нач

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

    кон

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

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

    Таблицы:

    целые цел

    целые цел таб

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

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

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

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

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

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

    литерные лит

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

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

    алг

    нач

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

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

    кон

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

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

    Форма записи

    сложение

    x + y

    вычитание

    x y

    умножение

    x * y

    деление*

    x / y

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

    x ** y

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

    x := y

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

    алг

    нач

    цел x, y, z

    вещ f

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

    z:=x+y

    f:=x/y

    f:=x*y

    x:=y**4

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

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

    z:=x/y

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

    x:=f-y

    кон

    6

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

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

    Форма записи

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

    sqrt(x)

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

    abs(x) и

    y – целое)

    iabs(y)

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

    mod(x,y)

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

    div(x,y)

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

    int(x)

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

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

    Форма записи

    Равно

    x = y

    не равно

    x <> y

    Меньше

    x<y

    Больше

    x>y

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

    x<=y

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

    x>=y

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

    Название

    операции

    Форма записи

    Пример

    конъюнкция

    и

    а и б

    дизъюнкция

    или

    а или б

    отрицание

    не

    не a

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

    Функция

    Форма вызова

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

    код(с)

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

    символ(х)

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

    Цикл «для»

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

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

    кц

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

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

    7

    Пример:

    Алг

    нач

    цел a, b, i

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

    b:=5

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

    кц

    кон

    Цикл «пока»

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

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

    кц

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

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

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

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

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

    алг нач

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

    нц пока a<b

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

    кц

    кон

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

    нц

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

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

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

    Пример:

    Алг нач

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

    нц пока a<b

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

    кц

    кон

    8

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

    если условие

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

    все

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

    если условие

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

    все

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

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

    Пример:

    алг

    нач

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

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

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

    все

    кон

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

    ввод имя

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

    9

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

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

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

    Пример:

    Алг

    нач

    цел a, b, i

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

    ввод b

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

    ввод t1[i]

    кц вывод a

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

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

    кц

    кон

    10

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

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

    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

    Супер-модератор

    Эксперт Pascal/DelphiАвтор FAQ

    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 минуты
    volvo, а есть ли динамические массивы в КуМир, чтобы не выделять много памяти заранее, а использовать ее более экономно?

    0

    Супер-модератор

    Эксперт Pascal/DelphiАвтор FAQ

    32445 / 20940 / 8104

    Регистрация: 22.10.2011

    Сообщений: 36,203

    Записей в блоге: 7

    12.08.2018, 18:49

    4

    Лучший ответ Сообщение было отмечено Соколиный глаз как решение

    Решение

    Нет, динамических структур данных вообще (и динамических массивов в частности) в КуМире тоже нет.

    1

    Почему я получаю «слишком мало аргументов для работы»?

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

    #include <iostream>
    #include <string>
    #include <math.h>
    
    using namespace std;
    
    
    void instructions()
    {
      cout << "We will calculate the monthly payment for your particular car." << endl;
      cout << "Please Follow the instructions." << endl;
    }
    
    
    
    string getCarType()
    {
      string carType;
    
      cout << "Please enter the type of your car: " << endl;
      cin >> carType;
    
      return carType;
    }
    
    
    
    
    double getPurchasePrice()
    {
      double purchasePrice;
    
      cout << "Please enter the price in which you purchased the vehicle: " << endl;
      cin >> purchasePrice;
    
      return purchasePrice;
    }
    
    
    
    
    double getDownPayment()
    {
      double downPayment;
    
      cout << "Please enter the down payment made on the vehicle: " << endl;
      cin >> downPayment;
    
      return downPayment;
    }
    
    
    
    
    int getYears()
    {
      int years;
    
      cout << "Please enter the number of years remaining to pay off the loan: " << endl;
      cin >> years;
    
      return years;
    }
    
    
    
    
    
    double getRate()
    {
      double rate;
      double correctedRate;
    
      cout << "Please enter the annual interest rate of the loan as a whole number: " << endl;
      cin >> rate;
    
      //calculations
      correctedRate = (rate/100);
    
    
      return correctedRate;
    }
    
    
    
    
    
    double findAmountFinanced(double &purchasePrice, double &downPayment)
    {
      double amountFinanced;
    
      //calculations
      amountFinanced = purchasePrice - downPayment;
    
      return amountFinanced;
    }
    
    
    
    
    
    double findMonthlyPayment(double &amountFinanced, double &rate, int &years)
    {
      double monthlyPayment;
      double sideOne;
      double sideTwo;
    
      //calculations
      sideOne = amountFinanced * (rate/12);
      sideTwo = pow(1 - (1 + (rate/12)) / (-12*years));
        monthlyPayment = sideOne/sideTwo;
    
    
      return monthlyPayment;
    }
    
    
    
    
    int findNumberOfPayments(int &years)
    {
      int payments;
      payments = 12 * years;
    
      return payments;
    }
    
    
    int main()
    {
      instructions();
    
      string carType;
      double purchasePrice;
      double downPayment;
      int years;
      double rate;
      double amountFinanced;
      double monthlyPayment;
      int payments;
    
      carType = getCarType();
      purchasePrice = getPurchasePrice();
      downPayment = getDownPayment();
      years = getYears();
      rate = getRate();
      monthlyPayment = findMonthlyPayment();
      payments = findNumberOfPayments();
    
      cout << "Make of car: " << carType  << endl;
      cout << "Price Purchased at: " << purchasePrice << endl;
      cout << "Down payment made at purchase: " << downPayment << endl;
      cout << "Years to pay off loan: " << years << endl;
      cout << "Annual rate of interest: " << rate << endl;
      cout << "Your monthly payment is: " << monthlyPayment << endl;
      cout << "The total amount of payments is: " << payments << endl;
      return 0;
    }
    

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

    18 фев. 2015, в 01:04

    Поделиться

    Источник

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

    sashas
    17 фев. 2015, в 22:31

    Поделиться

    Если вы посмотрите на определения своего метода findAmountFinanced, findMonthlyPayment и findNumberOfPayments, они принимают аргументы при их вызове. В вашей основной() функции, где вы их вызываете, вы не передаете никаких аргументов. Следовательно, слишком мало аргументов :)

    FYI, трюк для устранения неполадок — это посмотреть на полную трассировку стека сообщения об ошибке и проложить путь по номерам строк.

    user1580086
    17 фев. 2015, в 22:11

    Поделиться

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

    Masho
    17 фев. 2015, в 21:05

    Поделиться

    Ещё вопросы

    • 0Пошагово прочитайте файл и положите в БД. Не дает ошибок, но не вводит данные полностью или правильно
    • 0JQuery не сработает?
    • 1hibernate 4 и joda-LocalDate и сохраните его как дату SQL
    • 0включить часть сайта в мой сайт
    • 0Sprit читабельная строка php для разделения переменных
    • 1Pandas group by сбрасывает размер, по которому выполняется группировка
    • 1Список вне диапазона
    • 0Результаты glRotatef на Wirecube
    • 0Оператор PHP IF возвращает истинное значение только один раз в цикле while
    • 1Что означает выполнение микрозадачи после каждого обратного вызова?
    • 0Лучший подход к созданию приложения киоска с представлениями, которые меняются по таймеру
    • 1C # Сделать фон формы прозрачным (для отображения фона .png с полупрозрачными пикселями)
    • 1Определить, когда анимация завершена (AnimationListener)
    • 0Я хочу сохранить дату в базе данных, но при отправке формы сохраняет дату как 1970-01-01
    • 0jQuery, функция вызывается без параметров, но есть параметры
    • 0Как вставить новую строку в таблицу через angularjs?
    • 0Преобразование Int в LPCWSTR
    • 0Как я могу проверить расширение загруженных файлов?
    • 1Как я могу перебрать список элементов и извлечь определенную часть, используя Selenium и Python
    • 1Как я могу изменить размер иконки на tabItem?
    • 0Вставка данных из базы данных в массив и внедрение этих данных в текстовую область
    • 0Оберните кучу вариантов внутри стола в Symfony / Twig
    • 0Получить видео идентификаторы из плейлиста ID — YouTube API V3
    • 1использование DLL от внешнего поставщика, которая не является поточно-ориентированной
    • 1java.lang.ArrayIndexOutOfBoundsException: 0 В самой простой программе
    • 0Протрите все таблицы в схеме — sequelize nodejs
    • 0MySQL 5.7 изменяет блокировку оператора DDL таблицы, но должна допускать одновременный DML
    • 0Выбрать и упорядочить список по другому условию (Критерии внутреннего объединения в спящий режим)
    • 1Ошибки Entity Framework Validation неправильно обрабатываются клиентом breeze.sharp
    • 0PHP эквивалентен свойству JavaScript parentNode
    • 1Как передать и получить результат области из ListView в другом действии?
    • 0Анимация при наведении курсора с несколькими файлами изображений
    • 1Размер настраиваемого диалогового окна с изменениями анимации
    • 0Как добавить оператор if, чтобы исключить определенные пустые строки
    • 0Ошибка при использовании активных записей для get_where и левого соединения
    • 0Является ли смешанная блокировка контента исключительной для объявлений Google?
    • 1Реагировать на родной плоский список, а не на ожидаемое поведение
    • 0Почему мой процесс останавливается при запуске в фоновом режиме?
    • 1RuntimeBeanNameReference против RuntimeBeanReference
    • 0AngularJS $ http запрос на исправление не отправляет данные
    • 1Невозможно получить какой-либо ответ от API (залп)
    • 0AngularJS — не может изменить значение поля ввода
    • 1Получить индекс значения
    • 0Индексирование должно быть ускорено
    • 1Форматирование значений с плавающей запятой в Java [дубликаты]
    • 0Неактивная пользовательская функция
    • 0получение функции из класса не работает
    • 1Проблемы с акцентами в Java во время выполнения
    • 1Показать документ без аутентификации
    • 1Как преобразовать многострочные файлы fasta в однострочные файлы fasta без биопиона

    Сообщество Overcoder

    #c #class #declaration #member-functions

    Вопрос:

    слишком мало аргументов в вызове функций? что не так с этим кодом? Я хочу вывести на std::примерно через день

     #include <iostream>
    #include <string>
    
    class Date
    {
    public:
        Date(unsigned _day, unsigned _month, unsigned _year) : day(_day), month(_month), year(_year) {}
        int GetDate(Dateamp; dt)
        {
            return dt.day;
        }
    private:
        unsigned day, month, year;
    };
    
    int main()
    {
        Date dt(07, 10, 2004);
        std::cout << dt.GetDate();
    
        return 0;
        std::cin.get();
    }
     

    я понимаю принцип, но я не знаю, что делать

     /*too few arguments in function call
        Error   C2660   'Date::GetDate': function does not take 0 arguments */
     

    Комментарии:

    1. В отличие от python, в C это (self в python) неявно передается нестатической функции-члену. Вы должны определить int GetDate() и просто вернуться day .

    2. Независимо от ошибки, вы должны сделать GetDate const, чтобы иметь возможность вызывать его для объектов const: int GetDate() const {...} (так как он не изменяет никаких полей).

    Ответ №1:

    Как эта функция-член

     int GetDate(Dateamp; dt)
    {
        return dt.day;
    }
     

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

    Таким образом, в этом вызове функции

     std::cout << dt.GetDate();
     

    вам нужно указать аргумент типа Date , например

     Date dt(07, 10, 2004);
    std::cout << dt.GetDate( dt );
     

    Но в этом нет большого смысла.

    Функция должна быть определена в классе следующим образом

     int amp; GetDate()
    {
        return day;
    }
     

    с его перегрузкой

     const int amp; GetDate() const
    {
        return day;
    }
     

    В данном случае этот фрагмент кода

     Date dt(07, 10, 2004);
    std::cout << dt.GetDate();
     

    будет иметь смысл.

    Хотя было бы лучше назвать функцию как GetDay .

    Обратите внимание, что это утверждение

     std::cin.get();
     

    не имеет эффекта, потому что он помещается после инструкции return. Может быть, ты имеешь в виду

     std::cin.get();
    return 0;
     

    Комментарии:

    1. const int amp; GetDate() const {} Я этого не понимаю

    2. @SamuelRobb Такая функция может быть вызвана для постоянного объекта типа Дата. Например, если вы объявите постоянную дату dt(07, 10, 2004); тогда вы можете вызывать только постоянную функцию-член GetDate. В противном случае компилятор выдаст ошибку, если вы попытаетесь вызвать непостоянную функцию-член.

    3. const int amp; GetDate() const {} здесь меня смущает константа в const int и ссылка

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

    5. Пока вы не измените внутреннюю реализацию, и тогда у вас больше не будет int, на который можно ссылаться… Верните копию.

    Ответ №2:

    Вы определили GetDate() как нестатический метод Date класса, и он принимает явную Dateamp; ссылку на объект в качестве параметра. Но main() не передает Date объект в этот параметр, отсюда и ошибка.

    Нет необходимости передавать объект явно. Как нестатический метод, GetDate() имеет скрытый this параметр, который ссылается на Date вызываемый объект GetDate() .

    Попробуйте это вместо этого:

     #include <iostream>
    #include <string>
    
    class Date
    {
    public:
        Date(unsigned _day, unsigned _month, unsigned _year) : day(_day), month(_month), year(_year) {}
        int GetDate() const
        {
            return day; // this->day
        }
    private:
        unsigned day, month, year;
    };
    
    int main()
    {
        Date dt(07, 10, 2004);
        std::cout << dt.GetDate();
    
        return 0;
        std::cin.get();
    }
     

    Комментарии:

    1. есть ли у всех функций-членов скрытое это ->?

    2. @SamuelRobb нестатические функции- члены делают, да

    3. Все нестатические функции-члены имеют this . Удобное чтение (также объясняет, почему const оно было добавлено): en.cppreference.com/w/cpp/language/member_functions . Поскольку существуют нестатические функции-члены, вот некоторые сведения о статических функциях-членах . Наиболее примечательно, что у них нет this и, следовательно, им не нужен объект для вызова.

    Ответ №3:

    В идеале вам следует обновить реализацию вашей GetDate функции.

     int GetDate()
    {
       return day;
    }
     

    Комментарии:

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

    2. почему я не могу получить доступ с помощью этого параметра?

    3. Если вы обращаетесь с параметром, вам необходимо указать параметр: std::cout << dt.GetDate(dt); . Видишь, как у тебя две dt буквы «с»? Ты действительно хочешь иметь только одного dt . Либо вы делаете функцию статическим членом и передаете dt ее, либо оставляете ее нестатическим членом и вызываете ее dt . Нет необходимости делать и то, и другое.

    Ответ №4:

    Функция GetDate имеет параметр, который вы не передаете в функции main.

    Это должно быть

     Date a(1,1,2001); 
    
    std::cout << dt.GetDate(a);
     

    Комментарии:

    1. И a для чего будет использоваться внутри GetDate ? Имеет ли смысл ссылаться getDate на один Date экземпляр, чтобы вернуть day совершенно другой Date ? Доу сит имеет смысл сдать по-другому Date , а потом не использовать это Date ?

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

    3. Когда код делает что-то, что не имеет смысла, предпочитайте писать ответ, в котором код имеет максимальный смысл. Это означало бы удалить неиспользуемый параметр из функции и объяснить, как этот параметр вызвал проблему и почему в нем не было необходимости в первую очередь. Здесь вы решили предложить сделать что-то столь же бессмысленное, и теперь у спрашивающего две проблемы в коде вместо ошибки компилятора. Если в вопросе слишком мало смысла, чтобы дать разумный ответ, вы просите разъяснений и голосуете за закрытие вопроса, если у вас есть такая возможность.

    Содержание

    1. Свойства логических операций
    2. Команда присваивания в языке Кумир
    3. Операции в языке Кумир
    4. Базовые операции
    5. Тип выражения в Кумир
    6. Выражение ничему не присвоено кумир
    7. Запись команд в КуМир
    8. Комментарии в КуМир-программе
    9. Понятие «слово»
    10. Ключевые слова
    11. Особенности имен в языке КуМир
    12. Вопросы для самопроверки
    13. Алгоритмы и исполнители
    14. Среда КуМир. Исполнитель Робот.
    15. Что такое стартовая обстановка?
    16. Наш Робот находится в некой среде — это клетчатое поле, размер которого известен. Так же на этом поле могут находится стены и закрашенные клетки, а сам Робот может находится в любой клетке. Так вот — стартовая обстановка задает положение Робота на поле и расположение всех остальных элементов — стен, закрашенных клеток. И перед тем, как писать алгоритм для Робота необходимо задать стартовую обстановку. Насколько это важно давайте рассмотрим на примере. Пусть есть две стартовые обстановки:
    17. Как задать стартовую обстановку?
    18. Виды циклов.
    19. Цикл со счетчиком.
    20. Цикл с условием.

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

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

    Двузначные числа лежат в пределах от 10 до 99. Тогда достаточно выяснить принадлежит ли заданное число указанному отрезку.

    Пусть контрольное число хранится в переменной number . Чтобы оно лежало в искомом диапазоне, необходимо, чтобы каждое из двух ниже приведенных условий имело значение да :
    number ≥ 10
    number ≤ 99

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

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

    Свойства логических операций

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

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

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

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

    number ≥ 10 и number ≤ 99

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

    • если number ≥ 10 и number ≤ 99
    • то вывод «Число двузначное»
    • иначе вывод «Число не двузначное»
    • все

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

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

    1. Вычисляется значение логического выражения в скобках

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

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

    Источник

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

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

    • в правой части оператора присваивания;
    • в индексе таблицы;
    • в аргументе (типа арг ) вызова функции;
    • в качестве подвыражения другого выражения;
    • в команде вывод.
    • площадь := длина * ширина
    • рост[ 2 * х]
    • вывод (а — в) ** 2

    Значение выражения вычисляется с учетом приоритетов операций и скобок.

    Команда присваивания в языке Кумир

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

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

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

    Важно: тип величины должен быть согласован с типом выражения (смотрите ниже).

    • цел а, b; вещ с
    • c := sqrt(а** 2 + в** 2 )

    Операции в языке Кумир

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

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

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

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

    Базовые операции

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

    • арифметические операции (аргументы и результат – числового типа);
    • сравнение арифметическое (аргументы – числового типа, результат – логического);
    • сравнение текстовое (аргументы – текстового типа, результат – логического);
    • логические операции (аргументы и результат — логического типа);
    • текстовые операции (аргументы и результат – текстового типа).

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

    • ** – возведение в степень;
    • – меньше или равно;
    • >= – больше или равно;
    • <> – не равно.

    Тип выражения в Кумир

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

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

    Рассмотрим следующий пример:

    • цел а = 10 , в = 90 ; вещ с = 20
    • вывод а + в, нс
    • вывод а + с

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

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

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

    Источник

    Выражение ничему не присвоено кумир

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

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

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

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

    • алг имя_алгоритма
    • нач
    • тело алгоритма
    • кон
    • алг Периметр
    • нач
    • ввод длина
    • ввод ширина
    • вывод 2 * (длина + ширина)
    • кон

    Запись команд в КуМир

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

    • алг Сумма
    • нач
    • цел а ; вещ в
    • ввод а ; ввод в
    • вывод а + в
    • кон

    Заметим, что некоторые ключевые слова сопровождаются «неявным» переносом строки. Неявный перенос строк присутствует в следующих случаях:

    • перед словами все, кц, кц_при ;
    • после слов нач, выбор, нц (только в случае цикла нц-кц), раз ;
    • перед и после слов то, иначе, при ;
    • перед словом при и после двоеточия в при-строке

    Комментарии в КуМир-программе

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

    Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Источник

    Алгоритмы и исполнители

    Среда КуМир. Исполнитель Робот.

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

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

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

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

    алг

    нач

    кон

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

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

    Стартовая обстановка Робота

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

    Что такое стартовая обстановка?

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

    Стартовая обстановка 1

    Стартовая обстановка 2

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

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

    Как задать стартовую обстановку?

    Запустив среду Кумир в меню Инструменты выбираем пункт Редактировать стартовую обстановку Робота

    Откроется окно с синим фоном. Это и есть стартовая обстановка Робота. И мы ее можем изменить.

    По-умолчанию, размер окна 10 на 15 клеток. Если нам необходимо изменить количество строк и столбцов, то щелкаем Обстановка -> Новая обстановка и задаем необходимые значения

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

    После того, как мы задали нужную стартовую обстановку, ее необходимо сохранить (Обстановка -> Сохранить или Обстановка -> Сохранить как). После этого закрываем окно Обстановка и в основном окне программы выбираем Робот -> Сменить стартовую обстановку

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

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

    Исполнитель Робот. Простые команды.

    У нашего Робота тоже есть система команд. Сегодня мы рассмотрим простые команды Робота. Всего их 5:

    Результат выполнения этих команд понятен из их названия:

    вверх — переместить Робота на одну клетку вверх

    вниз — переместить Робота на одну клетку вниз

    влево — переместить Робота на одну клетку влево

    вправо — переместить Робота на одну клетку вправо

    закрасить — закрасить текущую клетку (клетку в которой находится Робот).

    Эти команды можно писать с клавиатуры, а можно использовать горячие клавиши (нажав их команды будут вставляться автоматически):

    вверх — Escape, Up (стрелка вверх)

    вниз — Escape, Down (стрелка вниз)

    влево — Escape, Left (стрелка влево)

    вправо — Escape, Right (стрелка вправо)

    закрасить — Escape, Space (пробел)

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

    Теперь мы готовы написать первый алгоритм для Робота. Предлагаю начать с простого — нарисуем квадрат со стороной 3 клетки. Поехали!

    Запускаем Кумир, настраиваем его. Можно начинать писать программу? Конечно нет! Мы же не задали стартовую обстановку! Делаем это. Предлагаю использовать вот такую:

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

    Удаляем символ «|» и называем наш алгоритм «Квадрат»

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

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

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

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

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

    Потом пойдем влево, закрашивая нижнюю границу квадрата

    У нас осталась одна незакрашенная клетка. Закрасим ее

    Все готово! В итоге наша программа выглядит так:

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

    алг Квадрат

    нач

    закрасить

    вправо

    закрасить

    вправо

    закрасить

    вниз

    закрасить

    вниз

    закрасить

    влево

    закрасить

    влево

    закрасить

    вверх

    закрасить

    кон

    А результат ее работы вот так

    Итак, сегодня мы с вами написали программу, используя простые команды Робота. Рекомендую попрактиковаться самостоятельно — придумать себе задание и написать программу. Это могут быть самые различные фигуры, узоры, буквы. К примеру, попробуйте написать программу, рисующую букву П, Р, Ш, Щ, М. А если получится и захотите поделиться — комментируйте и прикрепляйте результат к комментарию.

    Исполнитель Робот. Циклы.

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

    Т. е мы повторили команду сделай приседание 7 раз. А есть ли смысл писать 7 одинаковых команд? Может проще дать команду сделай 7 приседаний? Конечно проще и правильнее. Это и есть цикл. Вы можете сами вспомнить примеры циклов из жизни — их довольно много.

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

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

    Виды циклов.

    Цикл со счетчиком.

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

    Для того, чтобы написать цикл со счетчиком для исполнителя необходимо знать его синтаксис. А он такой:

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

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

    Давайте рассмотрим это на примере.

    Закрасим 7 клеток, как на рисунке. Рекомендую почитать про стартовую обстановку Робота и про его простые команды.

    Изначально Робот находился в левой верхней клетке.

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

    Как видим, команды закрасить и вправо повторяются 7 раз. Давайте теперь перепишем программу с использованием цикла. Кстати, чтобы вставить цикл в свою программу можно в меню Вставка выбрать пункт нц-раз-кц или нажать одну из комбинаций клавиш Esc, Р (русская буква Р) или Esc, H (латинская буква H). Причем клавиши надо нажимать последовательно — сначала Esc, отпустить ее и только потом Р или H.

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

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

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

    Цикл с условием.

    Вернемся к физкультуре и изменим задачу. Ведь кто-то может и не сделать 7 приседаний, а другой способен сделать 27. Можно ли учесть это при создании цикла? Конечно. Только теперь мы будем использовать не счетчик (количество повторений), а условие. К примеру, пока не устал, делай приседания. В этом случае человек будет делать не конкретное число приседаний, а приседать до тех пор, пока не устанет. И наш цикл на абстрактном языке примет такой вид:

    пока не устал

    Слова не устал в нашем случае — это условие. Когда оно истинно, цикл выполняется. Если же оно ложно (устал) тело цикла не будет выполнено. У исполнителя Робот есть несколько условий

    сверху свободно

    снизу свободно

    слева свободно

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

    сверху стена

    снизу стена

    слева стена

    справа стена

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

    Давайте сначала сформулируем словесный алгоритм — т. е. опишем словами что нужно делать Роботу. Этот алгоритм будет звучать примерно так:

    «Пока справа свободно делай шаг вправо и закрашивай клетку»

    В результате Робот пробежит по всем клеткам вправо и будет их закрашивать до тех пор, пока справа не окажется стена.

    Исходный код нашей программы для Робота будет примерно такой:

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

    В результате выполнения этой программы мы увидим вот такую картину:

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

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

    Источник

    Adblock
    detector

    Название операции Форма записи Пример
    Конъюнкция (логическое умножение) и (х ≥ -5) и (х ≤ 5)
    Дизъюнкция (логическое сложение) или (х 5)
    Инверсия (логическое отрицание) не не (х > 5)

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

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

  • Яндекс еда ошибка привязки карты
  • Ошибка выполнения макроса 2950
  • Ошибка выполнения макрокоманды
  • Ошибка выполнения майкрософт скрипт
  • Ошибка выполнения команды регистрация вики принт 57ф

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

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