Цикл с постусловием кумир. Циклы с условием в кумире. Табличные величины и работа с ними

Карточки-задания

    Найдите среди n -целых чисел вводимых с клавиатуры количество отрицательных

    Дано два произвольных числа. Пока их произведение меньше 100, увеличивать каждое число на 2 и вывести конечные числа на монитор

    Последовательно вводятся n -целых чисел. Найти количество пятерок в последовательности

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

    Найдите среди n -целых чисел вводимых с клавиатуры количество отрицательных

    Дано два произвольных числа. Пока их произведение меньше 100, увеличивать каждое число на 2 и вывести конечные числа на монитор

    Последовательно вводятся n -целых чисел. Найти количество пятерок в последовательности

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

    Найдите среди n -целых чисел вводимых с клавиатуры количество отрицательных

    Дано два произвольных числа. Пока их произведение меньше 100, увеличивать каждое число на 2 и вывести конечные числа на монитор

    Последовательно вводятся n -целых чисел. Найти количество пятерок в последовательности

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

    Найдите среди n -целых чисел вводимых с клавиатуры количество отрицательных

    Дано два произвольных числа. Пока их произведение меньше 100, увеличивать каждое число на 2 и вывести конечные числа на монитор

    Последовательно вводятся n -целых чисел. Найти количество пятерок в последовательности

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

Хирьянов Тимофей Федорович

если-то-иначе-все

Общий вид команды:

если условие
то серия 1
иначе серия 2
все

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

если условие
то серия 1
все

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

Пример 1

если a то
b:=b-a
p:=p+q
иначе
a:=a-b
q:=q+p
все

Пример 2

если x > m
то
m:= x
n:= n+1
все

Пример 3 (исполнитель Робот)

если справа свободно
то
вправо
все

выбор-при-иначе-все

Общий вид команды:

выбор
при условие 1: серия 1
при условие 2: серия 2

при условие n: серия n
иначе серия n+1
все

Ключевое слово иначе вместе с соответствующей серией команд может отсутствовать:

выбор
при условие 1: серия 1
при условие 2: серия 2

при условие n: серия n
все

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

Пример 1

выбор
при a > 1: i:= i + 1
при a < 0: j:= j - 1
иначе t:= i; i:= j; j:= t
все

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

Если вам больше нравится информация в формате видеоуроков, то на сайте есть видеоурок

У любого исполнителя должна быть система команд (СКИ система команд исполнителя ). Система команд исполнителя — совокупность всех команд, которые может выполнить исполнитель. В качестве примера рассмотрим дрессированную собаку. Она умеет выполнять некоторые команды — «Сидеть», «Лежать», «Рядом» и т. п. Это и есть ее система команд.

Простые команды Робота

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

  • вверх
  • влево
  • вправо
  • закрасить

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

  1. вверх — переместить Робота на одну клетку вверх
  2. вниз — переместить Робота на одну клетку вниз
  3. влево — переместить Робота на одну клетку влево
  4. вправо — переместить Робота на одну клетку вправо
  5. закрасить — закрасить текущую клетку (клетку в которой находится Робот).

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

  • вверх — Escape, Up (стрелка вверх)
  • вниз — Escape, Down (стрелка вниз)
  • влево — Escape, Left (стрелка влево)
  • вправо — Escape, Right (стрелка вправо)
  • закрасить — Escape, Space (пробел)

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

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

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

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

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

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

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

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

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

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

вниз

закрасить

вниз

закрасить

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

влево

закрасить

влево

закрасить

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

вверх

закрасить

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

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

алг Квадрат

нач

закрасить

вправо

закрасить

вправо

закрасить

вниз

закрасить

вниз

закрасить

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

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

сделай приседание

сделай приседание

сделай приседание

сделай приседание

сделай приседание

сделай приседание

сделай приседание

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

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

повторяй 7 раз

сделай приседание

конец цикла

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

Виды циклов.

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

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

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

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

<команда 1>

<команда 2>

<команда n>

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

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

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

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

закрасить

вправо

закрасить

вправо

закрасить

вправо

закрасить

вправо

закрасить

вправо

закрасить

вправо

закрасить

вправо

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

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

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

нц 7 раз

закрасить

вправо

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

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

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

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

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

пока не устал

сделай приседание

конец цикла

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

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

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

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

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

сверху стена

снизу стена

слева стена

справа стена

Но в условии задачи 19 ГИА указаны только первые 4. Так что будем пользоваться только ими.

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

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

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

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

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

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

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

вправо

закрасить

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

1. Введение

система "КуМир" (название происходит от слов "Комплект Учебных Миров"), с которой вас познакомит данный электронный вариант учебника.
Разработчики языка "КуМир" преследовали цель создать простой язык для начального курса информатики, отвечающий современной технологии программирования и допускающий производственное использование. За основу был взят школьный алгоритмический язык. Язык был дополнен некоторыми возможностями, превращающими его из учебного в производственный. В языке есть:
типы цел, вещ, лит ; традиционный набор операций над данными этих типов (включая операции над строками и стандартный набор математических функций);
массивы (таб ) указанных типов; структурные управляющие конструкции циклов, ветвление и др.
КуМир открыт - подключение внешних исполнителей обогащает язык новыми возможностями: от управления базами данных и работы с геометрическими объектами до расширения множества допустимых числовых типов (при этом язык позволит смешивать в выражениях новые типы с уже существующими числовыми типами).
Современная технология программирования учит разбивать программу не только на подпрограммы, но и на более крупные единицы: наборы программ, работающих над общими данными. В разных языках программирования такие единицы называются по-разному, в КуМире такая единица называется "Исполнитель". Понятие исполнителя чрезвычайно важно в практической работе , и должно быть введено на возможно более ранних стадиях обучения.
Опыт использования КуМира в преподавании и для разработки учебного программного обеспечения показал, что язык прост в изучении и вместе с тем достаточно мощен для расширения широкого класса производственных задач.
Подобно Е-практикуму, КуМир является интегрированной системой, включающей текстовый редактор, инкрементальный компилятор с нулевым временем ответа, а так же простой и удобный отладчик. Хорошее название для системы такого рода - "Редактор-компилятор": пока вы вводите вашу программу, компилятор ее обрабатывает, и в любой момент программа готова к выполнению без малейшей задержки.

2. Имена и типы величины. Операции КуМира

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

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

Для обозначения знаков логических операций используются символы:
= равно;
< > не равно;
< меньше;
> больше;
< = меньше или равно;
> = больше или равно;
Для записи сложных условий используются такие операции как: И , ИЛИ, НЕ.
И -
одновременное выполнение перечисленных условий (Х > 0 и Х < = 2);
ИЛИ - выполнение хотя бы одного из условий (Х > 0 или Y > 0);
НЕ - отрицание.

3. Встроенные функции языка КуМир

Приведем пример встроенных функций:

Обращение

Функция

Типы

Аргумента

Функции

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

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

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

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

Пример записи арифметических выражений на алгоритмическом языке:

4. Команды ВВОДА / ВЫВОДА информации

Часто требуется организовать обмен информацией ("диалог") между человеком и ЭВМ в процессе выполнения алгоритма. Для этого в алгоритмическом языке есть специальные команды ВЫВОДА информации из памяти ЭВМ на экран и ВВОДА информации с клавиатуры (от человека) в память ЭВМ.
Команда ВВОДА - команда, по которой значения переменных задаются через устройства ввода (клавиатура).
Команда ВЫВОДА - команда, по которой значение величины отражается на устройстве вывода компьютера (экран монитора).
Поскольку в алгоритмическом языке для запоминания информации используются величины, то в командах ввода / вывода указываются имена величин, значения которых надо вывести (показать на экране) или ввести (запомнить в памяти ЭВМ).
Пример:

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

5. Команда присваивания. Создание и редактирование программ линейной структуры

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

ИМЯ ВЕЛИЧИНЫ: = ВЫРАЖЕНИЕ

Знак " : = " (двоеточие, а потом равенство) называется знаком присваивания и читается как "присвоить" (например, команда " n: = e" читается " n присвоить е"). При выполнении команды присваивания ЭВМ сначала вычисляет записанное в правой части выражение (заменяя имена величин на их значения), а потом полученное значение выражения записывает в память.

Алгоритмы, представляющие собой простую последовательность действий, называются алгоритмами линейной структуры.
Рассмотрим процесс создания линейного алгоритма на примере вычисления выражения:
1. Вычислить сумму двух чисел
2. Написать программу нахождения гипотенузы прямоугольного треугольника по двум данным катетам
3. Найти объем куба, если известна его сторона

6. Создание и редактирование программ разветвляющейся структуры

Решение задач не всегда можно представить в виде линейного алгоритма. Существуют задачи, в которых требуется организовать выбор выполнения последовательности действий в зависимости от каких-либо условий. Такие алгоритмы называются алгоритмами разветвляющейся структуры. В системе программирования КуМир для создания алгоритма разветвляющейся структуры предусмотрены конструкции "ЕСЛИ - ТО - ИНАЧЕ - ВСЕ" и "ВЫБОР - ПРИ - ВСЕ".

Команда ветвления: ЕСЛИ - ТО - ИНАЧЕ - ВСЕ

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

Графическая схема выполнения конструкции "если "

Служебные слова "если ", "то ", "иначе " имеют обычный смысл. Слово "все " означает конец конструкции. Между "то " и "иначе " - в одной или нескольких строках - записывается последовательность команд алгоритмического языка (серия 1). Между "иначе " и "все " записывается другая последовательность команд (серия 2). Серия 2 вместе со служебным словом "иначе " может отсутствовать. При выполнении конструкции "если " ЭВМ сначала проверяет условие, записанное между "если " и "то ". В результате проверки получается либо ДА , либо НЕТ. Если получится ДА, то выполняется СЕРИЯ 1, а если НЕТ, - то СЕРИЯ 2 (если она есть) .
Если условие не соблюдается (получится НЕТ ), а серия 2 вместе с "иначе " отсутствует, то ЭВМ сразу переходит к выполнению команд, записанных после слова "все ".

7. Виды циклов в системе программирования КуМир

Алгоритмы, отдельные действия которых многократно повторяются, называются алгоритмами циклической структуры. Совокупность действий алгоритма, связанную с повторением, называют циклом.
Команда цикла обеспечивает повторное выполнение последовательности команд (тела цикла) по некоторому условию.
Для программирования алгоритмов циклической структуры в системе программирования КуМир предусмотрено два вида циклов: цикл с предусловием (цикл пока) и цикл с параметром (цикл для).

Цикл с предусловием (цикл пока)

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

При его выполнении ЭВМ циклически повторяет следующие действия:
а) проверяет записанное после слова пока условие;
б) если условие не соблюдается (условие ложно), то выполнение цикла завершается и ЭВМ начинает выполнять команды, записанные после КЦ . Если же условие соблюдается (условие истинно), то ЭВМ выполняет тело цикла, снова проверяет условие и т. д.
Если условие в цикле пока не соблюдается с самого начала, то тело цикла не выполняется ни разу.
Замечание . Выполнение цикла пока может и не завершиться, если условие все время будет истинным (эту ситуацию принято называть зацикливанием). Поэтому во избежание подобных ситуаций в теле цикла должны содержаться команды изменения условия.

Дано целое положительное число N. Вычислить факториал этого числа: N! = 1 * 2 * 3 * ... * N.

Цикл с параметром (цикл для)

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

Здесь i - переменная целого типа, называемая параметром цикла: i1, in - начальное и конечное значения параметра цикла, которые могут быть заданы либо произвольными целыми числами, либо выражениями с целыми значениями; h - шаг изменения значения параметра цикла, значением шага может быть любое целое число (как положительное, так и отрицательное). Запись "шаг h" в первой строке может вообще отсутствовать, при этом по умолчанию значение шага принимается равным 1.
При выполнении цикла для, его тело выполняется для i = i1, i = i1 + h, i = i1 + 2*h, . . . , i = in. Правила алгоритмического языка допускают задание любых целых i1, in, h. В частности, in может быть меньше i1. Если при этом значение h < 0, то цикл выполняется нужное количество раз, а если h имеет положительное значение, то этот случай не считается ошибочным - просто тело цикла не будет выполнено ни разу, а ЭВМ сразу перейдет к выполнению команд, записанных после КЦ . При h = 0 происходит зацикливание.

Пример: Дано целое положительное число N. Вычислить факториал этого числа: N! = 1 * 2 * 3 * ... * N.

8. Алгоритмы рекуррентных выражений

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

ai = ai-1 + d

В последовательности 1, 1, 2, 3, 5, 8, 13, ... (она называется последовательностью Фибоначчи ) каждый следующий член равен сумме двух предыдущих. Для этой последовательности

ai = ai-1 + ai-2 , a1 = a2 =1

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

9. Табличные величины и работа с ними

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

Работа с линейными таблицами (одномерными массивами)

Как и любая величина, линейная таблица занимает место в памяти ЭВМ, имеет имя, значение и тип. В КуМире используются таблицы целого (целтаб) и вещественного (вещтаб) типов. Например:

Запись целтаб А [ 1: 5 ] означает, что величина А является таблицей (таб), состоящей из целых (цел) чисел, элементы данной таблицы имеют индексы от1 (нижняя граница) до 5 (верхняя граница). Значение А - это пять целых чисел: 3, 15, 0, -10,101.
Элементы таблицы отдельных имен не имеют. Для обозначения i-го элемента таблицы А используется запись А [ i ]. Например, при выполнении команды А [ 3 ] : = A [ 2 ] + A [ 4 ] ЭВМ подставит вместо А [ 2 ] и А [ 4 ] значения 2-го и 4-го элементов таблицы А, т. е. числа 15 и -10, сложит их и присвоит полученное значение 3-му элементу, таким образом, на месте 3-го элемента в таблице вместо 0 появится значение 5.
В качестве значений границ таблицы могут быть использованы любые (как положительные, так и отрицательные) целые числа, а также 0. Значение нижней границы должно быть меньше значения верхней границы, в случае их равенства таблица считается состоящей из одного элемента. Если в описании таблицы из-за описки нижняя граница окажется больше верхней, например, целтаб [ 3: 1], то это не будет считаться ошибкой, и при вводе алгоритма никаких сообщений на "полях" не появится. В этом случае будет считаться, что в этой таблице нет ни одного элемента, и при первом же обращении к этой таблице появится сообщение "плохой индекс".

Задача.

Работа с прямоугольными таблицами (матрицами)

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

Запись целтаб А [ 1: 5, 1:2 ] означает, что величина А является таблицей (таб), состоящей из целых (цел) чисел, элементы данной таблицы имеют индексы от (первый столбец, первая строка) до (последний столбец, последняя строка). Значение А - это десять целых чисел: 3, 15, 0, -10, 101, 200, -45, 50, 10, 222.
Элементы таблицы отдельных имен не имеют. Для обозначения i-го элемента таблицы А используется запись А [ i, j ]. Например, при выполнении команды А [ 3, 1 ] : = A [ 2, 1 ] + A [ 4, 1 ] ЭВМ подставит вместо А [ 2, 1 ] и А [ 4, 1 ] значения 2-го и 4-го элементов первого столбца таблицы А, т. е. числа 15 и -10, сложит их и присвоит полученное значение 3-му элементу в первой строке таким образом, на месте 3-го элемента первой строки в таблице вместо 0 появится значение 5.
В качестве значений границ таблицы могут быть использованы любые (как положительные, так и отрицательные) целые числа, а также 0. Значение нижней границы должно быть меньше значения верхней границы, в случае их равенства таблица считается состоящей из одного элемента. Если в описании таблицы из-за описки нижняя граница окажется больше верхней, например, целтаб [ 3: 1, 5: 2], то это не будет считаться ошибкой, и при вводе алгоритма никаких сообщений на "полях" не появится. В этом случае будет считаться, что в этой таблице нет ни одного элемента, и при первом же обращении к этой таблице появится сообщение "плохой индекс".

Задача. В заданной таблице В определить индекс и значение максимального элемента.

Приложение: Задачи

Линейные алгоритмы

Задача №1

Найдите сумму двух чисел - а и b
Решение:

алг сумма
нач вещ a, b, c
вывод " введите значение 2 чисел"
ввод a, b
с:= a + b
вывод нс , " сумма чисел",a,"и",b,"равна",c
кон

Задача №2

Найдите разность двух чисел
Решение:

алг разность
нач вещ a, b, c
вывод " введите значения переменных "
ввод a, b
с:= a - b
вывод нс, " разность чисел",a,"и",b," равна",c
кон

Задача №3

Найдите произведение двух любых натуральных чисел
Решение:

цел a, b, c

алг произведение
нач
вывод
" введите два числа"
ввод
a, b c: = a + b
вывод нс,
"
произведение чисел",a,"и",b"равно",c
кон

Задача №4

Найдите частное двух натуральных чисел
Решение:

вещ a, b, c

алг частное
нач
вывод "
введите делимое и делитель"
ввод
a, b
c:= a / b
вывод нс,
" частное чисел",a,"и",b,"равно",c
кон

Задача №5

Найдите среднее арифметическое пяти произвольных чисел
Решение:

вещ a, b, c, d, e, f

алг арифметическое
нач вещ a, b, c, d, e, f
вывод " введите 5 любых чисел"
ввод a, b, c, d, e
f:=(a + b + c + d + e)/ 5
вывод нс ," среднее арифметическое 5 чисел равно", f
кон

Ветвление

Задача №1

Найдите среди 3 целых чисел наибольшее (числа произвольные)

алг максимум
нач цел а, б, в
вывод " введите три произвольных числа"
ввод а, б, в
если а>б>с
то вывод нс ," максимальным числом является", а
все
если а<б>с
то вывод нс ," максимальным числом является", б
все
если а<б<с
то вывод нс ," максимальным числом является", с
все
кон

Задача №2

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

алг условие
нач вещ а, б
вывод " введите два числа"
ввод а, б
если а > б
то а:= а + б
б:= а * б
иначе а:= а * б
б:= а + б
вывод нс , а, б
кон

Задача №3:

Найдите среди 4 произвольных чисел минимальное
Решение:

алг минимум
нач вещ а, б, с, е
вывод " введите 4 произвольных числа"
ввод а, б, с. е
если а>б>с>е
то вывод нс ," максимальное число-",а
все
если а<б>c>е
то вывод нс ,"максимальное число -",б
все
если
а<б<с>е
то вывод нс ," максимальное число -", с
все
если
а<б<с<е
то вывод нс , " максимальное число -", е
все
кон

Задача №4

Даны 2 катета (2 см и 2 см) равнобедренного треугольника и его основание (2.82 см). Определить, является ли треугольник прямоугольным.
Решение:

алг треугольник
нач вещ я, ч, с
я:= 2
ч:= 2
с:= 2.82
если с**2= (я**2)+(ч**2)
то вывод " истина"
иначе вывод " ложь"
все
кон

Задача №5

Вывести сообщение " истина", если произведение двух отрицательных чисел больше ноля, иначе вывести сообщение " ложь"
Решение:

алг отриц
нач вещ я, ч, с, м
вывод " введите два отрицательных числа"
ввод я, ч
с:=0
м:= я * ч
если м>с
то вывод нс ," истина"
иначе вывод нс ,"ложь"
все
кон

Цикл «для»

Задача №1

Найдите Факториал натурального числа n (Факториалом натурального числа n является произведение всех натуральных чисел на промежутке от 1 до n ) Решение:

алг факториал
нач вещ
а. б
цел
н, и
вывод

ввод
н
а:= 1
нц для
и от 1 до н
вывод нс ,
" введите число"
ввод
б
а:= а * б
кц
вывод нс
,
" факториал ",н,"целых чисел равен", а
кон

Задача №2

Найдите максимальное значение среди n - целых чисел
Решение:

алг максимум
нач вещ
а, б
цел
и, н
вывод
" введите количество целых чисел для сравнения"
ввод
н
а:=0
нц для
и от 1 до н
вывод нс ,
"введите число"
ввод
б
если
б>а
то
а:=б
все
кц
вывод нс ,
" максимальным числом среди данных является число", а
кон

Задача №3

Найдите среди n-целых чисел количество отрицательных
Решение:

алг совпадение
нач вещ
а, б, с
цел
н, и, з
вывод "
введите количество натуральных чисел"
ввод
н
вывод нс ,
"введите число"
ввод
б
н:= н - 1
з:= 0
нц для
и от 1 до н
вывод нс ,"
введите число"
ввод
с
если
с = б
то
з:= з + 1
все
кц
вывод нс
,

кон

Задача №4

Последовательно вводятся n-целых чисел. Найти количество совпадений с первым числом
Решение:

нач вещ а, б, с
цел
н, и, з
вывод
" введите количество натуральных чисел"
ввод
н
вывод нс ,
"введите число"
ввод
б
н:= н - 1
з:= 0
нц для
и от 1 до н
вывод нс ,
" введите число"
ввод
с
если
с = б
то з:= з + 1
все
кц
вывод нс
,
" количество совпадений с первым числом равно", з
кон

Задача №5

Последовательно вводятся n-целых чисел. Найти разницу между максимальным и минимальным значениями данных чисел
Решение:

алг разница
нач вещ
а. б, с, д
цел
н, и
вывод
"Введите количество чисел"
ввод
н
а:= 0
с:= 0
нц для
и от 1 до н
вывод нс ,
"введите число"
ввод
д
если
д>с
то
с:= д
все
если
д<а
то
а:= д
все
кц
б:= с - а
вывод нс ,
"разница между минимальным и максимальным значениями равна", б
кон

Цикл «пока»

Задача №1

Найти сумму всех чисел на промежутке от 1 до 5
Решение:

алг числа
нач вещ а, б
вывод " введите два таких числа, что второе число больше первого"
ввод а, б
нц пока а<б
а:= а + 1
кц
вывод нс
, а
кон

Задача №2

Дано два таких числа, что второе число больше первого. Надо прибавлять к первому числу по 1, пока оно не будет равно второму числе, вывести его на монитор.
Решение:

алг сумма
нач вещ а, б, с
вывод " введите промежуток суммирования"
ввод а, б
с:= а
нц пока а < б
а:= а + 1
с:= с + а
кц
вывод нс
," сумма чисел на данном промежутке равна", с
кон

Задача №3

Дано два произвольных числа. Пока их произведение меньше 100, увеличивать каждое число на 2 и вывести конечные числа на монитор
Решение:

алг произведение
нач вещ а, б, с
вывод " введите два произвольных числа "
ввод а, б
с:= 100
нц пока а * б < с
а:= а + 2
б:= б + 2
кц
вывод нс
, а, б
кон

Одномерные массивы

Задача №1

Заполните массив случайными числами и выведите его элементы Решение:

алг массив 2
нач цел
n, i
вещ
b, max
вещтаб
а [ 1:n ]
вывод
" заполните массив "
ввод
n
max:= 0
нц для
i от 1 до n
вывод нс ,
" введите элемент массива"
ввод
b
если
b > max
то max:= b
все
кц
вывод нс
,

кон

Задача №2

Найдите максимальный элемент массива и выведите его на монитор Решение:

алг массив 2
нач
цел n, i
вещ
b, max
вещтаб а [ 1:n ]
вывод
" заполните массив "
ввод
n
max:= 0
нц для
i от 1 до n
вывод нс ,
" введите элемент массива"
ввод
b
если
b > max
то max:= b
все
кц
вывод нс
,
" максимальный элемент данного массива равен", max
кон

Задача №3

Найдите сумму элементов одномерного массива Решение:

алг сумма
нач цел
n, i
вещтаб
а [ 1:n ]
вещ
b, z
вывод
" введите количество элементов массива "
ввод
n
z:= 0
нц для i от 1 до n
вывод нс ,
" введите элемент массива"
ввод
b
z:= z + b
кц
вывод нс
,
" сумма",n,"элементов массива равна", z
кон

Задача №4

Найдите произведение элементов одномерного массива Решение:

алг произведение
нач цел
i, n
вещ
s, d
вещтаб
а [ 1:n ]
вывод
" введите количество элементов массива"
ввод
n
d:= 1
нц для
i от 1 до n
вывод нс ,
"введите число"
ввод
s
d:= d * s
кц
вывод нс
,"
произведение", n, " элементов равно", d
кон

Массивы

Задача №1


Заполните матрицу случайными числами Решение:

алг массив двумерный
цел
n, j, h, v
нач вещтаб
а
вывод
" введите количество элементов таблицы"
ввод
n
h:= 0
v:= 0
вывод нс ,
" заполните массив"
ввод
a
нц для
j от 1 до n
если а > 0
то
h:= h + 1
иначе
v:= v + 1
кц
вывод нс ,
а
кон


Задача №2


Вычислите количество положительных и отрицательных элементов первой строчки матрицы Решение:

алг массив 2
нач
вещ b, x, z
цел
i, n
вывод

ввод
n x:= 0
z:= 0
нц для
i от 1 до n
вывод
нс ," введите число"
ввод
b
если
b > 0
то
x:= x + 1
иначе
z:= z + 1
все
кц
вывод нс
,

вывод нс ,

кон


Задача №3


Вычислите сумму элементов каждой строки Решение:

алг массив 3
нач вещ
b, x, z, y
цел
i, n
вещтаб
a[ 1:n, 1:n ]
вывод
" введите количество столбцов"
ввод
n x:= 0
z:= 0
нц для
i от 1 до n
вывод нс ,
" заполните массив"
ввод
a[ 1:n, 1:n ]
b:= a[ 1,i ]+a[ n, i ]
кц
вывод нс
,
" количество положительных чисел равно",x
вывод нс ,
" количество отрицательных чисел равно", z
кон


Задача №4


Вычислите сумму трех чисел второй строчки матрицы размером три на три Решение:

алг матрица
нач цел
i, n
вещтаб a[ 1:3, 1:3]
вывод " заполните массив"
ввод a[ 1:3, 1:3 ]
n:= 0
нц для i от 1 до 3
n:= n + a[ 2,i ]
кц
вывод нс ,
"сумма чисел второй строки массива равна", n
кон





error: Контент защищен !!