Данному образовательному сайту пришлось несколько раз менять свое имя. С 2022 года доступ к нему обеспечивается по URL
emc.km.ru (2001-2007) ==> educomp.org.ru (2007-2011) ==> educomp.runnet.ru (2011-2021) ==> emc.orgfree.com (2022-...)
Более подробно об истории сайта можно прочитать здесь.
|
Файл 8 ( 1000 )Сталкиваемся с массивами. Пытаемсяпоработать с ними на СМ "Малютке". Знакомимся с задачами поиска минимума и сортировки. Претендуем на звание "Начинающий профессионал третьей категории". " Давным-давно выражалась надежда на некий качественно новый уровень изучения нашего учебника по сравнению с другими учебниками. В частности, предполагалось, что вопросы и задания не пропускаются, а хотя бы просматриваются. Приходится об этом напоминать, так как при работе с СМ "Малюткой" очень важно получить именно практические навыки. Собственно, далее мы только и будем заниматься решением задач. Оно и понятно: можно хоть всю жизнь теоретически учиться кататься на велосипеде, но пока не сядешь - не поедешь. Впрочем, хватит образных сравнений и прибауток. Займемся лучше делом. Очень часто приходится обрабатывать большое количество однородной информации. Например, найти самого быстрого ученика в школе. Или составить список двадцати крупнейших городов мира, упорядочив их по численности населения. В этой сфере возникают стандартные задачи программирования. Одной из них - задачей поиска минимума - мы и займемся. Итак, пусть в ячейках 41, ... 4A находятся целые числа. (Программисты сказали бы: "В ячейках 41-4A располагается одномерный массив чисел). Задача. Найти минимальное число в этом массиве. ... Предположим, нам надо найти самого быстрого ученика в школепо протоколам забегов на 60 метров. Как это сделать? Видимо, одно из решений могло бы выглядеть так: Решение: Программа { Взять листочек бумажки; Делать пока (есть непросмотренные протоколы) { Взять непросмотреный протокол; Найти самого быстрого ученика и его время; Сравнить с записанным раньше временем; Если (новое время меньше записанного) то {обновить запись: время и фамилию} } } Самая последняя запись и будет содержать фамилию самого быстрого ученика и его время. Единственное, к чему бы стоило придраться - при просмотре самого первого протокола требуется просто выписать время и фамилию самого быстрого ученика, ни с чем не сравнивая его результат. Или просто выбрать поначалу первого попавшегося ученика, а то непонятно, что же мы собрались обновлять. Ну а наш ... универсальный вычислитель может за один раз просматривать всего одно число, а не целый лист. Поэтому поиск минимального числа в массиве решается следующим алгоритмом; Решение: Программа Цел: MIN, N, I, R; { (* В ячейке с именем MIN будем хранить минимальное значение, а в ячейке, с именем N - номер ячейки, где находится это значение *) Заслать в MIN содержимое 41-й ячейки; Заслать в N число 41; Делать от I=2 до 10 { Заслать в ячейку R содержимое 40+I-той ячейки; Если (R<MIN) то {MIN=R; N=40+I} } (* конец цикла *) Выдать на табло MIN и N; } Как обычно, начинаем с распределения памяти. Нам требуется выделить ячейки ОП под переменные N, I, R, MIN, под константы 2, -11 (для проверки конца цикла), 40, 1. Быть может, и еще для чего-нибудь. Распределение памяти:
В ячейку 00 занесем константу 00A, указывающую, что программа начинается в ячейке 00А, и начнем потихоньку...
Немного приостановимся. Теперь от нас требуется в ячейку R заслать содержимое ячейки с номером I+40. Ну, положим, к I мы сможем прибавить 40. А дальше что? Как обратиться к ячейке с переменным номером? Вот здесь-то и воспользуемся способностью "Малютки" выполнять числа, как команды. Число 40+I, воспринятое, как команда, будет означать посылку в сумматор содержимого этой самой ячейки. Стало быть, надо вычислить 40+I и сохранить в ячейке, входящей в программу:
Дальше - дело техники. Надеемся, для вас не составит труда дописать программу до конца. " © А.И.Сенокосов, А.Г.Гейн, 1995 Цитируется по книге Сенокосов А.И., Гейн А.Г. "Информатика 8-9" с разрешения авторов © Оформление Web-страницы Е.А.Еремин, 2001 |