Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЕОРИЯ КО ВСЕМ БИЛЕТАМ - 2010.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
4.31 Mб
Скачать

Билет 6

Задание 1.

Что нарисует Черепашка по команде REPEAT 4 [TR RIGHT 90], где

TO TR

REPEAT 3 [ FORWARD 40 RIGHT 120]

END?

Вопросы:

  1. При изучении какой темы школьного курса информатики встречаются задачи подобные данной?

  2. Сформулируйте этапы решения этой задачи учащимися.

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

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

Задание 2.

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

Вопросы:

  1. В чем суть понятий алгоритма и исполнителя? Перечислите их основные свойства.

  2. Каковы особенности различных подходов и парадигм в развитии программирования? Приведите классификацию языков программирования.

  1. Алгоритм – это точное и понятное предписание исполнителю совершить некоторую последовательность действий на решение поставленной задачи.

Свойства алгоритма:

1) Описываемый процесс должен быть разбит на последовательность отдельных шагов (дискретность);

2) Алгоритмы составляются с ориентацией на определенного исполнителя (нужно знать, какие команды этот исполнитель может понять и исполнять, а какие не может);

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

4) Результативность (за конечное число шагов должен получиться определенный результат);

5) Массовость (наиболее распространены алгоритмы, обеспечивающие решение не одной конкретной задачи, а некоторого класса задач данного типа)

Любой алгоритм для своего исполнения требует исполнителя.

Исполнитель – это объект (или субъект) для управления которым составляется алгоритм.

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

Основная характеристика исполнителя: система команд исполнителя – это конечное множество команд, которое понимает исполнитель.

Понятие исполнителя выполняет в информатике несколько функций:

  1. Дидактическое средство для придания процессу исполнителя

алгоритма наглядности (понятности).

  1. Понятие позволяет с единых позиций трактовать многие вопросы

информатики.

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

В практике алгоритмизации принято делить все алгоритмы на 2 класса:

  1. Алгоритмы “в обстановке”;

  2. Алгоритмы работы с величинами.

Под алгоритмами “в обстановке” понимаются те, которые не содержат

вершин, а также не содержат команд изменения значений каких-то величин.

Примерами таких исполнителей явл-ся: машинист, чертёжник, робот.

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

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

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

2. Парадигма – это некоторый набор идей и рекомендация, определяющих стиль написания программ.

Структурный подход. С появлением массовых ЭВМ 3-го поколения устаревшая технология програм­мирования оказалась основным фактором, сдерживающим развитие и распростра­нение компьютерных (информационных) технологий, что подтолкнуло ведущие в этой сфере деятельности фирмы, в первую очередь IBM, к разработке новых мето­дологий программирования. Появившийся в начале 1970-х годов новый подход к разработке алгоритмов получил название структурного.

С появлением структурного программирования описанные выше трудности бы­ли во многом преодолены. В основе технологических принципов структурного программирования лежит утверждение о том, что логическая структура программы может быть выражена комбинацией трех базовых структур: следования, ветвления и цикла (это содержание теоремы Бема-Якопини).

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

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

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

Эта структура называется также «ЕСЛИ - ТО - ИНАЧЕ», или «развилка». Каж­дый из путей (ТО или ИНАЧЕ) ведет к общей точке слияния, так что выполнение программы продолжается независимо от того, какой путь был выбран.

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

Цикл (или повторение) предусматривает повторное выполнение некоторого на­бора команд программы. Если бы циклы не существовали, вряд ли занятие про­граммированием было бы оправданным: циклы позволяют записать длинные последовательности операций обработки данных с помощью небольшого числа повторяющихся команд. Разновидности цикла изображены на рис. 1.22 и рис. 1.23.

Ц икл начинается с проверки логического выражения. Если оно истинно, то вы­полняется «я», затем все повторяется снова, пока логическое выражение сохраняет значение «истина». Как только оно становится ложным, выполнение операций «а» прекращается и управление передается по программе дальше.

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

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

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

относятся: а процедурное программирование (Паскаль, Бейсик. Фортран, Си, Ассемблеры); D логическое программирование (Пролог); □ функциональное программирование (Лисп); D объектно-ориентированное программирование (Смолток, Си++, Делфи).

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

Классической, универсальной и наиболее распро­страненной является процедурная парадигма. Наибо­льшее количество существующих языков программи­рования относятся к этой линии. Поэтому чаще всего в учебных заведениях изучается процедурное програм­мирование. А наиболее часто изучаемыми в школе языками программирования являются Паскаль и Бей­сик. В дальнейшем под словом «программирование» мы будем подразумевать именно процедурную парадигму. Процесс изучения и практического освоения про­граммирования можно разделить на три части: D изучение методов построения вычислительных ал­горитмов;

D изучение языка программирования; а изучение и практическое освоение определенной системы программирования.

Здесь и в дальнейшем термин «вычислительные алгоритмы» будем понимать в самом широком смысле как алгоритмы работы с величинами любых типов, ориентированные на исполнителя — ЭВМ.

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

Процедурные языки разделяют на языки низкого и высокого уровня.

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

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

Перечислим наиболее известные системы программирования:

1. Фортран (FORmula TRANslating system - система трансляции формул); старей­ший и по сей день активно используемый в решении задач математической ори­ентации язык.

2. Бейсик (Beginner's All-purpose Symbolic Instruction Code - универсальный символический код инструкций для начинающих); несмотря на многие недос­татки и изобилие плохо совместимых версий - самый популярный по числу пользователей.

3. Алгол (ALGOrithmic Language - алгоритмический язык); сыграл большую роль в теории, но для практического программирования сейчас почти не используется.

4. ПЛ/1 (PL/1 Programming Language - язык программирования первый). Многоце­левой язык; сейчас почти не используется.

5. Си (С - «си»); широко используется при создании системного программного обеспечения.

6. Паскаль (Pascal - назван в честь ученого Блеза Паскаля); чрезвычайно популя­рен как при изучении программирования, так и среди профессионалов. На его базе созданы несколько более мощных языков (Модула, Ада, Дельфи).

7. Кобол (COmmon Business Oriented Language - язык, ориентированный на общий бизнес); в значительной мере вышел из употребления.

3. Дельфи (Delphi) - язык объектно-ориентированного «визуального» программи­рования; в данный момент чрезвычайно популярен.

9. Джава (Java) - платформенно-независимый язык объектно-ориентированного программирования, чрезвычайно эффективен для создания интерактивных веб­страниц.

Среди непроцедурных языков наиболее известны

1. Лисп (Lisp);

2. Пролог (PROgramming in LOGic);

3. Оккам (назван в честь философа У. Оккама).

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

1) процедурное: операциональное (Ассемблер, Бейсик) и структурное (Паскаль);

2) непроцедурное: объектное (Смолток, Делфи), логическое (Пролог), функциональное (Лисп).