Хирьянов Тимофей Федорович
Основные алгоритмические конструкции, кроме элементарных операций, изображаемых одним элементом схемы – это альтернативное исполнение и циклы. Существует два варианта программирования альтернативного исполнения и существует три основных вида цикла.
Условно исполняемый код
Некоторые операции могут быть поставлены под условный оператор. Тогда они будут выполнены только в случае истинности этого условия.если <условие>
то
<действия>
все
Альтернатива
В блок-схеме проверка условия может служить принципом выбора альтернативных операций. То есть, если условие истинно, исполнение пойдет по одной траектории, а если ложно, то по другой. На языке КуМир цикл с предусловием имеет следующий вид:если <условие>
то
<действия>
иначе
<альтернативные действия>
все
Условия для робота:
слева стена
справа стена
снизу стена
сверху стена
клетка закрашена
слева свободно
справа свободно
снизу свободно
сверху свободно
клетка чистая
Цикл с предусловием
Цикл с предусловием — цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно). В большинстве процедурных языков программирования реализуется оператором while , отсюда его второе название — while-цикл. На языке КуМир цикл с предусловием имеет следующий вид:нц пока <условие>
<тело цикла>
кц
Цикл с постусловием
Цикл с постусловием — цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз. В языке Паскаль этот цикл реализует оператор repeat..until , в Си — do…while .На языке КуМир цикл с постусловием имеет следующий вид:
нц
<тело цикла>
кц_при <условие>
Цикл со счётчиком
Цикл со счётчиком — цикл, в котором некоторая переменная изменяет своё значение от заданного начального значения до конечного значения с некоторым шагом, и для каждого значения этой переменной тело цикла выполняется один раз. В большинстве процедурных языков программирования реализуется оператором for , в котором указывается счётчик (так называемая «переменная цикла»), требуемое количество проходов (или граничное значение счётчика) и, возможно, шаг, с которым изменяется счётчик. На языке КуМир цикл со счетчиком имеет следующий вид:В различных языках программирования по-разному решается вопрос о значении переменной по завершении цикла, в котором эта переменная использовалась как счётчик.цел а
нц для а от 0 до 9
… тело цикла
кц
Ее для дальнейшей работы и научились задавать . Теперь перейдем непосредственно к составлению алгоритмов для Робота с использованием простых команд.
Если вам больше нравится информация в формате видеоуроков, то на сайте есть видеоурок
У любого исполнителя должна быть система команд (СКИ — система команд исполнителя ). Система команд исполнителя — совокупность всех команд, которые может выполнить исполнитель. В качестве примера рассмотрим дрессированную собаку. Она умеет выполнять некоторые команды — «Сидеть», «Лежать», «Рядом» и т. п. Это и есть ее система команд.
Простые команды Робота
У нашего Робота тоже есть система команд. Сегодня мы рассмотрим простые команды Робота . Всего их 5:
- вверх
- влево
- вправо
- закрасить
Результат выполнения этих команд понятен из их названия:
- вверх — переместить Робота на одну клетку вверх
- вниз — переместить Робота на одну клетку вниз
- влево — переместить Робота на одну клетку влево
- вправо — переместить Робота на одну клетку вправо
- закрасить — закрасить текущую клетку (клетку в которой находится Робот).
Эти команды можно писать с клавиатуры, а можно использовать горячие клавиши (нажав их команды будут вставляться автоматически):
- вверх — Escape, Up (стрелка вверх)
- вниз — Escape, Down (стрелка вниз)
- влево — Escape, Left (стрелка влево)
- вправо — Escape, Right (стрелка вправо)
- закрасить — Escape, Space (пробел)
Обратите внимание, что набирать нужную комбинацию горячих клавиш нужно не привычным нам способом! Мы привыкли нажимать клавиши одновременно, а здесь их нужно нажимать последовательно . К примеру, чтобы ввести команду вверх, нужно нажать Escape, отпустить ее и после этого нажать стрелку вверх. Это нужно помнить.
Теперь мы готовы написать первый алгоритм для Робота. Предлагаю начать с простого — нарисуем квадрат со стороной 3 клетки. Поехали!
Запускаем Кумир, его. Можно начинать писать программу? Конечно нет! Мы же не ! Делаем это. Предлагаю использовать вот такую:
Вот теперь все готово. Начинаем писать программу. Пока она выглядит так
Удаляем символ «|» и называем наш алгоритм «Квадрат»
Предлагаю рисовать квадрат, двигаясь по часовой стрелке. Для начала закрасим текущую клетку, дав команду закрасить . Потом делаем шаг вправо и опять закрашиваем клетку. И еще раз шаг вправо и закрасить.
Попробуем запустить программу и посмотреть что же получилось. Для запуска нажимаем F9 или же кнопку на панели инструментов
В результате мы должны увидеть вот такую картину
Если такое окно Робота у вас не появилось, то на панели инструментов щелкните «Показать окно Робота » или в меню Робот выберите пункт «Показать окно Робота «. Продолжаем дальше.
Теперь мы будем двигаться вниз и закрашивать правую сторону квадрата:
вниз
закрасить
вниз
закрасить
Потом пойдем влево, закрашивая нижнюю границу квадрата
влево
закрасить
влево
закрасить
У нас осталась одна незакрашенная клетка. Закрасим ее
вверх
закрасить
Все готово! В итоге наша программа выглядит так:
использовать Робот
алг Квадрат
нач
закрасить
вправо
закрасить
вправо
закрасить
вниз
закрасить
вниз
закрасить
Цели : сформировать умение записи, исполнения и отладки алгоритмов с использованием цикла пока ; добиться понимания использования цикла пока ; развивать умение анализировать.
Ученики должны знать : правила записи и исполнения цикла пока ; свойства цикла пока .
Ученики должны уметь : использовать при составлении алгоритмов конструкцию цикла пока и записывать ее на языке Кумир, владеть методами отладки: по шагам, непрерывно.
Метод обучения: объяснительно-иллюстративный и репродуктивный (на этапе объяснения нового материала), репродуктивный с элементами проблемного (этап закрепления материала).
Обеспечение урока:
- система Кумир;
- интерактивная доска;
- мультимедийный проектор;
- карточки-задания.
Ход урока
1. Объяснение нового материала.
В общем случае алгоритм должен быть универсальным, т.е., он не должен зависеть от расстояния между Роботом и стеной. Для этого в алгоритмическом языке есть специальная команда – цикл пока .
Общий вид цикла пока
В общем виде цикл пока записывается так:
При выполнении цикла компьютер повторяет следующие действия:
а) проверяет записанное после служебного слова пока условие;
б) если условие не соблюдается, то выполнение цикла завершается, и компьютер начинает выполнять команды, записанные после кц . Если же условие соблюдается, то компьютер выполняет тело цикла, снова проверяет условие и т.д.
Пример .
Метод отладки : по шагам.
Диалог Компьютера и Робота
Компьютер : снизу свободно?
Робот : да.
Компьютер : вниз.
Робот : смещается вниз в клетку Б.
Компьютер : снизу свободно?
Робот : да.
Компьютер : вниз.
Робот : смещается вниз в клетку В.
Компьютер : снизу свободно?
Робот: нет.
Так как Робот ответил нет, т.о. записанное после пока условие не соблюдается и выполнение цикла заканчивается.
Продемонстрировать в системе Кумир методы отладки: по шагам и непрерывно.
Тело цикла может не выполниться ни разу, если условие в цикле пока не соблюдается с самого начала. Например, если в алгоритме «вниз до стены» Робот на первый же вопрос «снизу свободно » ответит нет , то компьютер не вызовет команду «вниз» ни разу.
Зацикливание. Выполнение цикла пока может и не завершиться, если условие все время будет соблюдаться. Например, если ниже Робота никаких стен нет, то при выполнении предыдущего алгоритма, компьютер «зациклится», т.е. будет бесконечно спрашивать у Робота «снизу свободно», получать в ответ да и командовать «вниз».
Выполнение упражнений.
2. Эксперименты с программой на примере исполнителя Робот.
Необходимо, в системе Кумир, предварительно сделать заготовки расположения Робота (файлы 1. fil -6. fil ).
Упражнения.
Эксперименты с программой.
Задание 1 . (Загрузить файл 1.fil)
Требуется перевести Робота из клетки А в клетку Б. Использовать цикл пока:
использовать Робот
Задание 2 . (Загрузить файл 2.fil)
Дано, что Робот находится у левой стены внутри прямоугольника, огороженного со всех сторон стенами. Внутри прямоугольника стен нет, размеры прямоугольника неизвестны. Требуется закрасить горизонтальный ряд клеток от исходного положения Робота до правой стены и вернуть Робота в исходное положение.
Задание 3 . (Загрузить файл 3.fil)
Робот находится в горизонтальном коридоре. Закрасить все клетки коридора:
Задание 4 . (Загрузить файл 4.fil)
1. Переделайте алгоритм «закрасить ряд вправо и вернуться» используя в нем цикл:
2. Используя вспомогательный алгоритм, составьте алгоритм, при выполнении которого Робот закрашивает прямоугольник.
Задание 5 . (Загрузить файл 5.fil)
Составьте алгоритм для закраски всех клеток вокруг прямоугольной стены:
Задание 6 . (Загрузить файл 6.fil) (Из материалов экзамена 2009г.)
Робот находится в левом верхнем углу огороженного пространства, имеющего форму прямоугольника. Размеры прямоугольника неизвестны. Написать для Робота алгоритм, закрашивающий четыре угловые клетки прямоугольника.
Задание 7 . (Загрузить файл 6.fil) (Из материалов экзамена 2009 г.)
Робот находится в левом верхнем углу огороженного пространства, имеющего форму прямоугольника. Размеры прямоугольника неизвестны. Написать для Робота алгоритм, закрашивающий все клетки, расположенные внутри прямоугольника и прилегающие к нижней стороне прямоугольника.
3. Закрепление. Вопросы:
Какие команды Компьютер будет давать Роботу при выполнении цикла:
а) нц пока клетка не закрашена
б) нц пока клетка закрашена
В ситуации, когда Робот стоит:
- в закрашенной клетке,
- в не закрашенной?
Расположение Робота показано на следующих рисунках:
Как будет выполняться цикл?
Домашнее задание. Определите значение переменной S после выполнения операторов:
Литература : А.Г.Кушниренко «Основы информатики и вычислительной техники».
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) ПИ | синус х косинус х тангенс х | вещ | вещ |
Пример записи арифметических выражений на алгоритмическом языке:
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
кон