ФГОС
ФГОС
и. г. Семакин, Е. К. Хеннер,
Л. В. Шестакова
ИНФОРМАТИКА
УГЛУБЛЕННЫЙ УРОВЕНЬ
Практикум для 10-11 классов
в 2-х частях
Часть 2
Москва
БИНОМ. Лаборатория знаний 2013
УДК 004.9 ББК 32.97 СЗО
Семакин И. Г.
СЗО Информатика. Углубленный уровень : практикум для 10-11 классов : в 2 ч. Ч. 2 / И. Г. Семакин,
Е. К. Хеннер, Л. В. Шестакова. — М. : БИНОМ. Лаборатория знаний, 2013. — 120 с. : ил.
ISBN 978-5-9963-1643-4 (Ч. 2)
ISBN 978-5-9963-1550-5
Компьютерный практикум входит в состав УМК по информатике для старшей школы (углубленный уровень) наряду с учебниками для 10 и 11 классов и методическим пособием. Учебники содержат ссылки на разделы практикума. Практикум включает 17 тематических разделов. Все практические задания предназначены для выполнения на компьютере с использованием системного и прикладного ПО, систем программирования, авторских электронных образовательных ресурсов. Задания разделены на три уровня сложности. Большое количество и разнообразие заданий в практикуме дает возможность учителю адаптировать содержание практической части учебного курса к профилю класса, уровню подготовки учеников, выделенному для курса объему учебного времени, уровню технического и программного обеспечения учебного процесса. Файлы для выполнения заданий, отмеченные значком диска, входят в состав электронного приложения, размещенного на сайте издательства (https://www.Lbz.ru).
УДК 004.9 ББК 32.97
Учебное издание
Семакин Игорь Геннадьевич Хеннер Евгений Карлович Шестакова Лидия Валентиновна
ИНФОРМАТИКА.
УГЛУБЛЕННЫЙ УРОВЕНЬ Практикум для 10—11 классов В двух частях Часть вторая
Ведущий редактор Д. Ю. Усенков. Ведущий методист И. Л. Сретенская
Художник Н. А. Новак
Технический редактор Е. В. Денюкова. Корректор Е. Н. Клитина Компьютерная верстка: Л. В. Катуркина Подписано в печать 05.03,13. Формат 70x100/16.
Уел. печ. л, 9,75. Тираж 5000 экз. Заказ 2435
При участии ООО Агентство печати «Столица» www.apstolica.ru; e-mail:
[email protected]
Издательство «БИНОМ. Лаборатория знаний»
125167, Москва, проезд Аэропорта, д. 3 Телефон: (499)157-5272, e-mail:
[email protected] https://www.Lbz.ru, https://e-umk.Lbz.ru, https://metodist.Lbz.ru
Отпечатано в ОАО «Первая Образцовая типография», филиал «УЛЬЯНОВСКИЙ ДОМ ПЕЧАТИ». 432980, г. Ульяновск, ул. Гончарова, 14
ISBN 978-5-9963-1643-4 (Ч. 2) ISBN 978-5-9963-1550-5
БИНОМ. Лаборатория знаний, 2013
Раздел 14
Системология
Работа 14.1. Модели систем^
Цель работы: формирование навыков системного анализа, построения структурных схем и графов классификаций.
Задание 1 (уровень 2). Используя текстовый редактор, подготовьте небольшой отчет на тему «Модель черного яш;ика». Опишите проблему множественности вариантов модели «черного ящика» для одной и той же системы на примерах знакомых вам систем: радиоприемник, автомобиль, компьютер, столовая, школа и пр. (вы можете продолжить этот список). Перечислите при этом нежелательные входы и выходы. Установите, как можно устранить недостатки системы (нежелательные связи с внешней средой). Описание представьте в табличной форме.
Задание 2 (уровень 2). Используя текстовый редактор, подготовьте небольшой отчет на тему «Модель состава системы». Изобразите графическими средствами модели состава систем, рассмотренных в первом задании. Обоснуйте вашу модель с точки зрения ее назначения. Отметьте, какие составляющие системы в этой модели рассматриваются в качестве элементов, а какие — в качестве подсистем.
Задание 3. Построение структурной схемы сложной системы.
Вариант 1 (уровень 1). Используя графические средства, воспроизведите схему, отражающую состав и структуру танкового батальона (рис. 14.1). Подсчитайте количество танков в роте и общее количество танков в батальоне.
Вариант 2 (уровень 2). Постройте граф, отображающий состав и структуру мотопехотного батальона (армия ФРГ образца 1970 г.) по следующему описанию.
Батальон на БМП (боевых машинах пехоты) имел численность
764 человека. Во главе батальона стоял командир, которому
Подборка заданий составлена М. А. Плаксиным.
Раздел 14. Системология
Рис. 14.1. Структура танкового батальона
подчинялись штаб и 5 рот: штабная и снабжения, минометная и три мотопехотные. Рота штабная и снабжения состояла из управления и трех взводов: штабного, связи и снабжения. В штабном взводе было четыре отделения: штабное, мотоциклистов, транспортное и разведывательное. Во взводе связи было три отделения радиосвязи и два отделения проводной связи. Во взводе снабжения было четыре отделения: материально-технического обеспечения, продовольственного снабжения, транспортное и санитарное.
Минометная рота состояла из управления, двух отделений передового наблюдения, отделения обеспечения и шести расчетов 120-мм минометов.
Каждая мотопехотная рота (163 чел.) имела в своем составе три мотопехотных взвода по 48 чел. Каждый взвод состоял из группы управления и четырех мотопехотных отделений по 10 чел. Отделение делилось на две группы: первая — командир машины, наводчик-оператор (БМП «Мардер» оснащался 20-мм
Работа 14.1. Модели систем
пушкой И двумя пулеметами) и механик-водитель; вторая — командир отделения, пулеметчик, гранатометчик, огнеметчик и три стрелка.
Задание 4. Построение графов классификаций.
Вариант 3 (уровень 1). Используя графические средства, воспроизведите схему, отражаюгцую классификацию геометрических объектов (рис. 14.2).
Рис. 14.2. Граф классификации геометрических объектов
Вариант 4 (уровень 2). Постройте граф классификации биологической системы по следующему описанию.
Согласно биологической классификации, выделяют три империи (надцарства): археобактерии, эукариоты и прокариоты. К империи эукариотов относятся царства грибов, растений и животных. К царству животных относятся типы членистоногих, моллюсков, иглокожих, кишечнополостных, хордовых и др. к типу хордовых относятся классы рыб, амфибий, рептилий, млекопитающих, птиц. К классу млекопитающих относятся отряды китов, ластоногих, хищных, грызунов, копытных и др. к отряду хищных относятся семейства медвежьих, енотовых, псовых, виверровых, кошачьих и др. К семейству псовых относятся роды лисиц, енотовидных собак, собак, фе-неков, песцов и др. К роду собак относятся виды собак домашних, волков, шакалов, койотов. К виду собак домашних относятся овчарки, спаниели, водолазы, сенбернары, доги, болонки и др.
Раздел 14. Системология
Вариант 5 (уровень 2). Постройте граф классификации в русском языке по следующему описанию.
Предложения в русском языке классифицируются по составу, по интонации и по цели высказывания. По составу предложения делятся на нераспространенные и распространенные. Нераспространенные предложения состоят только из двух членов: подлежащего и сказуемого. Пример нераспространенного предложения: «Птицы прилетели». Распространенные предложения состоят из подлежащего, сказуемого и второстепенных членов предложения. Пример распространенного предложения: «Ранней весной прилетели первые птицы».
По интонации предложения делятся на восклицательные («Пришла весна!») и невосклицательные («Пришла весна.»).
По цели высказывания предложения делятся на повествовательные, вопросительные и побудительные. Повествовательное предложение: «Мы собрали много грибов и ягод». Вопросительное предложение: «Вы собрали много грибов и ягод?». Побудительное предложение: «Собирайте грибы и ягоды!».
Работа 14.2. Проектирование инфологической модели
Цель работы: выработка навыков самостоятельной реализации системного анализа в рамках определенной предметной области, построения инфологической модели.
Задание (уровень 3). Выберите предметную область из предлагаемого ниже списка (он может быть дополнен вами или учителем). Проведите системный анализ выбранной предметной области и постройте инфологическую модель.
1. Больница (стационарное отделение).
2. Больница (поликлиника).
3. Расписание уроков в школе.
4. Библиотека (книги, читатели, библиотекари).
5. Дорожно-транспортные происшествия (участники, машины, обстоятельства ДТП).
6. Футбольный чемпионат (команды, график игр, результаты игр, футболисты).
7. Городская телефонная сеть (АТС, абоненты, оплата, переговоры).
8. Авиарейсы (самолеты, пилоты, рейсы, пассажиры).
Работа 14.2. Проектирование инфологической модели
9. Отдел кадров предприятия (отделы, сотрудники, должности, зарплата ...).
10. Предприятие торговли (отделы, товары, продавцы,
Темы для рефератов по разделу «Системология»
1. Различные подходы к определению системы в науке.
2. Системный подход и системный анализ.
3. Проблема систематизации в естественных науках.
4. Проблема систематизации в гуманитарных науках.
5. Классификация компьютерных информационных систем.
Раздел 15 Базы данных
Работа 15.1. Знакомство с СУБД
Цель работы: освоение простейших приемов работы с готовой базой данных в среде СУБД MS Access: открытие базы данных, просмотр структуры БД в режиме «Конструктор», просмотр содержимого БД в режимах «Таблица» и «Форма», добавление записей через форму, быстрая сортировка таблицы, использование фильтра.
Примечание. Для выполнения этой работы предварительно должна быть подготовлена однотабличная база данных « Видеотека », структура и содержание которой описаны в Приложении к данной работе, а также создана форма к этой БД. В дальнейшем таблицу, в которой хранятся сведения о видеодисках, и соответствующую форму мы будем называть «Видеодиски».
Справочная информация. Любые действия, выполняемые с базой данных, производятся на ЭВМ с помощью специальных программ — систем управления базами данных (СУБД). Существуют СУБД, ориентированные на программистов и на конечного пользователя. СУБД, ориентированные на программистов, фактически представляют собой системы программирования со своим специализированным языком, в среде которых программисты создают программы обработки баз данных. Далее с этими программами работают конечные пользователи. Примеры СУБД такого типа: FoxPro, Paradox и др.
СУБД Microsoft Access (MS Access) относится к системам, ориентированным на конечного пользователя. Она позволяет пользователю, не прибегая к программированию, легко выполнять основные действия с базой данных — создавать, редактировать и манипулировать данными. MS Access работает в операционной среде Windows и может использоваться как на автономном ПК, так и в локальной компьютерной сети. С помощью Access создаются и эксплуатируются персональные базы данных, а также корпоративные БД с относительно небольшим объемом данных. Однако для создания крупных промышленных информационных систем MS Access непригодна.
Работа 15.1. Знакомство с СУБД
Среда Access (рис. 15.1) имеет интерфейс, характерный для Windows-приложений, и включает в себя следующие составляющие:
• титульную строку с кнопками управления окном;
• главное меню;
• панель инструментов;
• рабочее поле;
• строку состояния.
На рабочем поле демонстрируется окно документа, соответствующее выбранному режиму работы с БД. На рис. 15.1 показано окно, соответствующее режиму работы с таблицей БД. (Как и для любого приложения, в Access существует иерархия режимов, о которой будет сказано далее.)
И Microsoft Access
О С
Ввелите вопрос
Рис. 15.1. Среда MS Access с окном базы данных на рабочем поле
Данные, с которыми работает СУБД, также могут быть выстроены в иерархическую последовательность. На верхнем уровне этой иерархии находятся основные объекты MS Access: таблицы, запросы, формы, отчеты, макросы и модули.
Таблица — основной тип объекта БД. Все остальные разновидности объектов являются производными от таблиц. Элементы данных, составляющих таблицу, — это записи и поля. Свойства элементов таблицы определяются типами, форматами полей и некоторыми другими параметрами.
10
Раздел 15. Базы данных
Форма — вспомогательный объект, без которого, в принципе, можно обойтись. Формы создаются для повышения удобства пользователя при просмотре, вводе и редактировании данных в таблице.
Запрос — результат обраш;ения пользователя к СУБД для поиска данных, добавления, удаления и обновления записей. Результат поиска (выборки) данных представляется в табличном виде. Термином «запрос» также называют сами команды обрапце-ния к СУБД.
Отчет — документ, сформированный на основании информации, содержащейся в таблицах и запросах, и предназначенный для вывода на печать.
Макросы и модули — объекты повышенной сложности, которые позволяют автоматизировать отдельные операции при работе с БД и при начальном знакомстве с MS Access могут не использоваться.
Еще одним, особым, видом данных является схема — описание структуры связей в многотабличной базе данных.
Режимы работы СУБД Access многообразны. Так же как и для других приложений Windows, иерархия режимов здесь реализована через главное меню. В этом приложении предусмотрены режимы общего характера: работа с файлами (меню Файл), работа с буфером обмена (меню Правка), режим настройки среды (меню Вид), справочный режим (меню Справка). Но основным является режим работы с базой данных. Он устанавливается после выбора в меню команды Файл, Создать базу данных или команды Файл, Открыть базу данных. Поскольку база данных всегда хранится в файле, в первом случае система потребует задать имя и место хранения файла, а во втором — указать существующий файл с базой данных.
После раскрытия на экране окна базы данных (рис. 15.1) становятся доступны режимы работы с основными объектами Access: таблицами, запросами, формами и отчетами, которые инициируются открытием соответствующих закладок в окне. В калсдом из этих режимов предоставляются три командные кнопки: Открыть, Конструктор и Создать. Если соответствующий объект еще не создан, то доступна только кнопка Создать. Если в окне выделен какой-либо из существующих объектов, то доступны будут также кнопки Открыть и Конструктор: первая из этих двух кнопок позволяет просмотреть объект, а вторая — просмотреть или изменить структуру объекта.
Управление СУБД MS Access осуществляется через главное меню, при помощи кнопок на панели инструментов или в окнах.
Работа 15.1. Знакомство с СУБД
11
а также через контекстное меню (раскрываемое правой кнопкой мыши). Набор доступных команд, как правило, носит контекстный характер, т. е. зависит от текуш;его режима работы.
Задание 1 (уровень 1).
1. Запустите на исполнение MS Access.
2. Откройте базу данных «Видеотека» (файл, в котором хранится БД, будет указан учителем).
3. Установите режим работы с таблицей (вкладка Таблицы). Откройте таблицу «Кассеты» (кнопка Открыть). Изучите содержимое таблицы.
4. Закройте таблицу. Перейдите в режим работы с конструктором таблицы (кнопка Конструктор).
5. Последовательно перемещ;аясь от поля к полю, ознакомьтесь со свойствами полей — их типами, форматами и описаниями.
6. Закройте «Конструктор».
Задание 2 (уровень 1).
1. Перейдите в режим работы с формами (закладка Формы).
2. Откройте форму «Кассеты» (рис. 15.2).
3. При помощи формы просмотрите последовательность записей. Перейдите на первую запись; на последнюю запись; на запись с указанным номером.
4. Добавьте в конец таблицы еще одну запись о новой кассете: 21, «Сибирский цирюльник», Россия, 180, мелодрама, 25.12.99, выдана
5. Закройте форму.
Рис. 15.2. Форма «Кассеты»
12
Раздел 15. Базы данных
Задание 3 (уровень 1). Выполните сортировку записей в полной таблице.
1. Отсортируйте таблицу в алфавитном порядке названий фильмов (ключ сортировки — поле «Фильм»). Для этого:
• выделите столбец «Фильм» (щелкнув мышью на его заголовке);
fjH на панели ин-
• используя контекстное меню или кнопку струментов, выполните сортировку таблицы.
2. Отсортируйте таблицу по двум ключам: «Страна» и «Время» в порядке убывания. Для этого:
• выделите два столбца: «Страна» и «Время» (щелкните мышью на их заголовках, удерживая нажатой клавишу Shift);
Я
■А*
на панели ин-
• используя контекстное меню или кнопку струментов, выполните сортировку таблицы.
Обратите внимание: после сортировки записи с одинаковым значением поля «Страна» располагаются по убыванию значений в поле «Время». В данном случае поле «Страна» является первичным, а поле «Время» — вторичным ключом сортировки.
Задание 4 (уровень 1). Выполните отбор записей из таблицы с помощью фильтра.
1. Откройте таблицу «Кассеты».
2. С помощью фильтра выберите все кассеты, выданные клиентам. Для этого:
• выберите в меню команду Записи, Фильтр, Изменить
фильтр или нажмите кнопку
в появившемся шаблоне в поле «Выдана» щелчком мыши пометьте флажок (поставьте галочку);
выберите в меню команду Фильтр, Применить фильтр или
нажмите кнопку
3. Аналогичным способом выберите все не выданные кассеты.
4. Выберите все фильмы, созданные в США.
Приложение. База данных «Видеотека»
Структура таблицы
Имя поля Тип Размер Описание
Номер Целый Номер видеокассеты
Фильм Текстовый 40 Название фильма
Страна Текстовый 15 Страна, где был снят фильм
Время Время Продолжительность фильма в минутах
Жанр Текстовый 15 Жанр фильма
Дата Дата Дата приобретения кассеты
Выдана Логический Да, если кассета выдана; нет, если кассета не выдана
со
»
X
о
S
о
ьЗ
а
о
о
О
«<
И
to
Таблица базы данных
^.;^Страна_^ .г г Вь^на!
1 Пятый элемент США 125 фантастика 14.11.97 Да
2 Титаник США 185 мелодрама 17.03.98 Нет
3 Кавказская пленница Россия 100 комедия 24.05.96 Да
4 Драйв США 115 боевик 22.03.97 Нет
5 По прозвищу Зверь... Россия 85 боевик 03.03.97 Да
6 Профессионал Франция 125 боевик 09.09.96 Нет
7 Игрушка Франция 85 комедия 25.12.96 Нет
8 Танцор диско Индия 130 мелодрама 12.05.95 Да
9 Патруль времени США 102 фантастика 30.04.97 Нет
10 Только сильнейшие США 96 боевик 15.05.97 Нет
11 Ромео и Джульетта США 126 мелодрама 20.06.98 Да
12 Зита и Гита Индия 185 мелодрама 11.01.96 Нет
13 На Дерибасовской хорошая погода... Россия 95 комедия 26.06.97 Нет
14 Джуниор США 90 комедия 16.07.97 Да
15 Парк Юрского периода США 120 фантастика 29.10.96 Нет
16 Крепкий орешек США 120 боевик 31.01.97 Нет
17 Затерянный мир США 110 фантастика 04.04.98 Да
18 Американский бой Россия 110 боевик 15.03.97 Нет
19 Невезучие Франция 90 комедия 13.02.98 Нет
20 Танго и Кэш США 98 боевик 28.08.96 Да
к
ы
m
и
СГ)
»
ы
Е
о>
ts
ta
Е
X
Работа 15.2. Создание базы данных «Классный журнал»
15
Работа 15.2. Создание базы данных «Классный журнал»
Цель работы: освоение приемов работы с СУБД в процессе создания спроектированной базы данных.
Задание (уровень 1). Действуя по приведенной ниже инструкции, создайте базу данных «Классный журнал».
1. Откройте файл для новой базы данных:
• выберите в меню команду Файл, Создать БД, Новая БД;
• в файловом окне укажите путь и имя файла: «Классный журнал». На экране откроется окно (рис. 15.3).
Рис. 15.3. Окно управления базами данных
2. Создайте таблицу «Ученики»:
• в режиме Таблицы выберите команду Создание таблицы в режиме конструктора (см. рис. 15.3);
• в открывшемся окне Конструктора таблиц для всех полей таблицы «Ученики» укажите имена, типы и форматы полей:
Имя поля Тип поля Длина (Формат)
НОМЕР УЧ числовой целый
ФАМИЛИЯ текстовый 30
ИМЯ текстовый 15
ПОЛ текстовый 1
АДРЕС текстовый 40
ТЕЛЕФОН текстовый 15
16
Раздел 15. Базы данных
3. Назначьте главный ключ таблицы:
• выделите строку с именем поля «НОМЕР_УЧ»;
• выберите в меню команду Правка, Ключевое поле или нажмите на панели инструментов кнопку с иконкой «ключа» (рис. 15.4).
D AMcrosoft Access - [УЧЕНИКИ : таблица]
• яМ Екиака @ид Вставка Сдяис Окно Справка
НОМЕР_УЧ
ФАМИ1М
пол
AflPec
ТЕЛЕФОН
Числовой
Тасстовьм
iTcwtoo Текстовый Тактршй Те^ов^ Свойства поля
Общие
Повстановка
Размер поля Формат поля Мааса ввода Подпись
Значение по умолчанию Условие на значение Сообщение об ошибке Обязательное поле Пустые строю4 кНдеко^хжаяюе поле Сжатие Юникод Режим 1МЕ
Режим предложений 1МЕ СМарт-теги
30
Нет
йа_
Нет
Нет контроля
Нет
Канструктор. Ебв
1Ь
Рис. 15.4. Выбор главного ключа таблицы
4. Окно Конструктора таблиц с созданной таблицей показано на рис. 15.4. Сохраните таблицу под именем «Ученики».
5. Аналогичным способом создайте таблицу, назначьте для нее главный ключ и сохраните таблицу под именем «Предметы»:
Имя поля Тип поля Длина (Формат)
НАЗВ ПРЕДМЕТА текстовый 30
УЧИТЕЛЬ текстовый 40
Работа 15.2. Создание базы данных «Классный журнал»
17
6. Создайте таблицу, назначьте для нее составной главный ключ и сохраните таблицу под именем «Оценки»:
Имя поля Тип поля Длина (Формат)
НОМЕР УЧ числовой целый
НАЗВ ПРЕДМЕТА текстовый 30
ЛАТА дата
ОЦЕНКА числовой целый
При назначении составного ключа одновременно выделите поля «НОМЕР_УЧ», «НАЗВ ПРЕДМЕТА» и «ДАТА» (с помощью мыши, удерживая нажатой клавишу Shift), а затем выберите в меню команду Правка, Ключевое поле.
7. Свяжите таблицы «Ученики» и «Оценки». Для этого:
• выберите в меню команду Сервис, Схема данных. Откроется окно Добавление таблицы;
• выделите название таблицы «Ученики» и выберите в меню команду Добавить;
• выделите название таблицы «Оценки» и выберите в меню команду Добавить;
• выберите в меню команду Закрыть;
• в результате в окне Схема данных появятся образы двух таблиц. С помощью мыши перетащите ключевое поле «НОМЕР_УЧ» из образа таблицы «Ученики» на одноименное поле в образ таблицы «Оценки»;
• откроется окно Изменение связей (рис. 15.5). Поочередно пометьте флажки; Обеспечение целостности данных, каскадное обновление связанных полей и каскадное удаление связанных записей. Тип отношения «один-ко-многим» будет выбран автоматически.
Изменение связей
Таблииа/загрос:
Св5оатая таблииэ/загфос
ученики ^ОЦЖКИ ■Ж
hOMB> УЧ ЖНОМВ» УЧ ш
ш
щ
0Обеотечение иелостности данных '"' "
Q каскадное обновление связанных полей 4
0 каскадное удаление связа»«ых записей . . j
Тип отношения; (ШИН-КО-МНСХИИ
ОК
Отмена
Объединение...
Новое..
Рис. 15.5. Окно настройки связи между таблицами
18
Раздел 15. Базы данных
8. Аналогичным способом свяжите таблицы «Предметы» и «Оценки».
9. Выберите в меню команду Создать. В окне Схема данных созданная схема будет иметь вид, показанный на рис. 15.6.
В
Схема данных
юв»_уч
ДАТА
ОЦВКА
М
Рис. 15.6. Созданная схема базы данных
10. Введите данные в таблицу «Ученики»:
• в режиме Таблицы выделите название таблицы «Ученики»;
• нажмите кнопку Открыть. На экране появится бланк таблицы, содержапдий заголовки полей и пустую строку;
• введите данные по образцу рис. 15.7.
в УЧЕНИКИ : таблица
1 НОМЕР. УЧ| ФАМИЛИЯ 1 ИМЯ 1 ПОЛ 1 АДРЕС 1 ТЕЛЕФОН
♦ 1‘Антонов м Садовая 5. кв.56 1233-12-11
+ 2 Веткина |Ж Островского 3, кв .41 '214-33^
+ . 3JBhtxhh _Ив^ _ |М 1' Садовая 3. кв. 14 1245-23-34
+ 4; Волочкова ; Настасья ж Ладыгина 43. КВ.23 1233-76-88
+ ' 5; Волегов .Юурилл 11И Садовая 3, кв.4 ЙЗ-21-21
+ 6; Г илев ;м ^Лебедем 43. кв.4 1250-30-30
+ 7 Ежом Марина . , Мадкова 76. кв. 81 1214^98-90
+ ' 8- Зимина ^^Елма ж Малком 76, КВ.2 '233-34^5
+ 9; Игошина Наталья _ *- сибирская 8, КВ.65 1212-11-11
■*г 10: Ильиных Михаил 1м Лебедем 14, кв.З 1244-43-50
1Г о’ 1
1 Запись: [Й]Л I 1 ГПГИКм^ из 10
Рис. 15.7. Образец заполнения таблицы «Ученики»
Работа 15.2. Создание базы данных «Классный журнал»
19
11. Аналогичным способом введите данные в таблицу «Предметы» по образцу рис. 15.8.
Рис. 15.8, Образец заполнения таблицы «Предметы»
12. Введите данные в таблицу «Оценки» по образцу рис. 15.9.
■ .
р^ОЦЕНКИ f таблица □iriilxj
Ж»(ЕР_УЧ НАЗВ_ПРЕДМЕТА ДАТА ОЦЕНКА Ш\
Алгебра 04.09.2009; 4 - iraff ’
1 Информатика 17.03.^' 5 ж;
1 Ист(фйя 04.09.2009
1 Ист(^)ия 2109S2009 _ ...
2,Алге^ 23Г09.2009У
— 2l Инф^шатика ^История ' I 11.09Jg009~ 07.‘09.2009- 5
_ 2i^ История 15.09.2009[ 5il!
2 История 30.09.2009 5 J;
3j Алгебра 11.09.2009' 5
' 3 Алгебра i I 23.09.2009 ' 4
3' Информатика 1 'l4S69l^i 4
3 История _ 1 ' 21.09.2009! 5
4; Алгебра | ! 23 09.2009^ 5
4 Информатюсв i 17.09.2009;^ 5
4 Исто(М1я Г 15-09.2009^ ' 5
Si: 5 Алгебра 15.09.2009 2
5 Алгебра 2309.2009 4
5 Информатика 10.092009^ 3
5 История 30.09.2009 4'Ш
1 Запись; LUJUJI 21 . из 21
Рис. 15.9. Образец заполнения таблицы « Оценки»
20
Раздел 15. Базы данных
13. Создайте форму для просмотра и редактирования данных в таблице «Ученики»:
• перейдите на вкладку Формы и нажмите кнопку Создать;
• выберите способ создания формы — Мастер форм;
• выберите таблицу «Ученики»;
• переместите все поля таблицы из окна Доступные поля в окно Выбранные поля и нажмите кнопку Далее;
• пометьте радиокнопку В один столбец и нажмите кнопку Далее;
• выберите стиль формы Стандартный и нажмите кнопку Далее;
• задайте имя формы (оставьте предложенное по умолчанию имя «Ученики»);
• пометьте радиокнопку Открытие формы для просмотра и ввода данных и нажмите кнопку Готово.
Примерный вид полученной в результате формы показан на рис. 15.10.
т УЧЕНИКИ
Н0МЕР_УЧ ФАМИЛИЯ ИМЯ ПОЛ АДРЕС ТЕЛЕФОН
Озлись: ГЙ1 i Г
ГАнгонов
Кирилл
Садовая 5, кв. 56
233-12-11
1 EES « 10
Рис. 15.10. Примерный вид созданной формы
14. Сохраните базу данных на диске при помощи команды меню Файл, Сохранить.
Работа 15.3. Реализация запросов с помощью Конструктора
Цель работы: освоение приемов реализации запросов на выборку с помощью Конструктора запросов.
Справочная информация. Конструктор запросов — это удобное средство формирования запросов в СУБД MS Access, которое можно рассматривать как пользовательскую оболочку к языку за-
Работа 15.3. Реализация запросов с помощью Конструктора
21
просов SQL. Для формирования запросов в Конструкторе используется табличная форма.
Окно Конструктора запросов показано на рис. 15.11.
I? Список учеников 1 : ::апрос на выборку
т
itii
ФАМИЛИЯ
ИМЯ
ПОЛ
тт
т
: ■■ ■
Попе: НОМЕР_УЧ ФАМиМЯ имя в
(Фм табпш: УЧНФКИ У^B«KИ у^емки
Сорпуявса: по возрастанию
Вывод наэ)фт: 0 т 0
Уоюоие отборэ: ■
или:
Й1Ш1 т -
Рис. 15.11. Конструктор запросов СУБД MS Access.
Запрос на получение списка учащихся
Поле схемы запроса — верхняя часть окна Конструктора запросов, где расположены схемы таблиц, данные из которых используются в запросе.
Бланк запроса — таблица в нижней части окна Конструктора. Столбцы относятся к полям, участвующим в формировании запроса. В первой строке бланка запроса указываются имена всех этих полей. Вторая строка содержит имена таблиц, из которых извлекается то или иное поле. Третья строка — признак сортировки (используется только для ключей сортировки). Флажки в четвертой строке указывают, нужно ли выводить то или иное поле на экран при выполнении запроса. В последующих строках таблицы формируется условие отбора.
Задание 1 (уровень 1). Получите список учеников класса, содержащий номер в журнале, фамилию и имя каждого ученика.
Соответствующая команда выборки на учебном языке запросов:
.выбрать УЧЕНИКИ.НОМЕР_УЧ, УЧЕНИКИ.ФАМИЛИЯ, УЧЕНИКИ.
ИМЯ сортировать УЧЕНИКИ.НОМЕР_УЧ по возрастанию
1. Перейдите к работе с Конструктором запросов:
• выберите в списке объектов Запросы;
• выберите режим Создание запроса в режиме конструктора;
Ф нажмите кнопку Создать.
22
Раздел 15. Базы данных
2. Поместите в поле схемы запроса таблицу «Ученики»:
• в окне Добавление таблицы на вкладке Таблицы выберите название таблицы «Ученики»;
• выберите в меню команду Добавить, Закрыть.
3. Заполните бланк запроса по образцу рис. 15.11.
4. Выполните запрос, выбрав в меню команду Запрос, Запуск. На экране появится таблица, показанная на рис. 15.12.
НОМЕР_УЧ ФАМИЛИЯ ИМЯ
► 1 Антонов Кирилл
2 Веткина Ирина
3 Вяткин ^Иван
4 Волочкова Настасья
6 Волегов Кирилл
6 Гилев . Валерий
7 Ежова I Марина
8 Зимина Елена
9 Игошина Наталья
10 Ильиных Михаил
Рис. 15.12. Результат выполнения запроса на получение списка учащихся
4. Сохраните созданный запрос под именем «Список учеников».
Задание 2 (уровень 1). Выведите список всех оценок, полученных Волеговым Кириллом по всем предметам, включая даты получения этих оценок.
Соответствующая команда на учебном языке запросов:
.выбрать ОЦЕНКИ.НАЗВ_ПРЕДМЕТА, ОЦЕНКИ.ДАТА, ОЦЕНКИ. ОЦЕНКА где ОЦЕНКИ.НОМЕР_УЧ=5 сортировать ОЦЕНКИ. НАЗВ_ПРЕДМЕТА ПО возрастанию, ОЦЕНКИ.ДАТА по возрастанию
1. В Конструкторе запросов постройте запрос по образцу рис. 15.13.
2. Выполните созданный запрос (результат показан на рис. 15.14).
3. Сохраните запрос под именем «Оценки Волегова».
Работа 15.3. Реализация запросов с помощью Конструктора
23
Is* Оценки Волегова 2 : запрос на выборку
НО№>_УЧ
tMSJV^qHETA
ДЛТА
ОЦ&КА
НАЭВJPEOfCTA ОАТА ОРКА НОМБ>_УЧ —1
сцщки оццки □ЦНКИ ОЦЕЖИ
ПО Botapacramo ПО возрастанию
[у] 0 ш
... т fll ш
Полк iflw таблицы: ^ Оартцмвка:
Щ’Ж
Вивадютервн: Уишие отбора:
ШШ&Ш
Рис. 15.13. Образец запроса на выборку оценок, полученных конкретным учащимся
ттшш
■ -If Алгебра 16.09.2009 2
щ Алгебра 23.09.2009 4
Информатика 10.09.2009 3
История 30.09.2009 4
Рис. 15.14. Результат выполнения запроса на выборку оценок, полученных конкретным учащимся
Задание 3 (уровень 1). Выведите список оценок, полученных по алгебре всеми учениками класса. Отсортируйте этот список по фамилиям учеников и по датам получения оценок.
Соответствующая команда на учебном языке запросов:
.выбрать УЧЕНИКИ.ФАМИЛИЯ, ОЦЕНКИ.ДАТА, ОЦЕНКИ.
ОЦЕНКА где ОЦЕНКИ.НАЗВ_ПРЕДМЕТА="Алгебра" сортировать УЧЕНИКИ.ФАМИЛИЯ по возрастанию, ОЦЕНКИ. ДАТА по возрастанию
1. В Конструкторе запросов постройте запрос по образцу рис. 15.15.
2. Выполните созданный запрос (результат показан на рис. 15.16).
24
Раздел 15. Базы данных
Оценки по алгебре 3 : запрос на выборку
УЧЕНИКИ
«
нав»_уч оо
HK3B_n>^q№TA
ДДЛА
ОЦВКА
т
ФАМИЛИЯ ДАТА ОЦВ1СА НАЭ8Л>^Д№ТА т
у^енмси ОДВ«И ОМЭКИ аф«4 Ш!
fiD воэрастато повоэрастамо
0 EL 0 п
'Алгебра*
y|jS] i 1 Ш:
Поне: И№1таблм«4: Сарпфоека: Вьеод на экран: Условие отбора: или
Рис. 15.15. Образец запроса на выборку оценок всех учащихся по алгебре с учетом сортировки получаемого списка
ФАМИЛИЯ дата
Антонов 04.09.2009 4
Веткина 23.09.2009 3
Волегов 15.09.2009 2
ВолегоБ 23.09.2009 4
Волочкова 23.09.2009 5
Вяткин 11.09.2009 5
Вяткин 23.09.2009 4
Рис. 15.16. Результат выполнения запроса на выборку оценок всех учащихся по алгебре
3. Сохраните запрос под именем «Оценки по алгебре».
Задание 4 (уровень 1). Выведите список всех двоек, полученных учениками класса, с указанием фамилии ученика, даты получения двойки, предмета и учителя. Отсортируйте этот список по фамилиям учеников.
Соответствующая команда на учебном языке запросов:
.выбрать УЧЕНИКИ.ФАМИЛИЯ, ОЦЕНКИ.ДАТА, ОЦЕНКИ.
НАЗВ_ПРЕДМЕТА, ПРЕДМЕТЫ_УЧИТЕЛЬ где ОЦЕНКИ.0ЦЕНКА=2
сортировать УЧЕНИКИ.ФАМИЛИЯ по возрастанию
Для реализации этого запроса используются все три связанные таблицы.
Работа 15.3. Реализация запросов с помощью Конструктора
25
1. В конструкторе запросов постройте запрос по образцу рис. 15.17.
ё* Двоечники 4 : запрос на выСюрку
.УЧЕНИИ И
* ML'
Юв>_УЧ IM3BJIQ9Cn ДАТ» ОЦВКА ^ но«»_уч 4 ФАМ1ЛИЯ тя пол f§.
Мвтабм»: ytetNi
Пвпе: fiaiw: Сарпфоаиа: ■OAHagiq»; Уаамеопгбарз:
ЕС
ДАТА
ОЦВ<<И
Ж
НАЗВЛ»ВД№ГА
ОЦВ«М
Ж
qg«A
пздсты
0MP4W
Ж
ж
«11
Рис. 15.17. Образец запроса на выборку всех полученных двоек
2. Выполните созданный запрос (результат показан на рис. 15.18).
hf.J .
Веткина I 11.09.2009 Информатика Кирюхин Сергей Ильич
Волегов 15 09.2009 Алгебра Русланова Анна Васильевна
Рис. 15.18. Результат выполнения запроса на выборку всех полученных двоек
3. Сохраните запрос под именем «Двоечники».
Задание 5 (уровень 1). Выведите список всех учеников класса, получивших пятерки по алгебре и по истории, указав фамилию, имя, предмет и дату получения оценки.
Соответствующая команда на учебном языке запросов:
.выбрать УЧЕНИКИ.ФАМИЛИЯ, УЧЕНИКИ.ИМЯ, ОЦЕНКИ.
НАЗВ ПРЕДМЕТА, ОЦЕНКИ.ДАТА где (ОЦЕНКИ.
НАЗВ ПРЕДМЕТА="Алгебра" или ОЦЕНКИ.НАЗВ
ПРЕДМЕТА="История") и ОЦЕНКИ.ОЦЕНКА=5 УЧЕНИКИ.ФАМИЛИЯ по возрастанию
сортрфовать
1. В конструкторе запросов постройте запрос по образцу рис. 15.19.
Обратите внимание на то, как в условии отбора реализуется сложное логическое выражение. Условия отбора, записанные в одной и той же строке таблицы, объединяются операцией «и». Условие во второй строке таблицы объединяется с условием пер-
26
Раздел 15. Базы данных
I? отлично по йлгебре и истории 5 : запрос на выборку
9 ов I
MaDJVQVEn |ФАмтмя 3
ДОГА
04НКА 1пол ^
А.;
ФАМИЛИЯ кМЯ НАЗВЛ>Щ№ТА дата □ПОКА л ш ш
y'tKMKH УЧВМСИ ОЦНЯСИ оив«и оцаки
по дочиста МО
0 _ 0 0 п
ittiai 'Алгебра* Мсгория' S 5 ш
Поле: Имятаб<м«к; Сорщюекв: еьвоаиажран: Условие отборе: иш:
Рис. 15.19. Образец запроса на выборку пятерок по алгебре и по истории
вой строки операцией «или». Такая реализация условия отбора в этом запросе равносильна раскрытию скобок в логическом выражении в команде на учебном языке:
(НАЗВ_ПРЕДМЕТА="Алгебра" или НАЗВ_
ПРЕДМЕТА="История") и ОЦЕНКА = 5
тождественно выражению
НАЗВ_ПРЕДМЕТА="Алгебра" и ОЦЕНКА = 5 или НАЗВ_ ПРЕДМЕТА="История" и ОЦЕНКА = 5
2. Выполните созданный запрос (результат показан на рис. 15.20).
«АМИПИЯ 1ЛМ1. '
Антонов Кирилл История 04.09.2009
:v Веткина Ирина История 30.09.2009
Веткина Ирина История 15.09.2009
Веткина Ирина История 07.09.2009
Волосова Настасья Агеебра 23.09.2009
Волосова Настасья История 15.09.2009
Вяткин Иван История 21.09.2009
Вяткин Ивш Алгебра 11.09.2009
Рис. 15.20. Результат выполнения запроса на выборку пятерок по алгебре и по истории
3. Сохраните запрос под именем «Пятерки по алгебре и истории».
Работа 15.3. Реализация запросов с помощью Конструктора
27
Задание 6 (уровень 1). Вычислите средние оценки для всех учеников по всем предметам. При этом выведите фамилию ученика, название предмета, среднюю оценку и ФИО учителя по данному предмету.
Соответствующая команда на учебном языке запросов:
.выбрать УЧЕНИКИ.ФАМ, ОЦЕНКИ.НАЗВ_ПРЕДМЕТА,
Avg(ОЦЕНКИ.ОЦЕНКА), ПРЕДМЕТЫ.УЧИТЕЛЬ группировать УЧЕНИКИ.ФАМ, ОЦЕНКИ.НАЗВ_ПРЕДМЕТА, ПРЕДМЕТЫ.УЧИТЕЛЬ сортировать УЧЕНИКИ.ФАМ по возрастанию, ОЦЕНКИ. НАЗВ_ПРЕДМЕТА по возрастанию
1. В конструкторе запросов постройте запрос по образцу рис. 15.21.
I? средние оценки 7 : запрос на выборку
• ОО 1 ОН^На;
НАЗВЛ>^9^ЕП 1 оо ioe>jw
tiAJU_| ll/JPCTi
|УЧИТЕЛЬ ДАТА имя
jOLPKA пол Y.'
Поле: Имята6лмв)1: Групповая операиия: Сортировка: Вывод на экран: Условие отбора: или: ФАМИЛИЯ НАЗВ_ПРВДМЕТА ОЦЕНКА УЧИТЕЛЬ
У«МКИ ОЦ&КИ ОЦЕЬКИ ПРЕДМЕТЫ
Грулпировка Грулпфовка Avg rpynrvpaBKa
ПО возрастанмо ПО возрэстан1«о
0 _ 0 0 0
< ■ '
Рис. 15.21. Образец запроса на вычисление средних оценок
Чтобы в конструкторе запросов появилась строка «Групповая операция», нужно в главном меню Access выбрать команду Вид, Групповые операции. При этом во всех полях новой строки бланка запроса по умолчанию будет установлено значение Группировка. Функция вычисления среднего значения (Avg) выбирается из списка, который раскрывается щелчком мыши на кнопке в этой строке в ячейке для поля «ОЦЕНКА».
2. Выполните созданный запрос (результат см. на рис. 15.22).
28
Раздел 15. Базы данных
3. Сохраните запрос под именем «Средние оценки».
ш
тттт енАзв^уедушА
Антоно(^
Антонов
Антонов
[Awe6pa |Информапцса
'История
Веткина
Веткина
Веткина
Волегов
I Алгебра ___
'Информатика I История _
Дмр^дЦЕНКА
Алгебра
4| Русланова Анна Васильевна 5| Кирюхин Сергей Ильич
4j Оняное Юрин Петрович ___
Русланова Анна Васильевна
2i Кирюхин Сергей Ильин ___
5| Оняное Юрий Петрович____
Волегов
Информатика
Волегов 'История
Волочкова |Аге~ебра
3 Русланова Анна Васильевна 3| Кирюхин Сергей Ильич ___
4| Оняное Юрии Петрович
5; Русланова Анна Васильевна
Волочкова
Волосова
Вяткин
Информатжа
История
{Аго'ебра
5; Кирюхин Серг^ Ильич
5| Оняное Юрии Петрович 4,5| Русланова Анна Васильевна
Вяткин
Вятюж
1Информатика I История
4 Кирюхин Сергеи Ильич ^iOH»joeJOgH^lteTgo»iJ
Рис. 15.22. Результат выполнения запроса на вычисление средних оценок
Задание 7 (уровень 1). Получите список учеников, имеющих среднюю оценку по алгебре выше «четверки». При этом выведите фамилию ученика и среднюю оценку по алгебре. Отсортируйте полученный список по фамилиям.
Соответствующая команда на учебном языке запросов:
.выбрать УЧЕНИКИ.ФАМ, ОЦЕНКИ.НАЗВ_ПРЕДМЕТА,
Avg(ОЦЕНКИ.ОЦЕНКА) группировать УЧЕНИКИ.ФАМ,
ОЦЕНКИ.НАЗВ_ПРЕДМЕТА где ОЦЕНКИ.НАЗВ_ПРЕДМЕТА = "Алгебра" и Avg(ОЦЕНКИ.ОЦЕНКА) >4 сортировать УЧЕНИКИ.ФАМ по возрастанию
1. В конструкторе запросов постройте запрос по образцу рис. 15.23.
2. Выполните созданный запрос (результат см. на рис. 15.24).
3. Сохраните запрос под именем «Средние оценки больше 4».
Работа 15.4. Расширение базы данных
29
i? средние оценки больше 4 ; запрюс на выборку
ОЦЕНКИ
Ш|
H0№PJf4
НЮВЛ>ед№П
дата
ОЦ&КА
Поле: Иия Ta6jMj3i:
Групповая операшя: Сортироаса: Вывод на SKpai: Условие отбора: или:
ФАМИЛИЯ НА38_ПРВДМЕТА ОЦ&КА
УЧШИКИ ОЦВНКИ оцшки
Грутировка Групге^ювка Avg
по возрастанию по возрастанию
В И 0
'Алгебра* >4 ;У,
Рис. 15.23. Образец запроса на выборку учащихся, имеющих среднюю оценку по алгебре выше «четверки»
ФАМИЛИЯ" 1 НАЗВ_ПРЕДМЬТА АудОЦЕНКТГ
Волочкова Алгебра 5
► Вяткин Алгебра 4,5
Рис. 15.24. Результат выполнения запроса на выборку учащихся, имеющих среднюю оценку по алгебре выше «четверки»
Работа 15.4. Расширение базы данных
Цель работы; закрепление навыков создания таблиц, освоение приемов реализации запросов на выборку с использованием групповых операций и вычисляемых полей.
Задание 1 (уровень 1). Дополните ранее созданную БД данными с четвертными оценками учеников.
1. Создайте в БД новую таблицу «Итоги» следующей структуры:
Имя поля Тип поля Длина (формат)
НОМЕР УЧ Числовой Целое
НАЗВ ПРЕДМЕТА Текстовый 30
1_ЧЕТВ Числовой Целое
2_ЧЕТВ Числовой Целое
3_ЧЕТВ Числовой Целое
4_ЧЕТВ Числовой Целое
ГОД Числовой Целое
30
Раздел 15. Базы данных
2. Свяжите эту таблицу с таблицами «Ученики» и «Предметы» через их общие поля. В результате должна получиться схема, показанная на рис. 15.25.
<■ а Схема данных
Ик-
Рис. 15.25. Схема БД после добавления таблицы «Итоги»
3. Заполните таблицу «Итоги» данными по образцу рис. 15.26.
ИТОГИ : таблица
Н0МЕР_^УЧ НАЗВ_ПРЕДМ 1_ЧБТВ 2_ЧЕ7В 3_ЧЕТВ Z 4_ЧЕРТВ
1 Алгебра 4 3 4. 4 ;
1 Информатика 4i А 4
{ История I зГ 4^ 4 зД
2 Алгебра Г ■■ 3j 4 3fi
2, Информатика ' iL 3j_ 3|
2 История i 5: 5;
3|^/yire6pa I Ж" А 3^!
3' Информатика 4-1 3! 4L 3
3| История 4‘ 4
4 Алгебра J 5. Д 5
4| Информатика J 5 5! 5
4 История j 5 5 5
5 Алгебра | 5| 4^ 5' 5
5 Информатика I ' ’ ' ■ ■ 1 4 4" 4 4
5 История I 5, 5 5.Щ|
1 Запись: 1 М JM J j 16 ►_ из 16
Рис. 15.26. Образец заполнения таблицы «Итоги*
Работа 15.4. Расширение базы данных
31
Задание 2 (уровень 1). Получите список отличников по отдельным предметам. При этом выведите фамилию, имя ученика и предмет, по которому он имеет все пятерки за четверть.
Соответствующая команда на учебном языке запросов:
.выбрать УЧЕНИКИ.ФАМИЛИЯ, УЧЕНИКИ.ИМЯ, ПРЕДМЕТЫ. НАЗВ_ПРЕДМЕТА где ИТОГИ.1_ЧЕТВ=5 и ИТОГИ.2_ЧЕТВ=5 и ИТОГИ.3_ЧЕТВ=5 и ИТОГИ.4_ЧЕТВ=5 сортировать УЧЕНИКИ.ФАМИЛИЯ по возрастанию
1. В конструкторе запросов постройте запрос по образцу рис. 15.27.
1
HKS
1_чт
2 четв г
HO№>JN
ФАМИЛИЯ
ИМЯ
пол
ж
Поле; Ипя таблиим: Сортировка: Вьтоа на экран: Условие отбора: или:
ФАМИЛИЯ ИМЯ НАЗВ ПРЕДМЕТА 1JCTB 2_ЧЕТВ 3_ЧЕ1В 4_ЧЕТВ
УЧВ*КИ УЧВ*КИ ПРЕДМЕТЫ итоги ИТОГИ ИТОГИ ИТОЖ
пооозрэаанию
и Р1 R □ □ п □
5 5 5 5
Рис. 15.27. Образец запроса на выборку отличников
2. Выполните созданный запрос (результат показан на рис. 15.28).
ФАМИЛИЯ ИМЯ НАЗВ_ГРЕДМЕТА
Волегов Кирилл История
Волочкова Настасья История
Волочкова Настасья Информатика
► Волочкова Настасья Алгебра
Рис. 15.28. Результат выполнения запроса на выборку отличников
Задание 2 (уровень 1). Вычислите суммы оценок по информатике у всех учеников и выведите полученный список по порядку убывания значений этой суммы.
Для выполнения этого задания в запросе в списке выводимых полей можно определить новое поле, для которого задано имя «СУММА» и формула вычисления его значений.
32
Раздел 15. Базы данных
Соответствующая команда на учебном языке запросов;
.выбрать УЧЕНИКИ.ФАМИЛИЯ, СУММА: [ИТОГИ].[1_ЧЕТВ]+ [ИТОГИ].[ 2_ЧЕТВ]+ [ИТОГИ].[3_ЧЕТВ]+ [ИТОГИ].
[4_ЧЕТВ] где ПРЕДМЕТЫ.НАЗВ_ПРЕДМЕТА= "Информатика" сортировать СУММА по убыванию
1. В конструкторе запросов постройте запрос по образцу рис. 15.29.
^ Пояе: Им1та61МЦ]|: Сертнровка: Выо(кАМ>91фт: Уаюоие отбора: ияи: ФАМИ/И) СУ1»*4А; Mronfl.[l_‘Crel-»flm)rMJ.[2_4E144flnorUJ.[3JCI®+lHTOflfl.[4_4En нАзв_ПРЕда*
У'СНИШ ГРЕДМЕШ
ПО убьоамоо
а _ 0 □
- ;| '№|фармт1м
Рис. 15.29. Образец запроса на вычисление суммы оценок по информатике у всех учеников
Обратите внимание на двоеточие после имени вычисляемого поля и квадратные скобки в выражении для вычисления суммы. Имя поля, заключенное в скобки, обозначает значение этого поля.
2. Выполните созданный запрос (результат показан на рис. 15.30).
ФАМИЛИЯ СУММА
Волочкова 20
Антонов 17
Волегов 16
Вяткин 14
Веткина 12
Рис. 15.30. Результат выполнения запроса на вычисление суммы оценок по информатике у всех учеников
Работа 15.5. Самостоятельная разработка базы данных
33
Работа 15.5. Самостоятельная разработка базы данных
Цель работы: получение навыков самостоятельного создания базы данных.
Задание 1 (уровень 2). Даны описания отношений реляционной базы данных для информационной системы в определенной предметной области.
1. Выберите типы для атрибутов.
2. Используя конструктор таблиц, создайте соответствуюгцие таблицы, организуйте связи между ними и постройте схему БД.
3. Создайте формы для просмотра и заполнения таблиц.
4. Заполните таблицы конкретными данными.
5. Используя конструктор запросов, реализуйте указанные запросы к БД.
Вариант 1 (Кухня).
Повар (Номер. ФИО, Место_работы, Разряд).
Продукты (Шифр. Наименование, Цена, Количество).
Блюдо (Шифр, Наименование, Номер_рецепта).
Изготовление (Номер повара. ТТТифр продукта. ТТТифр блюла. Расход_продукта).
«Изготовление» показывает, какой повар какой продукт и в каком количестве использует для изготовления какого блюда.
Реализовать следуюш;ие запросы к БД:
1) вывести наименование самого дорогого блюда;
2) вывести названия блюд, в которых используются все продукты;
3) вывести ФИО всех поваров, которые изготовляют все блюда;
4) вывести наименования продуктов, которые не используются для приготовления указанного блюда;
5) вывести ФИО поваров, которые готовят те же блюда, что и указанный повар;
6) вывести наименования продуктов, которых не хватит для приготовления указанного блюда указанным поваром.
Вариант 2 (Поликлиника).
Врач (Номер. ФИО, Категория, Специализация).
Больной (ТТТифр. ФИО, Дата рождения, Вес, Рост).
Лекарство (ТТТифр. Название, Изготовитель).
Назначение (Номер врача. ТТТифр больного. ТТТифр лекарства. Дозировка).
«Назначение» показывает, какому больному какой врач какое лекарство и в какой дозировке выписал.
Реализовать следующие запросы к БД:
1) вывести ФИО больных, которым разные врачи выписали одно и то же лекарство в разной дозировке;
34
Раздел 15. Базы данных
2) вывести ФИО врачей, которые не выписывали указанное лекарство;
3) вывести названия лекарств, которые были выписаны всем больным;
4) вывести специализации врачей, у которых лечился указанный больной;
5) вывести ФИО самого высокого по росту больного из числа пациентов указанного врача;
6) вывести названия лекарств, которые чаще всего выписывает указанный врач.
Вариант 3 (Библиотека ).
Книга (Номер. Название, Издательство, Год_издания, Количество_страниц).
Автор (Номер. ФИО, Город_проживания).
Полка (Шифр. Название, Место_нахождения).
Расстановка (Номер книги. Номер автора. Шифр полки. Количество).
«Расстановка» показывает, на какой полке какая книга какого автора имеется в каком количестве экземпляров.
Реализовать следующие запросы к БД:
1) вывести ФИО авторов, книги которых стоят на разных полках;
2) вывести названия полок, на которых стоят книги, изданные в указанном году;
3) вывести ФИО автора, книг которого больше всего в библиотеке;
4) вывести название города, в котором живет автор, книга которого имеет больше всего страниц на данной полке;
5) вывести ФИО авторов, книг которых нет на указанной полке;
6) вывести перечень издательств, книги которых есть библиотеке. Вариант 4 (Парикмахерская).
Клиент (Шифр. ФИО, Возраст, Тип волос).
Мастер (Шифр. ФИО, Квалификация).
Прически (Шифр. Название, Цена, Время).
Заказы (ТТТифр клиента. ТТТифр мастера. ТТТифр прически, дата, время).
«Заказы» показывают, какая прическа какому клиенту кем из мастеров была или будет сделана.
Реализовать следующие запросы к БД:
1) вывести список клиентов с указанием суммы заказа для указанного мастера;
2) вывести список квалификаций мастеров для указанного клиента;
3) вывести список названий причесок, выполненных указанным мастером для указанного клиента;
Работа 15.5. Самостоятельная разработка базы данных
35
4) вывести список причесок для указанного типа волос или возраста клиента;
5) вывести ФИО и квалификацию мастера, выполнивп1его общее количество заказов на наибольшую сумму;
6) вывести ФИО мастера, умеющего делать все прически;
7) вывести ФИО клиентов, которые делали прически у всех мастеров;
8) вывести прически, которые не делались указанному клиенту;
9) вывести ФИО мастеров, которые больше всего загружены в указанный день;
10) вывести ФИО и возраст клиента, потратившего наибольшее количество денег.
Вариант 5 (Производство).
Рабочий (Шифр. ФИО, Разряд, Место работы).
Детали (Шифр. Наименование, Цена).
Изделие (Шифр, Наименование, Номер проекта).
Изготовление (ТТТифр рабочего. ТТТифр детали. ТТТифр изделия. Количество деталей).
Реализовать следующие запросы к БД:
1) вывести список рабочих, которые не участвовали в изготовлении указанного изделия;
2) вывести список деталей, которые используются во всех изделиях;
3) вывести список изделий, в которых используются все детали;
4) вывести список рабочих, которые не участвовали в изготовлении указанных изделий;
5) вывести цену указанного изделия;
6) вывести названия изделий, в которых используется указанная деталь;
7) вывести ФИО рабочих, которые собирали указанное изделие;
8) вывести список деталей, используемых для сборки указанного изделия;
9) вывести наименования изделий, собранных указанным рабочим;
10) вывести список деталей, используемых для сборки изделий в указанном месте работы.
Вариант 6 (Станция технического обслуживания автомашин ).
Мастер (Шифр. ФИО, квалификация).
Машины (Шифр. Марка, Цвет, Пробег).
Услуги (ТТТифр. Наименование, Цена, Время выполнения). Заказы (ТТТифр мастера. ТТТифр машины. ТТТифр услуги. Дата).
36
Раздел 15. Базы данных
Реализовать следующие запросы к БД:
1) вывести список услуг, выполненных для указанной машины;
2) вывести список мастеров, которые оказывали все услуги;
3) вывести список машин, которые ремонтировали все мастера;
4) вывести список мастеров, которые не оказывали заданной услуги владельцам машин заданной марки;
5) вывести список мастеров, которые не ремонтировали машин ни одной из заданных марок;
6) вывести сумму, на которую оказал услуги указанный мастер в указанную дату;
7) вывести список услуг, выполненных мастерами указанной квалификации;
8) вывести список услуг, выполненных для машин указанной марки и указанного пробега;
9) вывести марку машины, на ремонт которой было затрачено максимальное время или сумма;
10) вывести список услуг, оказанных в указанную дату.
Вариант 7 (Магазин).
Товары (Шифр, Наименование, Стоимость единицы измерения, Вид единицы измерения).
Отделы (Шифр, Наименование, Этаж).
Продавцы (Шифр. ФИО, Возраст, Пол, Шифр отдела {где работает}).
Продажи (Шифр тоняря. ТПи(Ъп продавца. Количество, Дата). «Продажи» показывают, какой товар в каком количестве, когда и кем из продавцов был продан.
Реализовать следующие запросы к БД:
1) вывести список продавцов, работающих в самом высокорасположенном отделе;
2) вывести этаж, на котором находится отдел с наибольшим количеством сотрудников;
3) вывести дату с наибольшим количеством продаж;
4) вывести список продавцов, которые продают все товары;
5) вывести список отделов, в которых работают продавцы, не продающие товары;
6) вывести список товаров, которые не продаются;
7) вывести список товаров, которые не продаются заданными продавцами;
8) вывести ФИО продавца, продавшего за указанный диапазон времени наибольшее количество товара;
9) вывести информацию об указанном товаре (где, когда, кем и в каком количестве он был продан);
Работа 15.5. Самостоятельная разработка базы данных
37
10) вывести информацию об указанном отделе на указанную дату (список товаров, список работников);
11) вывести информацию о продажах по каждому дню за указанный диапазон времени для магазина в целом.
Вариант 8 (Агентство по обмену жилья).
Квартиры (Шифр, Количество комнат. Площадь, Район, Этаж, Признак спрос/предложение).
Абоненты (Шифр, ФИО, Шифр квартиры).
Агенты (Шифр. ФИО, Номер кабинета).
Обмены (TTTnfhp квартиры 1. ТТТи(Ъп квартиры 2. Шифр агента. Дата обмена. Сумма, уплаченная первой квартирой за вторую (может быть не положительной)).
«Обмен» показывает, когда, кем и какая квартира и на какую сумму была обменена.
Реализовать следующие запросы к БД:
1) вывести список квартир, которые обменивали все агенты;
2) вывести историю обменов указанной квартиры;
3) вывести список агентов, которые не обменивали квартир;
4) вывести список абонентов, у которых площадь и количество комнат превышают указанные величины;
5) вывести список обменов, совершенных указанным агентом;
6) вывести список квартир, удовлетворяющих указанным требованиям;
7) вывести список квартир для указанного района и указанного признака;
8) вывести список агентов, работавших с указанным абонентом.
Задание 2 (уровень 2). Даны сведения по определенной предметной области. Создайте многотабличную базу данных, удовлетворяющую требованиям третьей нормгшьной формы. Заполните таблицы заданной информацией. Реализуйте указанные запросы.
Вариант 1 (Кафедра).
В университете на кафедре высшей математики работают профессор Носова П. А., профессор Югов П. Л., доцент Борисов В. Р. и старший преподаватель Рагозина И. И. На кафедре прикладной математики работают профессор Егоров Т. А., доцент Шилов С. И. и ассистент Козлов В. В.
Рагозина И. И. имеет следующую учебную нагрузку: преподает дисциплину «Высшая алгебра» — читает лекции в группе ММ25 и ведет практику в группах ММ12 и ММ13. Шилов С. И.
38
Раздел 15. Базы данных
преподает дисциплину «Программирование» — лекции в группе ММ12, практика в группе ПМ34. Егоров Т. А. преподает дисциплину «Матмоделирование» — лекции в группах ПМ44 и ПМ45, а также читает лекции по курсу «Программирование» в группе ПМ34. Борисов В.Р. преподает дисциплину «Матанализ» — читает лекции в группе ММ13. Носова П. А. читает лекции по матана-лизу в группе ММ11. Козлов В. В. ведет практику по дисциплине «Численные методы» в группе ПМ31. Югов П. Л. преподает дисциплину «Теория функций» — читает лекции в группе ПМ23. Учебное время распределяется следующим образом:
• лекции по матанализу — 96 часа;
• лекции по программированию — 32 часа;
• практика по программированию — 64 часа;
• лекции по теории функций — 64 часа;
• лекции и практика по высшей алгебре — по 32 часа;
• лекции по матмоделированию — 48 часов;
• практика по численным методам — 64 часа.
Реализовать следующие запросы;
1) получить список всех преподавателей кафедры прикладной математики с указанием должностей; отсортировать список в алфавитном порядке по фамилиям;
2) получить список учебных дисциплин и форм занятий (лекция, практика), которые ведут сотрудники кафедры вышей математики;
3) получить список профессоров, читающих лекции, с указанием названия дисциплины, учебной группы и количества часов; отсортировать список по убыванию количеств часов;
4) получить список практических занятий, которые ведут преподаватели кафедры прикладной математики, с указанием фамилий, должностей, групп, дисциплин и количеств часов; отсортировать список по возрастанию количеств часов.
Вариант 2 (Книжный магазин).
Интернет-магазин www.rimex.ru занимается продажей книг по почте (наложенным платежом или с предоплатой). Постоянные клиенты магазина имеют скидки от 1 до 5%. Клиент может заказать одновременно произвольное количество книг (это будет рассматриваться как один заказ).
В период с января по май 2007 г. клиентами интернет-магазина были сделаны следующие заказы:
s:...:.’ щ|^ТОрОД^< ; . С1сидка^ автор ' : название ^ цена*; f .,25®
12.01.2007 Городи лов О.Г. Пермь ул. Ленина 16-89 0 Гиббинс В. Атлантида 203
12.01.2007 Город илов О.Г. Пермь ул. Ленина 16-89 0 Лукьяненко С. Ночной дозор 215
17.01.2007 Самсонова Е.А. Пермь ул. Свиязева 11-2 2 Гиббинс В. Атлантида 203
15.02.2007 Березкин И.Л. Екатеринбург ул. Советская 23-102 5 Шелдон С. Пески времени 119
15.02.2007 Березкин И.Л. Екатеринбург ул. Советская 23-102 5 Стайн Р. Бумеранг 40
18.02.2007 Ковальчук С.Л. Екатеринбург ул. Нахимова 11-47 2 Стайн Р. Бумеранг 40
20.02.2007 Афанасьева Т.П. Москва ул. Строителей 24-564 0 Стайн Р. Побег 30
15.03.2007 Афанасьева Т.П. Москва ул. Строителей 24-564 0 Хаггард Г. Дочь Монтесумы 94
15.01.2007 Егоров И.И. Москва ул. Тверская 65-102 0 Семенова М. Волкодав. Истовик-камень 379
15.01.2007 Егоров И.И. Москва ул. Тверская 65-102 0 Лукьяненко С. Ночной дозор 215
22.04.2007 Лосева Л.А Москва ул. Пушкина 98-576 3 Шелдон С. Пески времени 119
25.04.2007 Гордеев П.И. Санкт- Петербург Невский проспект 10-18 0 Смит П. История пикировщика 142
19.05.2007 Городилов О.Г. Пермь ул. Ленина 16-89 0 Стайн Р. Бумеранг 40
21.02.2007 Ковальчук С.Л. Екатеринбург ул. Нахимова 11-47 2 Семенова М. Волкодав. Истовик-камень 379
40
Раздел 15. Базы данных
Выполните нормализацию этой таблицы и создайте структуру базы данных, используя конструктор таблиц. Введите данные в таблицы.
Реализуйте следующие запросы к БД:
1) вывести информацию о дате заказа, ФИО и городе клиента, а также ФИО авторов и названия книг для всех заказов, сделанных в январе-феврале 2007 г. клиентами-немосквичами; информацию отсортировать по дате заказа;
2) вывести дату заказа, ФИО клиента, город его проживания, скидку, цену книги, а также информацию о стоимости заказа с учетом скидки (создать вычисляемое поле) для всех клиентов; отсортировать итоговую таблицу по дате;
3) вывести ФИО клиента, дату заказа, автора, название книги, цену и вид оплаты для заказов с предоплатой книг стоимостью от 100 до 300 рублей включительно; данные отсортировать по ФИО клиента;
4) вывести информацию об общей сумме заказов на каждую из приведенных в БД дат (использовать кнопку Групповые операции и групповую операцию sum);
5) вывести общую стоимость всех сделанных заказов для каждого отдельного клиента (использовать кнопку Групповые операции и групповую операцию sum).
Задание 3 (уровень 3). В следующих вариантах заданий описана предметная область, для которой создается информационная система, и основные требования к базе данных. Постройте инфо-логическую модель данных; разработайте схему реляционной базы данных; заполните БД самостоятельно подобранной (придуманной) вами информацией; постройте не менее семи различных запросов к БД, в которых будут использоваться простые и сложные условия выбора и'сортировки, групповые операции, вычисляемые поля.
Вариант! (Пансионат).
Разработайте базу данных для распределения и учета свободных мест в пансионате. Пансионат имеет несколько корпусов, каждый из которых содержит разное количество мест разного типа в различных номерах (одноместных, многоместных, люкс, полу-люкс). Места могут быть свободными, занятыми или закрытыми на ремонт. В путевках, продаваемых в пансионат, указаны такие атрибуты, как корпус, тип места, дата заезда, длительность пребывания. Возможно кратковременное поселение на более дорогое место с соответствующей доплатой. Система должна обеспечить распределение мест в соответствии с проданными путевками, по-
Работа 15,5. Самостоятельная разработка базы данных
41
лучение отчетов по заданным местам и изменению их занятости за месяц до освобождения, а также сообщать информацию в систему продажи путевок.
Вариант 2 (Больница).
Разработайте базу данных для справочно-учетной системы стационара больницы. В стационар поступает больной с некоторым диагнозом (из имеющегося списка) и направляется в палату. В процессе лечения он получает некоторые процедуры и проходит обследования. Соответствующие назначения делает врач. Больной может переводиться из одной палаты в другую в соответствии с его состоянием. База данных должна хранить всю необходимую информацию от поступления больного до его выписки.
Вариант 3 (Экзамены).
Разработайте реляционную базу данных «Расписание экзаменов». В БД должна содержаться информация о сдаче экзаменов группами разных специальностей и курсов, о принимающих экзамены преподавателях и аудиториях. Необходимо решить задачу составления расписания экзаменов для групп по дням, преподавателям и аудиториям. Между экзаменами необходимо выдерживать паузу в определенное количество дней, зависящее от конкретного экзамена. Экзамены не должны проводиться в воскресные и праздничные дни. Не должно быть «конфликта аудиторий» (когда разные группы сдают экзамены в одно и то же время в одной и той же аудитории) и «конфликта преподавателей» (когда один и тот же преподаватель принимает экзамен в одно и то же время у разных групп).
Вариант 4 (Семейный бюджет).
Разработайте реляционную базу данных «Семейный бюджет». В БД должна содержаться информация о расходах семьи на одежду, мебель, еду, развлечения, отдых и т. д. Необходимо вести учет пополнений и трат семейного бюджета, делать прогнозы на ближайшее будущее о пополнениях и необходимых тратах, заказе необходимых продуктов с учетом калорийности и требуемого их разнообразия.
Вариант 5 (Мага,зин игрушек).
Разработайте реляционную базу данных «Игрушки». В БД должны храниться сведения о наличии товара в магазине игрушек, производителях, возрасте детей, для которых предназначены игрушки. Необходимо решать задачи учета продаж, оформления заявок на поставку новых партий игрушек, расширения продаж игрушек, пользующихся спросом, закупки новых перспективных игрушек.
42
Раздел 15. Базы данных
Темы для рефератов по разделу «Информационные системы и базы данных»
1. Информационные справочные системы ] обществе.
2. История развития технологий баз данных.
3. Базы данных в Интернете.
4. Геоинформационные системы.
5. Проектирование и программирование баз данных.
6. СУБД ORACLE.
7. Информационная система «Галактика».
8. Информационная система «Консультант плюс».
9. Информационная система «Гарант плюс».
человеческом
Раздел 16
Программирование. Часть 2
Работа 16.1. Программирование линейных алгоритмов на Паскале
Цель работы: освоение приемов программирования на Паскале линейных алгоритмов.
Задание.
Для каждой вычислительной задачи составить два варианта программы: 1) с вводом исходных данных с клавиатуры и выводом на экран; 2) с вводом исходных данных из текстового файла и выводом результатов в другой текстовый файл.
Для каждой задачи на составление логических выражений составьте программу, выводягцую значение TRUE, если указанное высказывание является истинным, или FALSE — в противном случае (условный оператор использовать нельзя!).
Вычислительные задачи (уровень 1).
1. Вычислите длину окружности и площадь круга одного и того же заданного радиуса R.
2. Вычислите расстояние между двумя точками с заданными координатами на плоскости: и (jCg, 1/2)-
3. Дана длина ребра куба. Найдите площадь грани, площадь полной поверхности и объем этого куба.
4. Три резистора с значениями сопротивлений R1, R2, R3 соединены параллельно. Найдите сопротивление всей цепи.
5. Найдите сумму членов арифметической прогрессии, если известны ее первый член, разность и количество членов прогрессии.
6 Вычислите корни квадратного уравнения ах^ Ьх с = О с заданными коэффициентами Ь и с (предполагается, что а ^0 и дискриминант уравнения неотрицателен).
7. Найдите площадь равнобедренной трапеции с основаниями а и Ь и углом а при большем основании а.
44
Раздел 16. Программирование. Часть 2
Задачи на составление логических выражений (уровень 1).
8. Треугольник со сторонами а, Ъ, с является равносторонним.
9. Целое число N является четным двузначным числом.
10. Треугольник со сторонами а, с является равнобедренным.
11. Среди чисел а, с есть хотя бы одна пара взаимно противоположных чисел.
12. Заданные числа хну являются координатами точки, лежащей в первой координатной четверти.
13. Заданные числа cud являются, соответственно, квадратом и кубом числа а.
14. Заданное натуральное число N является двузначным и кратно К.
Вычислительные задачи (уровень 2).
15. Заданы координаты трех вершин треугольника: (л:^, z/j), (Xg, i/2)> (x^j i/g). Найдите его периметр и площадь.
16. Найдите произведение всех цифр заданного четырехзначного числа.
17. Вычислите площадь и периметр правильного ЛГ-угольника, описанного вокруг окружности радиуса R (N — целого типа, R — вещественного типа).
18. Дано натуральное число Г, которое представляет собой длительность прошедшего времени в секундах. Выведите заданное значение длительности в часах, минутах и секундах в следующей форме: НН ч ММ мин SS с.
19. Дано действительное число R вида nnn.ddd (по три цифровых разряда в дробной и целой частях). Поменяйте местами дробную и целую части числа и выведите полученное новое значение.
20. Составьте программу для перевода радианной меры угла в градусы, минуты и секунды.
21. С начала суток часовая стрелка повернулась на у градусов (0 ^ г/ < 360, у — вещественное число). Определите количество полных часов и полных минут, прошедших с начала суток. Сформулируйте и решите обратную задачу.
Задачи на составление логических выражений (уровень 2).
22. (jCj, у^) и (Х2, У2) — координаты левой верхней и правой нижней вершин прямоугольника. Точка А(х^ у) принадлежит этому прямоугольнику.
Работа 16.1. Программирование линейных алгоритмов на Паскале
45
23. Заданное четырехзначное число читается одинаково слева направо и справа налево.
24. В заданном натуральном трехзначном числе N имеется четная цифра.
25. Сумма каких-либо двух цифр заданного трехзначного натурального числа N равна его третьей цифре.
26. Сумма цифр заданного четырехзначного числа N превосходит произведение цифр этого числа на 1.
27. Сумма двух последних цифр заданного трехзначного числа N меньше заданного числа К у а первая цифра — больше 5.
28. Среди первых трех цифр дробной части заданного вещественного числа имеется нуль.
Вычислительные задачи (уровень 3).
29. Дан произвольный треугольник АВС, для которого определен
следующий набор характерных параметров: Ь, с — стороны
треугольника; а, р, у — углы (в градусах); h — высота, опущенная на сторону с; S — площадь; Р — периметр треугольника. По трем заданным параметрам вычислить все остальные (сочетания параметров определяются вариантами задания). Примечание: входные (исходные) и выходные значения углов должны быть представлены в градусной мере.
Варианты задания:
1) а, Ъ, с; 2) а, Ь, у;
4) h, с, Ь;
7) S, h, а; 10) а, Ь, Р;
13) S, Су а;
5) h. Су а;
8) а, Ь, h;
11) а, hy а;
14) hy а, Р;
3) Су а, р
6) S, h, Ь
9) а, Ь, S
12) а, h, у;
15) hy а, у.
4в
Раздел 16. Программирование. Часть 2
Задачи на составление логических выражений (уровень 3).
30. Целая и дробная части заданного вещественного числа одинаковы.
31. Заданы координаты трех точек плоскости. Эти точки не лежат на одной прямой.
32. Первые две цифры в дробной части заданного вещественного числа совпадают с записью целой части этого числа.
33. Точка с координатами (д:, у) принадлежит части плоскости, лежащей между прямыми у = т и у = п (т < п).
34. Шахматный король за один ход может переместиться с одного заданного поля на другое (где каждое поле задано двумя координатами — целыми числами от 1 до 8).
35. Шахматный ферзь за один ход может переместиться с одного заданного поля на другое (где каждое поле задано двумя координатами — целыми числами от 1 до 8).
Работа 16.2. Программирование алгоритмов с ветвлением
Цель работы: освоение приемов программирования на Паскале алгоритмов с ветвлением.
Вычислительные задачи (уровень 1).
1. Даны два угла треугольника (в градусах). Определите, существует ли такой треугольник, и если да, то является ли он прямоугольным.
2. На плоскости XOY задана своими координатами точка А. Укажите, где она расположена: на какой оси или в каком координатном углу.
3. Грузовик выехал из одного города в другой со скоростью
км/ч. Через ^ ч в этом же направлении выехал легковой автомобиль со скоростью 1>2 км/ч. Составьте программу, определяющую, догонит ли легковой автомобиль грузовик через ч после своего выезда.
4. Напишите программу для вычисления суммы большего и меньшего из трех заданных чисел.
5. Напишите программу, распознающую по заданным длинам сторон треугольника, является ли он прямоугольным. Если не является, то вычислите значение наибольшего угла.
6. Для четырех заданных чисел найдите значение max(min(a, &), min(c, d)).
Работа 16.2. Программирование алгоритмов с ветвлением
47
7. Составьте программу, осуществляющую перевод величин из радианной меры в градусную и наоборот. Программа должна запрашивать, какое действие нужно осуществить.
Вычислительные задачи (уровень 2).
8. Заданы размеры А и В прямоугольного отверстия и размеры JC, у, Z кирпича. Определите, пройдет ли кирпич через отверстие.
9. Два расположенных в первом квадранте координатной плоскости прямоугольника со сторонами, параллельными осям координат, заданы координатами своих левого верхнего и правого нижнего углов. Для первого прямоугольника это точки (jCj, и (jCg, О), для второго — (лгд, z/g), (JC4, О). Составьте программу, определяющую, пересекаются ли данные прямоугольники, и если да, то вычисляющую площадь их общей части.
10. В небоскребе N этажей и всего один подъезд. На каждом этаже по 3 квартиры. Лифт может останавливаться только на нечетных этажах. Человек садится в лифт и набирает номер нужной ему квартиры М. Вычислите, на какой этаж лифт должен доставить пассажира.
11. Напишите программу, которая по заданным трем числам определяет, является ли сумма каких-либо двух из них положительной.
12. Известно, что из четырех чисел Пд, ад и одно отличается от трех других, равных между собой. Запишите порядковый номер этого числа в переменную п.
13. Составьте программу, проверяющую, не приводит ли суммирование двух целых чисел А и JB к переполнению (т. е. к результату, большему, чем 32767). Если возникает переполнение, то надо сообщить об этом, иначе — вывести сумму заданных чисел.
Вычислительные задачи (уровень 3).
14. На плоскости заданы координаты вершин четырехугольника. Определите, является ли он: а) ромбом; б) параллелограммом;
в) прямоугольником; г) квадратом.
15. Для двух треугольных пирамид, заданных длинами ребер, определите, у какой из них площадь полной поверхности больше и на сколько.
16. Дана точка А(х, у). Определите, принадлежит ли она треугольнику с вершинами в точках (jCj, у-^), (лгд, z/g)» (л:д, z/g).
48
Раздел 16. Программирование. Часть 2
17. Напишите программу, определяющую, будут ли прямые А^х + В^у + Cj = О и А2Х + В2У + Cg = О перпендикулярными. Если нет, то найдите угол между ними.
18. Заданы координаты вершин прямоугольника: (^Tj, i/j), (jCg, 1/2)»
(л^з, 1/3), г/4). Определите площадь части прямоугольника,
расположенной в первой координатной четверти.
19. Найдите координаты точек пересечения прямой у = kx + Ь и окружности радиуса R с центром в начале координат. Определите, в каких координатных четвертях находятся эти точки пересечения. Если точек пересечения нет или прямая касается окружности, то выдайте соответствующее сообщение.
20. Дана точка А(х, у). Определите, принадлежит ли она прямоугольнику с вершинами в точках (х^, у^), 1/2)» у^,
г/4).
Задачи на определение принадлежности точки заданной области (уровень 2). Составьте программу, определяющую для точки с заданными координатами (Х,У), принадлежит ли она заштрихованной области. Вид области определяется вариантом задания.
Варианты задания:
1.
2.
3.
Работа 16.2. Программирование алгоритмов с ветвлением
49
5.
6.
I П—
i 1 Г”
i""" i u
.....( . i-1 1 .. t- -i-- . ..J I 1 1 1 ■
1 1
1 0 1 ж
1
П
!
-L_
7.
8.
9.
--hi---! f—' i- J 1 1 1
1 [■ я i i 1 G 1 M 1 '
г M u
1 1 " - — ...... Я ■ - H
i □ m 1 G
i
5! 1 ! _j(
—I—1 —i......! 1 t : } - 1 5 - - -- -
|__j j i i
^4~ 1 " n_ !
hi i ■""" i ! 1 i m - — ! 1 J ! Q±II '“1
10.
i У| , ; I
!'" . Li I !
I •
I I
j T“
1 I
t'
I 0 i •
I - i -- ...... ...... ... H—Г'"" 1 -
I !
—! ^ i
i i. ! ! i
11.
Г i" 1 :niLL y\ 1 ' i
1,j. dzb
1 i
1 -i
1 J.
i 1 ; , i 1
!—!— —^——i i ! i_ 0^ .1
i
1 ‘ !
' 1
12.
50
Раздел 16. Программирование. Часть 2
13.
14.
15.
16.
17.
18.
19.
20. РЛ
Работа 16.2. Программирование алгоритмов с ветвлением
51
21.
Ж
-i—t-
„.1...
[:"1 1 |"П 1 ' I- ...j - ■' r 1 " i
1 i I i i " Г i 1 ! ? i
! I : i ! ! j
1 1 } ;t::i J
22.
23. г
24.
Задачи на использование оператора выбора (уровень 1).
1. Для каждой введенной цифры (от О до 9) выведите соответствующее ей название на английском языке (О — zero, 1 — one, 2 — two и т. д.).
2. Составьте программу, которая по заданному числу (от 1 до 12) выводит название соответствующего месяца на английском языке.
3. Напишите программу, которая по введенному числу — номеру класса (от 1 до 11) выдает соответствующее сообщение: «Привет, /г-классник». Например, если Дг = 1, то должно выдаваться сообщение «Привет, первоклассник», при k = 4 — сообщение «Привет, четвероклассник» и т. д.
4. Составьте программу, позволяющую получить словесное описание школьных оценок (1 — «плохо», 2 — «неудовлетворительно», 3 — «удовлетворительно», 4 — «хорошо», 5 — «отлично»).
5. Напишите программу, которая по введенному номеру единицы измерения (1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр) и длине отрезка L выдает соответствующее значение длины отрезка в метрах.
52
Раздел 16. Прюграммирование. Часть 2
6. Напишите программу, которая по введенному номеру единицы измерения (1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер) и массе М выдает соответствующее значение массы в килограммах.
7. Даны два действительных положительных числа х и у. Арифметические действия над числами пронумерованы: 1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление. Составьте программу, которая по введенному номеру выполняет заданное арифметическое действие над введенными числами.
8. Напишите программу, которая по номеру дня недели (целое число от 1 до 7) выдает расписание уроков в вашем классе в этот день.
Задачи на использование оператора выбора (уровень 2).
9. Составьте программу, которая по заданному году и номеру месяца определяет количество дней в этом месяце.
10. Элементами круга являются радиус (первый элемент), диаметр (второй элемент) и длина окружности (третий элемент). Составьте программу, которая по номеру элемента запрашивает соответствующее числовое значение и вычисляет площадь круга.
11. Элементами прямоугольного равнобедренного треугольника являются: 1) катет а; 2) гипотенуза Ь; 3) высота, опущенная из вершины прямого угла на гипотенузу Л; 4) площадь S. Составьте программу, которая по заданному номеру и числовому значению соответствующего элемента вычисляет значения всех остальных элементов треугольника.
12. В старояпонском календаре был принят 12-летний цикл, годы в пределах которого носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. Напишите программу, которая для введенного номера года печатает его название по старояпонскому календарю. (Для справки: 1996 г. — год крысы — являлся началом очередного цикла.)
13. Для целого числа /г от 1 до 99 напечатайте фразу «Мне k лет», учитывая, что при некоторых значениях k слово «лет» надо заменять на слово «год» или «года». (Например: 11 лет, 22 года, 51 год.)
14. Напишите программу, которая по введенному числу — номеру месяца (от 1 до 12) выдает все приходящиеся на этот месяц праздничные дни. Например, если введено число 1, то это 1 января (Новый год) и 7 января (Рождество).
Работа 16.3. Программирование циклических алгоритмов на Паскале
53
15. Дано натуральное число N. Если оно делится на 4, то выведи-
те на экран запись: N = 4 х k (где k — соответствующее частное); если остаток от деления на 4 равен 1, то выведите запись:
N = 4 X k + 1; если остаток от деления на 4 равен 2, то запись:
N = 4 X k + 2; если остаток от деления на 4 равен 3, то запись:
N = 4 X k + S. Например: 12 = 4 х 3, 22 = 4 х 5 -Ь 2.
16. Элементами равностороннего треугольника являются: 1) сторона а; 2) площадь S; 3) высота h; 4) радиус вписанной окружности г; 5) радиус описанной окружности R. Составьте программу, которая по заданному номеру и значению соответствующего элемента вычисляет значения всех остальных элементов треугольника.
Работа 16.3. Программирование циклических алгоритмов на Паскале
Цель работы: освоение приемов программирования на Паскале циклических алгоритмов.
Суммы и произведения числовых последовательностей
(уровень 2).
1. Дано натуральное число N. Вычислите значение выражения:
^ = l_i + i_i + ... + (_l)'» . J_.
2 4 8 2'^
2. Дано натуральное число N. Вычислите значение выражения:
S =
+
sin 1 sin 1 + sin 2
+ ’•■ +
sin 1 + sin 2 + • • • -I- sin N
3. Дано натуральное число N. Вычислите произведение первых N сомножителей:
„246 2N
3 5 7 2ЛГ + 1*
4. Дано натуральное число п. Вычислите значение выражения:
п + 1
2 3 4
— н--1--1"
12 3
п
5. Вычислите значение выражения:
(1 + sin 0,1)(1 + sin 0,2) X ■ • • X (1 + sin 10).
54
Раздел 16. Программирование. Часть 2
6. Дано натуральное число N. Вычислите значение выражения: cos 1 cos 1 + cos 2 cos 1 + cos 2 + • • • + cos N
X ---------- X ••• X -------------------.
sin 1 sin 1 + sin 2
sin 1 + sin 2 + • • • + sin N
7. Дано действительное число x. Вычислите значение выражения:
^ 3!^5! 7!'^9! 11!^13!
8. Даны натуральное число п и действительное число х. Вычислите значение выражения:
S = sin X + sin sin х + ••■ + sin sin... sin x.
n раз
9. Дано действительное число х. Вычислите значение выражения:
(х - l)(jc - 3)(jc - 7) X • • • X (jc - 63)
(х - 2)(х - 4)(х - 8) X • • X (JC - 64) *
10. Дано натуральное число п. Вычислите значение выражения:
S = 1- 2 + 2- 3- 4н— + п.(л + 1)х--х 2п..
11. Дано натуральное число п. Вычислите значение выражения:
Р =
1-^1-^
п
1---г- , где п>2.
12. Вычислите значение выражения по схеме Горнера:
y = x^^+2x^+Sx^+--- + 10х +11.
13. Числа Фибоначчи (/^) определяются формулами
fo=fi= 1» fn = fn-i + fn-2 при п = 2, 3, ....
Для заданного значения р определите значение f^.
14. Даны натуральные числа п и k. Вычислите значение выражения:
Работа 16.3. Программирование циклических алгоритмов на Паскале
55
Итерационные циклы (уровень 2).
1. Дан числовой ряд и некоторое малое число £ (например, £ = 0,00001). Найдите сумму членов ряда, модуль которых больше или равен заданному значению £. Общий вид формулы для вычисления п-го члена ряда определяется вариантом задания.
Варианты задания:
“л “ .п
л-1
^л -
5.
=
п
2п-1
2"
п\ '
п
^л =----
П
9. а„ =
3^ п1
11. а, =
13. dfi -
{2п)1 ■ п\
(2"^)1 (2/1 + 1)!
2. а„ = —+ —
П 2П дл
4. =
6. а„ =
8- «л =
10. =
(3/1 - 2)(3п +1) п\
(2/1)1 ■
2^ п\
п\
12. =
Зп^
2"
" (^-1)!’
2. Найдите наименьший номер члена последовательности, заданной рекуррентной формулой, для которого выполняется условие: \а^ - < £ (где £ — некоторая малая величина). Выведите
на экран этот номер и все элементы a^, где г = 1, 2, ..., /г.
14. "л = arctg +1> «1 =
15. «л = 2 + — , “l = 2.
®л-1
16. «л 1^ = -^^San-v ai = = 0,5.
17. "л 1 - cosa„_i, «1 = 0,5
56
Раздел 16. Программирование. Часть 2
18. а, = 2.
2а,_1 1
19. a,= Ua.,= 2.
20. = 0.
21- «п =—«1 =
2а:
л-1
Циклы при обработке целых чисел (уровень 2).
1. Натуральные числа а, Ъ, с называются числами Пифагора,
если выполняется условие: + 6^ = с^. Выведите на экран все
числа Пифагора, меньшие заданного числа N.
2. Даны два натуральных числа тип. Определите, есть ли в записи числа т цифры, одинаковые с цифрами в записи числа п.
3. Найдите наибольшую и наименьшую цифры в записи заданного натурального числа.
4. Дано натуральное число N. Найдите и выведите на экран все числа в интервале от 1 до - 1, у которых сумма всех цифр совпадает с суммой цифр заданного числа. Если же таких чисел нет, то выведите слово «нет». Пример: для iV = 44 это числа 17, 26 и 35.
5. Дано натуральное число N. Найдите и выведите на экран все числа в интервале от 1 до iV - 1, у которых произведение всех цифр совпадает с суммой цифр заданного числа. Если же таких чисел нет, то выведите слово «нет». Пример: для ЛГ = 44 это числа 18 и 24.
6. Дано натуральное число N {N > 9). Определите количество нулей, идупдих подряд в младших разрядах данного числа. Пример: для N = 1020000 количество таких нулей равно 4.
7. Дано натуральное число N {N > 9). Определите количество нулей в записи числа, кроме нулей в его младших разрядах. Пример: для N = 10025000 количество таких нулей равно 2.
8. Натуральное число М называется совершенным, если оно равно сумме всех своих делителей, включая 1, но исключая само себя. Выведите на экран все совершенные числа, меньшие заданного числа N.
Работа 16.3. Программирование циклических алгоритмов на Паскале
57
9. Дано целое число п > 2. Выведите на экран все простые числа из диапазона [2, п].
10. Найдите все натуральные числа, не превосходяпдие заданного значения п, которые делятся на каждую из своих цифр.
11. Дано натуральное число N. Определите количество цифр в записи этого числа, которые имеют наименьшее значение. Пример: для N = 4548 количество цифр с наименьшим значением равно двум (две цифры 4).
12. Дано натуральное число N. Определите количество цифр в записи этого числа, которые имеют наибольшее значение. Пример: для N = 1808 количество цифр с наибольшим значением равно двум (две цифры 8).
13. Дано натуральное число N. Получите новое число М, которое образуется из числа N путем замены его последней цифры на значение наименьшей цифры в записи числа N. Пример: для N = 128452 получаем М — 129451.
14. Дано натуральное число N. Получите новое число М, которое образуется из числа N путем замены его последней цифры на значение наибольшей цифры в записи числа N. Пример: для N = 128452 получаем М = 128458.
15. Палиндром — это сочетание символов, которое читается одинаково слева направо и справа налево. Например, числа 4884 и 121 являются палиндромами. Составьте программу, определяющую, является ли заданное натуральное число палиндромом.
Циклы при обработке целых чисел (уровень 3).
16. Дано натуральное число k. Выведите на экран k-ю цифру последовательности 12345678910111213..., в которой записаны подряд натуральные числа.
17. Дано натуральное число k. Выведите на экран k-ю цифру последовательности 149162536..., в которой записаны подряд квадраты натуральных чисел.
18. Составьте программу для перевода заданного натурального числа п в шестнадцатеричную систему счисления.
19. Дано натуральное число п. Переставьте его цифры так, чтобы получить наибольшее по величине число, записанное теми же цифрами.
20. Дано натуральное число п. Переставьте его цифры так, чтобы получить наименьшее по величине число, записанное теми же цифрами.
58
Раздел 16. Программирование. Часть 2
Работа 16.4. Программирование с использованием подпрограмм
Цель работы: освоение программирования на Паскале подпрограмм-функций и подпрограмм-процедур и их использования при решении задач.
Для всех предложенных задач выделить подзадачи, решения которых могут быть реализованы с помощью подпрограмм. Напишите два варианта программы для решения каждой задачи: с использованием подпрограммы-функции и подпрограммы-процедуры.
Задание 1 (уровень 1).
1. Составьте программу для вычисления наибольшего общего делителя и наименьшего общего кратного двух натуральных
/' л тъ \
чисел
НОК(ЛВ) =
А в
НОД(ЛВ)
2. Вычислите площадь правильного шестиугольника со стороной а, используя подпрограмму для вычисления площади треугольника.
3. Составьте программу, проверяющую, являются ли три заданных числа взаимно простыми.
А С
4. Даны две дроби: — и — (где А, Су D — натуральные чис-
В D
ла). Составьте программу для выполнения операции деления дроби на дробь. Ответ должен иметь вид несократимой дроби. А С
5. Даны две дроби: — и — (где А, В, С, D — натуральные чис-
В D
ла). Составьте программу для выполнения операции умножения дроби на дробь. Ответ должен иметь вид несократимой дроби.
А С
6. Даны две дроби: — и — (где А, By Су D — натуральные чис-
В D
ла). Составьте программу для выполнения операции вычитания второй дроби из первой. Ответ должен иметь вид несократимой дроби.
7. Даны числа X, У, Z, Т — длины сторон четырехугольника. Вычислите его площадь, если угол между сторонами с длинами X и У — прямой.
8. Дано простое число. Найдите следующее за ним простое число.
9. Для заданного натурального числа п найдите его наименьший ■ нечетный натуральный делитель k {к Ф 1).
Работа 16.4. Программирование с использованием подпрограмм
59
Задание 2 (уровень 2).
10. Заданное натуральное число замените на число, получаемое из исходного записью его цифр в обратном порядке (например, для числа 156 получим число 651).
11. Напишите программу для вычисления суммы 1 + ^ + ^ + -” + — для заданного числа я. Результат представьте в виде несокра-
р
ТИМОЙ дроби — (где р л q — натуральные числа).
Я
12. Найдите все натуральные числа, не превосходящие заданного значения я, которые делятся на каждую из своих цифр.
13. Имеется лента из автобусных билетов. Номер билета шестизначный, номера билетов идут подряд, увеличиваясь на 1. Составьте программу, определяющую количество счастливых билетов на этой ленте, если наименьший номер билета равен N, а наибольший — М. Билет считается счастливым, если сумма первых трех его цифр равна сумме последних трех цифр.
14. Из заданного числа вычли сумму его цифр. Из результата вновь вычли сумму его цифр и т. д. Определите, через сколько повторов таких действий получится нуль.
15. Два простых числа называются «близнецами», если они отличаются друг от друга на 2 (например, числа 41 и 43). Выведите на экран все пары «близнецов» из отрезка [я, 2я], где я — заданное натуральное число, большее 2.
16. На отрезке [100; N] (где 2^^ < N < 2^^) найдите количество чисел, составленных из цифр а, Ь, с.
17. Найдите все натуральные я-значные числа, цифры в которых образуют строго возрастающую последовательность (например, это числа 1234 и 5789).
Задание 3 (уровень 3).
18. Дано четное число я > 2. Проверьте для него- гипотезу Гольдбаха: каждое четное я может быть представлено в виде суммы двух простых чисел.
19. Составьте программу для разложения заданного натурального числа на простые множители. Например, 200 = 2^x5^.
20. Дано натуральное число я. Найдите все меньшие этого значения я числа Мерсенна. (Простое число называется числом Мерсеннау если оно может быть представлено в виде 2^-1, где р — тоже простое число. Например, 31 = 2^ - 1 — число Мерсенна.)
60
Раздел 16. Программирование. Часть 2
21. Два натуральных числа называются «дружественными»,'если каждое из них равно сумме всех делителей другого числа (кроме него самого). Например, числа 220 и 284 являются «дружественными». Найдите все пары «дружественных» чисел, не превышающих заданное число N.
22. Натуральное число, в записи которого содержится п цифр, называется числом Армстронга, если сумма его цифр, возведенная в степень п, равна самому числу. Найдите все числа Армстронга от 1 до заданного значения k.
23. Найдите все простые натуральные числа, не превосходящие заданного значения п, двоичная запись которых представляет собой палиндром (т. е. читается одинаково слева направо и справа налево).
24. Составьте программу для нахождения чисел из интервала [М; iV], имеющих наибольшее количество делителей.
25. Дано натуральное число п > 1. Определите длину периода десятичной записи дроби 1/тг.
Работа 16.5. Программирование обработки массивов
Цель работы: освоение приемов программирования на Паскале
для обработки одномерных и двумерных массивов.
Одномерные массивы
Задание 1 (уровень 1).
1. Дана последовательность действительных чисел а^, 02, ..., а„. Определите, будет ли она возрастающей.
2. Дан массив из N действительных чисел. Подсчитайте, сколько в нем содержится отрицательных, положительных и нулевых элементов.
3. Даны действительные числа Og, ..., а„. Поменяйте местами первый наибольший элемент с последним наименьшим элементом.
4. В заданном одномерном массиве попарно поменяйте местами элементы, стоящие на четных местах, с соседними элементами, стоящими на нечетных местах.
5. Задана последовательность {XJ из N вещественных чисел. Вычислите элементы последовательности {S^} по формуле:
где М — среднее арифметическое значение последовательности X.
Работа 16.5. Программирование обработки массивов
61
6. Задан массив из N целых чисел. Вычислите сумму его элементов, порядковые номера которых совпадают с значениями самих этих элементов.
7. Определите, сколько процентов от всего количества элементов заданной последовательности целых чисел составляют нечетные элементы.
8. Дан массив Х[Л^] целых чисел. Не используя другие массивы, переставьте его элементы в обратном порядке.
Задание 2 (уровень 2).
9. Задана последовательность из N вещественных чисел. Вычислите сумму чисел, порядковые номера которых являются простыми числами.
10. Последовательность а^, «2» •••» состоит из нулей и единиц. Переместите в начало этой последовательности все нули, а затем — все единицы.
11. Даны действительные числа ag, ...» Найдите значение max(oi +02„,а2 +02л-1» -
12. Дана последовательность действительных чисел aj ^ а2 ^ ... ^ Вставьте в нее заданное действительное число Ь так, чтобы последовательность осталась неубывающей.
13. Дана последовательность целых чисел а^, 02, ..., Найдите в ней такие пары чисел а^, Оу, что + а. — т (где т — заданное целое число).
14. Даны координаты п точек на плоскости: (Х^, Yj), ..., (Х^, У„) {п < 30). Найдите номера двух точек, расстояние между которыми максимально (такая пара точек — единственная).
15. Дан массив, состоящий из п натуральных чисел. Получите из него новый массив, элементами которого являются элементы исходного, оканчивающиеся на заданную цифру k.
16. Дан массив целых чисел. Найдите в этом массиве минимальный элемент т и максимальный элемент М. Выведите на экран по возрастанию все целые числа из интервала (т; М), которые не входят в заданный массив.
17. Даны две последовательности: а^, ag, ..., и bg, ...»
(где т < п). Ъ каждой из них значения элементов различны. Определите, верно ли, что все элементы второй последовательности входят в первую последовательность.
18. Дана последовательность вещественных чисел. Выведите на экран значения и номера элементов: наибольшего, наименьшего и наименее отличающегося от среднего арифметического значения.
62
Раздел 16. Программирование. Часть 2
19. Сформируйте массив простых чисел, не превышающих заданного натурального числа N.
20. Сформируйте массив простых множителей заданного числа. Задание 3 (уровень 3).
21. В одномерном массиве переместите все отрицательные элементы в начало массива, а все остальные — в его конец с сохранением порядка их следования друг за другом. Дополнительный массив не используйте.
22. В одномерном массиве с четным количеством элементов (2N)
содержатся координаты N точек плоскости, которые располагаются в следующем порядке: i/j, Xg, 1/2» ^3» Уз* ^ Д*
Определите:
а) минимальный радиус окружности с центром в начале координат, которая содержит все эти точки;
б) внутренний и внешний радиусы кольца с центром в начале координат, которое содержит все эти точки;
в) номера точек, которые могут являться вершинами квадрата;
г) номера точек, которые могут являться вершинами равнобедренного треугольника;
д) номера наиболее и наименее удаленных друг от друга точек;
е) три точки, являющиеся вершинами треугольника, для которого разность количеств точек вне его и внутри является минимальной.
23. Дана последовательность целых чисел. Найдите количество различных чисел в этой последовательности.
24. На плоскости п точек заданы своими координатами; задана также окружность радиуса R с центром в начале координат. Укажите:
а) множество всех треугольников с вершинами в заданных точках, пересекающихся с окружностью;
б) множество всех треугольников, содержащихся внутри окружности.
25. Разделите заданный массив на две части, поместив в первую часть элементы, большие среднего арифметического их суммы, а во вторую — меньшие (указанные части массива не сортируйте).
26. Даны две последовательности: ... ^ и ^ bg ^ ^ ^т-
Получите из них новую последовательность чисел так, чтобы она тоже была неубывающей. Дополнительный массив не используйте.
Работа 16.5. Программирование обработки массивов
63
27. Сортировка вставками. Дана последовательность чисел
а^у ag, ...» Требуется расположить в ней числа в порядке возрастания. Делается это так. Пусть а^, П2, ..., — уже
упорядоченная часть исходной последовательности, т. е.
^ ag < ... < a^. Берется следующее число а^_^^ и вставляется в эту упорядоченную последовательность так, чтобы новая последовательность также была возрастающей. Этот процесс производится до тех пор, пока все элементы от i -Ь 1 до ц не будут расставлены на нужные места. Примечание. Место размещения очередного элемента в отсортированной части последовательности нужно определять с помощью двоичного поиска (соответствующий алгоритм оформите в виде отдельной функции).
28. Алгоритм сортировки фон Неймана. Отсортируйте массив
Hj, ag, по неубыванию с помощью алгоритма сортировки
слияниями:
1) каждая пара соседних элементов объединяется («сливается») в одну группу из двух элементов (последняя группа может состоять только из одного элемента);
2) каждая пара соседних двухэлементных групп сливается в одну четырехэлементную группу и т. д.
При каждом очередном слиянии новая укрупненная группа упорядочивается.
29. Шейкер-сортировка. Алгоритм «пузырьковой» сортировки легко улучшить, запоминая, производился ли на данном проходе какой-либо обмен элементов. Если нет, то это означает, что сортировка завершена, и работу программы можно закончить. Еще одно улучшение заключается в периодическом изменении направления сортировки, что позволяет бороться с некоторой асимметрией «пузырькового» метода. Напишите программу, реализующую данный улучшенный алгоритм.
Двумерные массивы
Задание 1 (уровень 1).
1. Вычислите сумму и количество положительных элементов матрицы A[iV, iV], находящихся над главной диагональю.
2. Дана целая квадратная матрица тг-го порядка. Определите, является ли она магическим квадратом (т. е. одинаковы ли суммы элементов во всех ее строках и столбцах).
3. Определите, является ли заданная целая квадратная матрица п-то порядка симметричной относительно главной диагонали.
64
Раздел 16. Программирование. Часть 2
4. Дана целочисленная квадратная матрица. Найдите в каждой ее строке наибольший элемент и поменяйте его местами с элементом главной диагонали в этой же строке.
5. Упорядочите по возрастанию элементы каждой строки матрицы размерами п х т.
6. Дана квадратная матрица. Получите из нее транспонированную матрицу (повернутую на 90° относительно главной диагонали).
7. Квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива. Восстановите исходную матрицу и выведите ее на экран по строкам.
8. Дана матрица порядка п и число k. Разделите элементы k-й строки матрицы на диагональный элемент, расположенный в этой строке.
9. Для целочисленной квадратной матрицы найдите количество элементов, кратных заданному значению ky и наибольший из этих элементов.
10. Найдите наибольший и наименьший элементы прямоугольной матрицы и поменяйте их местами.
11. В заданной действительной квадратной матрице порядка п найдите сумму элементов строки, в которой расположен элемент с наименьшим значением (предполагается, что он единственный).
12. Дана действительная матрица размерами п х т. Преобразуйте эту матрицу, поэлементно вычтя ее последнюю строку из всех строк, кроме последней.
13. Определите наименьший элемент каждой четной строки матрицы А[М, АГ].
Задание 2 (уровень 2).
14. Дана квадратная матрица. Переставьте в ней строку с максимальным элементом на главной диагонали со строкой с заданным номером т.
15. Определите номера строк матрицы ЩМ, АГ], в которых хотя бы один элемент равен заданному значению с, и умножьте элементы этих строк на заданное значение d.
16. Дана матрица B[N, М]. Найдите в каждой ее строке максимальный и минимальный элементы и поменяйте их местами с первым и последним элементами этой строки соответственно.
17. Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в сво-
Работа 16.5. Программирование обработки массивов
65
ем столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце. Для заданной целой матрицы размерами п х т выведите на экран индексы всех ее седловых точек.
18. Дана вехцественная матрица размерами п х т. Переставляя ее строки и столбцы, добейтесь, чтобы наибольший элемент (или один из наибольших элементов, если их несколько) оказался в верхнем левом углу.
19. Дана квадратная матрица A[iV, Л^]. Запишите в ней на место отрицательных элементов нули, а на место положительных — единицы. Выведите на печать нижнюю треугольную матрицу в общепринятом виде.
20. Дана действительная матрица размерами п х т, все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением, а затем среди этих чисел выбирается наибольшее. Определите индексы этого элемента.
21. Дана действительная квадратная матрица порядка N {N — нечетное), все элементы которой различны. Найдите наибольший элемент среди стоящих на главной и побочной диагоналях и поменяйте его местами с элементом, стоящим на пересечении этих диагоналей.
22. Для заданной квадратной матрицы сформируйте одномерный массив из ее диагонгшьных элементов. Найдите след матрицы, суммируя элементы полученного одномерного массива. Преобразуйте исходную матрицу по следующему правилу: четные строки разделите на полученное значение, нечетные — оставьте без изменения.
23. Дана прямоугольная матрица. Найдите в ней строку с наибольшей и строку с наименьшей суммой элементов. Выведите на печать найденные строки и суммы их элементов.
24. В заданной действительной квадратной матрице порядка п найдите наибольший по модулю элемент. Получите квадратную матрицу порядка п — \ путем отбрасывания из исходной матрицы строки и столбца, на пересечении которых расположен найденный элемент.
25. Расположите столбцы заданной матрицы D[M, iV] в порядке возрастания элементов k-vi строки (1 ^ ^ ^ М).
Задание 3 (уровень 3).
26. Среди столбцов заданной целочисленной матрицы, содержащих только элементы, по модулю не превышающие 10, найдите столбец с минимальным произведением элементов.
66
Раздел 16. Программирювание. Часть 2
27. Для заданной квадратной матрицы найдите такие значения ft, что ft-я строка матрицы совпадает с ft-м столбцом.
28. Найдите максимальный среди всех элементов таких строк заданной матрицы, которые упорядочены либо по возрастанию, либо по убыванию.
29. Составьте программу, которая заполняет квадратную матрицу порядка п натуральными числами 1, 2, 3, ..., п^, записывая их в нее «по спирали». Например, для п = Ъ получается матрица:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
30. Среди строк целочисленной матрицы, содержащих только нечетные элементы, найдите строку с максимальной суммой модулей элементов.
31. Подсчитайте количество строк заданной целочисленной матрицы N X N у являющихся перестановками чисел 1, 2, ..., iV (т. е. содержащих каждое из чисел 1, 2, ..., N ровно один раз).
Работа 16.6. Программирование обработки строк символов
Цель работы: освоение приемов программирования на Паскале для обработки символьных строк.
Во всех предложенных ниже задачах подразумевается, что слова в тексте (строке) отделяются друг от друга пробелом.
Задание 1 (уровень 1).
1. Дана строка, заканчивающаяся точкой. Подсчитайте количество слов в этой строке.
2. Дана строка, содержащая английский текст. Найдите в ней количество слов, начинающихся с буквы «Ь».
3. В заданной строке замените все двоеточия («:») точкой с запятой («;»). Подсчитайте количество сделанных замен.
4. Дана строка длиной п символов. Преобразуйте ее, заменив звездочками все двоеточия («:»), встречающиеся среди первых п/2 символов О, и заменив точками все восклицательные знаки, встречающиеся среди символов, стоящих после п/2 символов.
Работа 16.6. Программирование обработки строк символов
67
5. В заданной строке удалите символ двоеточия («:») и подсчитайте количество удаленных символов.
6. Дана строка символов, среди которых есть одна открывающаяся и одна закрывающаяся скобки. Выведите на экран все символы, расположенные внутри этих скобок.
7. Дана строка, содержащая некоторый текст. Найдите длины самого короткого и самого длинного слов.
8. Дана строка, содержащая текст, заканчивающийся точкой. Выведите на экран все слова, содержащие три буквы. Если таких слов нет, то выведите сообщение об этом.
9. Дана строка. Преобразуйте ее, удалив каждый символ «*» и повторив дважды подряд каждый другой символ.
10. Дана строка. Подсчитайте количество букв «к» в последнем ее слове.
11. Определите, сколько раз в тексте встречается заданное слово.
Задание 2 (уровень 2).
12. Дана строка-предложение на английском языке. Преобразуйте эту строку так, чтобы каждое слово в ней начиналось с заглавной буквы.
13. Дана строка. Подсчитайте, сколько в ней имеется различных символов. Выведите эти символы на экран.
14. Дана строка. Подсчитайте длину самой длинной последовательности подряд идущих букв «а».
15. Имеется строка, содержащая буквы латинского алфавита и цифры. Выведите на экран длину самой длинной последовательности цифр, идущих подряд.
16. Дана строка. Выведите на экран те ее слова, которые содержат хотя бы одну букву «к».
17. Дана строка. Найдите в ней слова, которые начинаются и оканчиваются одной и той же буквой.
18. Строка содержит одно слово. Проверьте, читается ли оно одинаково справа налево и слева направо (т.е. является ли это слово палиндромом).
19. В текстовом сообщении слова зашифрованы: каждое из них записано наоборот. Расшифруйте заданное сообщение.
20. Статистика, Дан некоторый текст. Напишите программу, определяющую процентное соотношение строчных и прописных букв к общему числу символов в нем.
68
Раздел 16. Программирование. Часть 2
21. Проверьте, одинаково ли количество открывающихся и закрывающихся скобок в заданной строке и правильно ли они расставлены (т. е. имеется ли для каждой открывающей скобки соответствующая закрывающая скобка).
Задание 3 (уровень 3).
22. Составьте программу для преобразования натуральных чисел, записанных в римской системе счисления, в десятичную систему счисления.
23. Из заданной символьной строки выберите символы, которые встречаются в ней только один раз, и выведите их на экран в том порядке, в котором они встречаются в тексте.
24. Расстояние между двумя словами равной длины — это количество знаковых позиций, символами в которых различаются эти слова. В заданном предложении найдите пару слов заданной длины с максимальным расстоянием.
25. Форматирование текста. Дан текст, состоящий из предложений, разделяемых точками. Напишите программу, выполняющую форматирование текста по следующим правилам:
• после каждой точки в конце предложения должен стоять хотя бы один пробел;
• первое слово в предложении должно начинаться с прописной буквы.
Примечание: исходный текст может быть как на русском, так и на английском языке.
26. Лишние пробелы. Дана строка, состоящая из слов, разделенных пробелами. Напишите программу, удаляющую лишние пробелы. Пробел считается лишним, если он:
• стоит в начале строки;
• стоит в конце строки;
• следует за другим пробелом (т. е. несколько пробелов подряд надо заменить одним пробелом).
27. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Выведите на экран строку, содержащую те же самые слова (разделенные одним пробелом), но расположенные в обратном порядке.
28. Дана строка-предложение. Зашифруйте ее, разместив вначале все символы, расположенные на четных местах, а затем в обратном порядке — все символы, расположенные на нечетных местах. Например, строка «Программа» превратится в «ргамамроП»). Запрограммируйте решение обратной задачи (расшифровку строки).
Работа 16.7. Программирование обработки записей
69
Задачи на «длинную арифметику» (уровень 3).
«Длинными числами» называют целые числа, значения которых выходят за допустимый диапазон для величин целых типов (больше значения Maxint). Для их представления используются символьные строки.
29. Составьте программу для сравнения двух «длинных» многозначных чисел на «больше», «меньше», «равно».
30. Составьте программу, суммируюш;ую два натуральных /1-значных числа {п > 20).
31. Составьте программу для вычисления степеней чисел вида а" (а > Maxint, п > 10).
32. Составьте программу для вычисления значения 2®^ - 1. В записи результата нужно сохранить все значапдие цифры.
33. Составьте программу для вычисления значения факториала числа 100 (1001).
Работа 16.7. Программирование обработки записей
Цель работы: освоение приемов программирования на Паскале для обработки величин комбинированного типа — записей.
Исходя из условия задачи, требуется определить структуру комбинированного типа данных и типы полей. Исходные данные нужно разместить в текстовом файле. В программе нельзя использовать массивы записей. Результаты нужно выводить на экран и в текстовый файл.
Задание 1 (уровень 1).
1. Из заданного списка спортсменов получите данные о тех из них, кто занимается плаванием (в том числе возраст и сколько лет они занимаются спортом).
2. Из ассортимента конфет, выпускаемых кондитерской фабрикой, выберите те, стоимость которых составляет от 100 до 200 рублей за 1 кг. Требуется указать срок их годности и номера магазинов, в которых они имеются в продаже.
3. Получите список учеников музыкальной школы, которые учатся играть на скрипке. Требуется указать, сколько лет они занимаются музыкой и принимали ли участие в каких-либо конкурсах.
4. Получите фамилии детей данного детского сада, которые родились в указанном месяце. Требуется указать их возраст и номера групп.
70
Раздел 16. Программирювание. Часть 2
5. Получите список учителей школы, которые преподают математику и информатику. Требуется указать стаж их работы и недельную нагрузку в часах.
6. Получите анкетные данные учеников, участвовавших в олимпиаде по информатике и заработавших не менее 30 баллов.
7. Даны результаты переписи населения. Получите фамилии, имена и подсчитайте обш;ее число жителей, родившихся после 1990 г.
8. В сведениях об экспортируемых товарах указывается наименование товара, страна, импортирующая товар, и объем поставляемой партии в штуках. Получите список стран, в которые экспортируется заданный товар, и определите общий объем его экспорта.
9. Сведения о сотрудниках включают фамилию, имя, отчество, дату рождения, полученное образование, домашний адрес и профессию. 1) Получите ФИО всех сотрудников с высшим образованием. 2) Получите сведения о сотрудниках, имеющих данную профессию и родившихся не раньше указанной даты.
10. При поступлении в университет лица, получившие на первом экзамене оценку «неудовлетворительно», ко второму экзамену не допускаются. Считая фамилии абитуриентов и их оценки после первого экзамена исходными данными, получите список абитуриентов, допущенных ко второму экзамену.
Задание 2 (уровень 2).
11. Имеются сведения о датах рождения сотрудников учреждения. Определите:
а) самого молодого сотрудника;
б) самого старшего сотрудника;
Получите список всех сотрудников, родившихся весной.
12. Вычислите средний балл учеников класса, если известны оценки каждого ученика по математике, русскому языку и физике. Получите список учеников, имеющих средний балл выше среднего в классе.
13. Среди работников данного предприятия найдите тех, чья заработная плата за месяц ниже средней по предприятию. Получите список работников, которые проработали на предприятии более 10 лет, с указанием их фамилии, зарплаты, стажа работы и должности.
14. Получите фамилии учеников класса, которые являются хорошистами и отличниками по итогам года. Определите, насколько их средний балл отличается от среднего балла класса.
Работа 16.7. Программирование обработки записей
71
15. Имеются сведения об учениках класса. Определите средний вес мальчиков и средний рост девочек. Определите, кто из учеников класса самый высокий.
16. Составьте программу для назначения стипендии студентам по результатам сессии, используя следуюш;ие правила:
1) если все оценки — 5, то назначается повышенная стипендия;
2) если студент имеет оценки 4 и 5, то назначается обычная стипендия;
3) если есть хотя бы одна оценка 3, то стипендия не назначается.
В результате работы программы должен формироваться список группы с оценками и средним баллом каждого студента, а также два списка фамилий студентов — с повышенной и обычной стипендией.
17. В таблице хранятся следуюхцие данные об учениках: фамилия, имя, отчество, рост, вес. Вычислите средний рост учеников, а также рост самого высокого и самого низкого учеников. Подсчитайте, сколько учеников могут заниматься в баскетбольной секции, если рост баскетболиста должен быть больше 170 см.
18. В столовой предлагается N комплексных обедов, состояхцих из Q блюд. Известна стоимость и калорийность каждого блюда. Определите, сколько стоит самый дешевый и самый дорогой обед; сколько калорий содержит самое калорийное блюдо.
19. N спортсменов-многоборцев принимают участие в соревнованиях по М видам спорта. По каждому виду спорта спортсмен набирает определенное количество очков. Вычислите, сколько очков в сумме набрал каждый спортсмен после окончания соревнований. Вычислите разницу в очках для спортсменов, занявших первое и последнее места.
20. N учеников проходили тестирование по М темам некоторого предмета. Определите, сколько очков набрал каждый ученик по всем темам. Вычислите средний балл, полученный учениками, и разницу между лучшим результатом и средним баллом.
21. Сведения о результатах сессии содержат следуюхцую информацию: название предмета, номер группы, номер зачетной книжки, фамилию, имя, отчество студента, его оценки по итогам экзаменов. Сформируйте отдельные списки отличников, хорошистов, троечников и двоечников.
72
Раздел 16. Программирование. Часть 2
Задание 3 (уровень 3).
22. На аптечном складе хранятся лекарства. Сведения о лекарствах содержатся в специальной ведомости, включающей: наименование лекарственного препарата, количество, цену, срок хранения (в месяцах). Определите, сколько стоит самый дорогой и самый дешевый препарат; сколько препаратов хранится на складе; какой препарат имеет срок хранения более 3 месяцев; сколько стоят все препараты, хранящиеся на складе.
23. Торговый склад производит уценку хранящейся продукции. Если продукция хранится на складе дольше п месяцев, то она уценивается в 2 раза, а если срок хранения превысил т {т < п) месяцев, но не достиг п, — то в 1,5 раза. Получите ведомость уценки товаров, которая должна содержать следующую информацию; наименование товара, количество товара, цену товара до уценки, срок хранения товара, цену товара после уценки, общую стоимость товаров до уценки, общую стоимость товаров после уценки. Вычислите максимальный и минимальный сроки хранения товаров на складе, максимальную и минимальную цену товаров до уценки и после уценки.
24. Багаж пассажира характеризуется количеством и общим весом вещей. В таблице представлены сведения о багаже нескольких пассажиров, где сведения о багаже каждого пассажира представляют собой запись с тремя полями: фамилия пассажира, количество вещей и вес всего багажа в килограммах. Определите:
а) пассажира, багаж которого имеет средний вес какой-либо одной вещи, отличающийся не более чем на т кг от общего среднего веса этой вещи для всех пассажиров;
б) количество пассажиров, имеющих более двух вещей, и пассажиров, количество вещей у которых превосходит среднее количество вещей на одного пассажира;
в) имеется ли пассажир, багаж которого состоит из одной вещи весом менее т кг (если такой пассажир есть, то нужно вывести его фамилию и вес багажа);
25. Имеются сведения о книгах в библиотеке: фамилия автора, название и год издания. Требуется:
а) получить названия книг данного автора, изданных начиная с 1960 г.;
б) определить, имеется ли в библиотеке хотя бы одна книга, содержащая в своем названии слово «информатика», и если да, то вывести сведения обо всех таких книгах;
в) вывести сведения о книгах, которые имеют несколько изданий (т. е. автор и название одни и те же, а годы издания различны).
Работа 16.7. Программирование обработки записей
73
26. Сведения об игрушках, хранящихся на складе детского магазина, включают название игрушки, ее стоимость в рублях и возрастные границы (например, какая-то игрушка может предназначаться для детей от двух до пяти лет). Требуется:
а) получить названия игрушек, цена которых не превышает 500 руб. и которые подходят детям пяти лет;
б) определить стоимость самого дорогого конструктора;
в) получить список самых дорогих игрушек (цена которых отличается от цены самой дорогой игрушки не более чем на 200 руб.);
г) получить названия игрушек, которые подходят детям как четырех, так и десяти лет;
д) определить, можно ли подобрать любую игрушку, кроме мяча, подходящую ребенку трех лет;
е) получить название самой дешевой игрушки;
ж) получить название самой дорогой игрушки для детей до четырех лет;
з) получить названия игрушек для детей четырех-пяти лет;
и) получить название самой дешевой игрушки, подходящей детям двух-трех лет;
л) определить стоимость самой дорогой куклы;
м) определить стоимость всех кукол для детей шести лет;
н) определить, для детей какого возраста предназначается конструктор;
о) определить, для детей какого возраста предназначены кубики, и указать их среднюю стоимость.
27. Имеются сведения о программах телепередач на неделю, где указаны: день недели, время, канал, вид и название телепередачи. Требуется:
а) получить названия телепередач, которые идут в указанный день в указанный промежуток времени;
б) получить названия телепередач, которые идут в указанный день на указанном канале;
в) получить информацию об указанном фильме; если он отсутствует в телепрограмме, то вывести на экран сообщение: «такой передачи на данной неделе нет»;
г) определить, на каком кангше и в какое время будет транслироваться развлекательная передача «Поле чудес»;
д) выяснить, есть ли передача, транслируемая больше одного раза в одно и то же время, и если есть, то какая;
е) получить названия телепередач, транслируемых в указанное время на разных каналах;
74
Раздел 16. Программирование. Часть 2
ж) получить название самой длительной по времени передачи в понедельник;
з) в каждый день недели определить передачу, которая завершает эфир.
28. Имеются сведения о людях, которые иш;ут работу, при этом
указываются ФИО, специальность, опыт работы, образование,
пол и возраст соискателя. Требуется:
а) подобрать кандидатов на должность врача с опытом работы не менее пяти лет;
б) найти работников с высшим экономическим образованием не старше 35 лет;
в) найти сотрудников, имеющих опыт работы в сфере торговли;
г) вывести полную информацию обо всех женщинах, возраст которых составляет от 20 до 40 лет;
д) определить средний возраст всех мужчин, ищущих работу;
е) выяснить, кого в базе данных больше — женщин или мужчин с высшим образованием;
ж) найти п самых молодых работников.
Работа 16.8. Рекурсивные методы программирования
Цель работы: освоение приемов использования в программах на Паскале рекурсивно определенных функций и процедур.
Задание 1 (уровень 1). Вычислите сумму первых М элементов числовой последовательности, заданной рекуррентной формулой, используя рекурсивно определенную функцию.
1. = arctg +1, а^ = 0.
2. =2 + ^ , а, = 2.
«д-1
3. а„ =-tga^_i, ai = 0,5.
4. = icosa„_i, = 0,5.
5. =
2 +а
л-1
2а,
» 2.
л-1
6. ^1= 1,^2= 2.
Работа 16.8. Рекурсивные методы программирования
75
7. = 0.
8. X “ о 2 ’ Oj = X,
Задание 2 (уровень 2). Дана общая формула элементов числовой последовательности. Вычислите сумму первых М ее элементов. Для этого опишите частично-рекурсивную функцию и используйте рекурсивно определенную подпрограмму.
1* «п =
2. -
3.0^-
4. а„ =
5 . «л =
6. Од =
2"
2»
in-1)1 2п-1 2п
п1
(-If 2^^ п1
п\
(2п)1
Задание 3 (уровень 3). Решите задачи, используя рекурсивную подпрограмму.
1. Даны натуральное число п и вещественное положительное число k. Вычислите значение выражения:
}Jk + y]2k + ••• + yjk(n -1) + .
2. Дано число х и числовой массив {ад, а^, Og» •••» Вычислите по схеме Горнера значение алгебраического многочлена:
у = + ••• + Oia; -н Oq.
3. Опишите функцию С(т, п), где О ^ т ^ п, для вычис-
ления биномиального коэффициента С” по формуле: С® = Сд = 1; = С^1 + C^Zi , О <т<п. Получите значение
<40*
76
Раздел 16. Программирование. Часть 2
4. Найдите сумму цифр заданного натурального числа.
5. Подсчитайте количество цифр в заданном натуральном числе.
6. Опишите рекурсивную функцию Root(a,6,e), которая методом деления отрезка пополам находит с точностью е корень уравнения f(x) = О на отрезке [а, Ь] (считая, что е > О, а < Ь, f(a) X f(b) < О, f(x) непрерывна и монотонна на отрезке [а, Ь]). Используя эту функцию, найдите корень уравнения sin 2х - In X = О на. отрезке [1, 2] с точностью 10“^.
7. Опишите функцию min(X) для определения минимального элемента линейного массива X, введя вспомогательную рекурсивную функцию minl(/z), находящую минимум среди последних элементов массива X начиная с k-го. С помощью этой функции найдите минимальный элемент массива, введенного с клавиатуры.
8. Опишите рекурсивную логическую функцию проверяющую, является ли симметричной часть строки S, начинающаяся с i-ro и заканчивающаяся у-м ее элементом. Протестируйте эту функцию на любом своем примере исходных данных.
9. Составьте программу для нахождения числа, получаемого из заданного натурального числа записью его цифр в обратном порядке. Например, для числа 1234 получается число 4321.
10. Составьте программу для перевода заданного натурального числа в у?-ичную систему счисления (2 ^ р ^ 9).
11. Дана символьная строка, представляющая собой запись натурального числа в р-ичной системе счисления (2 ^ р ^ 9). Составьте программу для перевода этого числа в десятичную систему счисления.
12. Опишите рекурсивную логическую функцию, которая возвращает значение TRUE, если ее аргумент — простое число. Протестируйте эту функцию на любом своем примере исходных данных.
13. Опишите функцию, которая удаляет из строки все лишние пробелы. Пробелы считаются лишними, если их более двух подряд, если они стоят в конце строки после последней точки или если они стоят после открывающегося парного знака препинания. Протестируйте эту функцию на любом своем примере исходных данных.
14. Разработайте функцию для вычисления определителя матрицы порядка п (1 ^ п ^ 20). Протестируйте эту функцию на любом своем примере исходных данных.
Работа 16.9. Объектно-ориентированное программирование
77
15. Дано п различных натуральных чисел. Выведите на экран все перестановки этих чисел.
Работа 16.9. Объектно-ориентированное программирование
Цель работы: освоение приемов описания классов при объектно-ориентированном программировании на Паскале.
Задание 1 (уровень 1).
1. Постройте систему классов для описания плоских геометрических фигур — круга, квадрата и прямоугольника. Предусмотрите методы для создания таких объектов, учета их перемещения на плоскости, изменения размеров и вращения на заданный угол. Реализуйте программу для тестирования этой системы классов.
2 Постройте описание класса, содержащего информацию о почтовом адресе некоторой организации. Предусмотрите возможности раздельного изменения составных частей адреса, создания и уничтожения объектов этого класса. Реализуйте программу для тестирования этого класса.
Задание 2 (уровень 2). Составьте описание класса для объектов-векторов, задаваемых координатами их концов в трехмерном пространстве. Обеспечьте возможности выполнения операций сложения и вычитания векторов с получением нового вектора (суммы или разности), вычисления скалярного произведения двух векторов, длины вектора, косинуса угла между векторами. Реализуйте программу для тестирования этого класса.
Задание 3 (уровень 3).
1. Составьте описание класса для определения одномерных массивов целых чисел (векторов). Предусмотрите возможности обращения к отдельному элементу массива с контролем выхода за пределы индексов, задания произвольных границ индексов при создании объекта и выполнения операций поэлементного сложения и вычитания массивов с одинаковыми границами индексов, умножения и деления всех элементов массива на скаляр, печати (вывода на экран) элементов массива по индексам и всего массива. Реализуйте программу для тестирования этого класса.
2. Составьте описание класса для определения одномерных массивов символьных строк фиксированной длины. Предусмотрите возможности обращения к отдельным строкам массива по их
78
Раздел 16. Программирование. Часть 2
индексам, контроля выхода за пределы индексов, выполнения операций поэлементного сцепления двух массивов с образованием нового массива, слияния двух массивов с исключением повторяющихся элементов, печати (вывода на экран) элементов массива и всего массива. Реализуйте программу для тестирования этого класса.
3. Составьте описание класса алгебраических многочленов от одной переменной, задаваемых степенью многочлена и массивом коэффициентов. Предусмотрите методы для вычисления значения многочлена для заданного аргумента, операции сложения, вычитания и умножения многочленов с получением нового объекта-многочлена, печати (вывода на экран) описания многочлена. Реализуйте программу для тестирования этого класса.
Работа 16.10. Визуальное программирование
Цель работы: освоение приемов составления программ с графическим интерфейсом средствами визуального программирования в системе Delphi.
Задание 1 (уровень 1).
1. Напишите программу, которая пересчитывает скорость ветра из метров в секунду в километры в час. Рекомендуемый вид формы приведен на рис. 16.1. Программа должна быть спроектирована так, чтобы пользователь мог ввести в поле Скорость только целое положительное число.*
Поле ВВОД1 (Edit)
Поле ввода (Label)
Инструкция
пользователя
Кнопка, при нажатии на которую производится перерасчет
Рис. 16.1
* Некоторые из приведенных здесь задач заимствованы из книги: Кулътин, Н. Б. Delphi в задачах и примерах. СПб.: БХВ-Петербург, 2005. — 288 с., ил.
Работа 16 Л 0. Визуальное программирование
79
2. Напишите программу, вычисляющую сопротивление электрической цепи, состоящей из двух резисторов, которые могут быть соединены последовательно или параллельно. Рекомендуемый вид формы приведен на рис. 16.2. Если величина сопротивления превышает 1 000 Ом, то результат должен быть выведен в килоомах.
Инструкция для пользователя (Label 1)
Название поля (Label 2)
Название второго^ поля(Label 3)
Зависимые переключатели (Radio Button 1 и Radio Button 2)
Поле ввода компонент (Edit 1)
Второе поле 'ввода компонент (Edit 2)
Кнопка для подсчета сопротивления (Button 1)
Поле вывода (Label 4)
Рис. 16.2
3. Напишите программу, вычисляющую стоимость поездки на автомобиле (например, на дачу). Рекомендуемый вид формы приведен на рис. 16.3.
Editi
CheckBox1
Label 4
lutton 1
Рис. 16.3
80
Раздел 16. Программирование. Часть 2
4. Спроектируйте интерфейс и напишите программу, вычисляющую скорость (в км/ч), с которой бегун пробегает дистанцию, по заданным значениям времени и длины дистанции. Количество минут задается целым числом, количество секунд — дробным.
5. Спроектируйте интерфейс и напишите программу, вычисляющую площадь треугольника по длине его сторон. При этом необходимо учесть случаи, когда треугольник прямоугольный, равнобедренный, равносторонний или произвольный.
6. Спроектируйте интерфейс и напишите программу, вычисляющую путь, пройденный свободно падающим телом за t секунд. Программу составьте так, чтобы можно было вычислять пройденный путь не с начала падения тела.
7. Спроектируйте интерфейс и напишите программу, вычисляющую объем правильных пространственных фигур (тетраэдра, куба, четырехугольной пирамиды) по их линейным размерам.
8. Спроектируйте интерфейс и составьте программу, проверяющую, сколько раз заданный символ встречается в заданном тексте.
9. Спроектируйте интерфейс и напишите программу, преобразующую введенный текст путем замены всех строчных букв на прописные.
Задание 2 (уровень 2).
1. Напишите программу, формирующую список городов, введенных пользователем в одной строке. Примерный вид формы показан на рис. 16.4
Инструкция поль»зователя Label 1
Поле ввода Editi
Название списка Labels
Список (ListBox 1
Button 1
Button 2
Button 3
Счетчик
введенных городов (Label 5)
Рис. 16.4
Работа 16.10. Визуальное программирование
81
2. Составьте анкету для студентов со следующими вопросами:
1) сколько вам лет; 2) на каком факультете вы учитесь; 3) в какой группе вы учитесь; 4) нравится ли вам учиться. Результат анкетирования должен быть представлен тут же и содержать итоговую информацию по результатам анкетирования всех студентов, заполнивших анкету на данный момент.
3. Спроектируйте интерфейс и напишите программу, вычисляющую время, за которое лодка проплывает заданное расстояние. Программа должна быть сконструирована так, чтобы имелась возможность вычисления времени полного пути туда и обратно.
4. Спроектируйте интерфейс и напишите программу, вычисляющую силу тока в электрической цепи, которая состоит из N параллельно соединенных проводников одинакового сопротивления. Программа должна быть спроектирована так, чтобы кнопка «вычислить» была доступна только после ввода пользователем величины сопротивления.
5. Разработайте программу для перевода чисел из одной меры весов в другую. Рекомендуемый вид формы представлен на рис. 16.5.
Это будет
•fF
' ' -X"
г!: : ч::: Г:
Сброс I ';
Из:
:С’У.
. L L I . . J 1 . 1 Д i . . . .
Введите число ^ -ал- ; 1: г ::: Г к
единицу измерения
Ш .............
^Выберете единицу измерения
Выход
.V. .. . i
Рис. 16.5
6. Спроектируйте интерфейс и напишите программу, вычисляющую стоимость покупки. Пользователь вводит код товара и количество единиц товара. Программа должна формировать список купленных товаров.
7. Напишите программу, формирующую туристический маршрут, который состоит из 5 пунктов. Названия пунктов и стоимость экскурсий в каждом пункте выбираются из выпадающего списка. Полный путь маршрута и суммарная стоимость экскурсий должны выводиться в поле Memo.
82
Раздел 16. Программирование. Часть 2
Задание 3 (уровень 3).
1. Напишите программу, вычисляющую доход по вкладу. Программа должна обеспечивать расчет как простых, так и сложных процентов, при этом простые проценты начисляются в конце срока вклада, а сложные начисляются ежемесячно и прибавляются к первоначальной сумме вклада, так что в следующем месяце проценты начисляются уже на новую сумму.
2. Напишите программу для смешивания цветов в цветовой системе RGB с использованием полос прокрутки. Рекомендуемый вид формы показан на рис. 16.6.
j—1
«в
Рис. 16.6
3. Напишите программу, определяющую скидку на покупку автомобиля по следующим данным: возраст (старше 10 лет) — скидка 10%, аварийная — 30%, таможня (не уплачены таможенные пошлины) — 10%, пробег по РФ — 5%. Наличие ситуации, при которой предоставляется соответствующая скидка, вводится при помощи флажков. Рекомендуемый вид формы показан на рис. 16.7 (левая часть формы).
Работа 16.10. Визуальное программирование
83
9шт
Введите название машины и • отметь ее характерист1«^и | ;
.' > • назважемашины^ • < .i
• цена нового аеггомобиля-
= .Старше 10 лет
-Т>' ^ %
>. г* Аварийная
•:Т^> Таможня*
■у'". -итФ-.
,* j 'Пробег гю РФ^^-
‘■-а
Д1..irimiiiii I ■* " I I ' ' Г'
Подсчитгпъ |С. Добавить I Проверить| Удалить
Str--
Рис. 16.7
4. Усовершенствуйте программу «Стоимость машины»: реализуйте список, в который можно добавить автомобиль (с его характеристиками) или удалить, а также проверить, какая скидка предоставляется на него. Рекомендуемый вид формы представлен на рис. 16.7.
5. Напишите программу, позволяющую для имеющегося текста менять тип, размер, цвет шрифта, а также его расположение на форме (т. е. обеспечивать выравнивание по левому, правому краю или по центру). Длина текста может быть более 256 символов.
6. Напишите программу, вычисляющую стоимость покупки с учетом скидки. Скидка 1% предоставляется, если сумма покупки больше 300 руб.; 2% — если сумма больше 500 руб.; 3% — если сумма больше 1000 руб. Информация о предоставлении скидки (процент и абсолютная величина) должна выводиться в диалоговом окне.
7. Напишите программу, вычисляющую сумму покупки. Пользователь вводит название каждого товара и его цену. Предусматривается также возможность предоставления скидки для сотрудника компании; для постоянного клиента; для покупателя, представившего дисконтную карту. Программа должна формировать список покупаемых товаров.
84
Раздел 16. Программирование. Часть 2
8. Напишите программу, отображающую вводимый текст в окне,
размер которого можно регулировать полосой прокрутки.
Работа 16.11. Проекты по программированию*
Цель работы: создание сложного программного продукта с использованием проектной методики разработки.
Примечание: проекты могут выполняться как индивидуально, так и коллективно.
Проект 1. Волчий остров**.
Волчий остров размером 20 х 20 заселен дикими кроликами, волками и волчицами. Имеется по несколько представителей каждого вида. Кролики довольно глупы: в каждый момент времени они с одинаковой вероятностью 1/9 передвигаются в один из восьми соседних квадратов (за исключением участков, ограниченных береговой линией) или сидят неподвижно. Каждый кролик с вероятностью 0,2 превращается в двух кроликов. Каждая волчица передвигается случайным образом, пока в одном из соседних восьми квадратов не окажется кролик, за которым она охотится. Если волчица и кролик оказываются в одном и том же квадрате, то волчица съедает кролика и получает одно очко. В противном случае она теряет 0,1 очка. Волк ведет себя подобно волчице до тех пор, пока в соседних квадратах не исчезнут все кролики; тогда, если волчица находится в одном из восьми близлежащих квадратов, волк гонится за ней. Если волк и волчица окажутся в одном квадрате и там нет кролика, которого нужно съесть, они производят потомство случайного пола. В начальный момент времени все волки и волчицы имеют 1 очко. Волки и волчицы с нулевым количеством очков умирают.
Запрограммируйте предполагаемую экологическую модель и пронаблюдайте за изменением популяции в течение некоторого периода времени.
Проект 2. Задача об инфекции стригущего лишая*.
Промоделируйте процесс распространения инфекции стригущего лишая по участку кожи размером /г х /г клеток (число п — не-
* Задания подобраны А. П. Шестаковым {Семакин И. Г., Шестаков А. П. Основы алгоритмизации и программирования. М.: Издательский центр «Академия», 2008).
** Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ. М.с Мир, 1981.
Работа 16.11. Прюекты по программированию
85
четное). Предполагается, что исходной зараженной клеткой кожи является центральная. В каждую единицу времени пораженная инфекцией клетка может с вероятностью 0,5 заразить любую из соседних здоровых клеток. По прошествии шести единиц времени зараженная клетка становится невосприимчивой к инфекции, возникший иммунитет действует в течение последую1цих четырех единиц времени, а затем клетка оказывается здоровой.
В ходе моделирования описанного процесса нужно выдавать на экран текуш;ее состояние моделируемого участка кожи в каждом интервале времени, отмечая зараженные, невосприимчивые к инфекции и здоровые клетки.
Проект 3. Построение с помощью циркуля и линейки.
Составьте программу, автоматизирующую процесс построения фигур на плоскости с помощью циркуля и линейки. Программа должна уметь выполнять следующие команды:
• отметить произвольную точку и обозначить ее;
• построить прямую, проходящую через две точки;
• построить произвольную прямую;
• построить окружность данного радиуса с заданным центром;
• построить и обозначить точку пересечения двух линий. Программа должна содержать 10-15 стандартных задач на построение из школьного курса геометрии, предлагать их для решения и контролировать процесс построения и полученное решение.
Проект 4. Морской бой.
Составьте программу, позволяющую играть в морской бой игроку с другим игроком или с компьютером. Программа должна позволять расставлять корабли на поле 10 х 10, контролировать правильность их расстановки, поочередно делать ходы противникам и выдавать соответствующие информационные сообщения. Если в качестве одного из игроков выступает компьютер, то программа должна анализировать предыдущие ходы и следующий ход делать на основе проведенного анализа.
Проект 5. «Математике»* (итальянская игра^
Имеется набор из 52 карточек, на которых записаны числа от 1 до 13, причем карточки с каждым из этих чисел встречаются четырежды. Имеется квадратное поле с 25 клетками. Разработайте программу, позволяющую имитировать игру человека с компьюте-
* Кордемский Б. А. Математическая смекалка. СПб.: Манускрипт, 1994. — 496 с.
86
Раздел 16. Программирование. Часть 2
ром ПО следующим правилам. Программа случайным образом выбирает какую-либо из имеющихся карточек и выдает записанное на ней число. Каждый игрок (человек и компьютер) по очереди заносит это число в одну из клеток квадрата. Так продолжается до тех пор, пока не будут заполнены все клетки квадрата.
1 1 7 1 7
2 10 2 13 2
5 12 13 5 7
3 3 3 11 3
4 12 4 13 12
(80)
(40)
(10)
(160)
(20)
(20) (50) (10)
(10) (10) (160)
Задача игрока — размещать числа в клетках так, чтобы после заполнения квадрата набрать наибольшее количество очков, которые выставляются в соответствии с приведенной ниже таблицей. Запрограммируйте интерфейс для данной игры и разработайте для компьютера как одного из игроков наиболее оптимальную стратегию заполнения квадрата с целью выигрыша.
Комбинации чисел В ряду или столбце По диагонали
За два одинаковых числа 10 очков 20 очков
За две пары одинаковых чисел 20 очков 30 очков
За три одинаковых числа 40 очков 50 очков
За три одинаковых числа и два других одинаковых числа 80 очков 90 очков
За четыре одинаковых числа 160 очков 170 очков
За пять последовательных чисел, не обязательно расположенных по порядку 50 очков 60 очков
За три раза по 1 и два раза по 13 100 очков 110 очков
За числа 1, 13, 12, 11 и 10, не обязательно расположенных по порядку 150 очков 160 очков
За четыре единицы 200 очков 210 очков
Работа 16.11. Проекты по программированию
87
Проект 6. Заполнение готовых форм информацией из базы данных.
Имеется база данных, содержащая сведения о некоторой группе людей (каждая запись содержит до 10 полей). Составьте программу, которая, используя сведения из базы данных, позволяет заполнять некоторые документы (стандартные письма, приглашения, визитки, отчеты и т. д.), вписывая эти сведения в нужные места в указанных документах в соответствующих падежах, лицах, временах и т. д.
Проект 7. Карточные игры.
Составьте программу, которая раздает игральные карты заданному количеству игроков (одним из игроков является человек, за остальных играет компьютер) и моделирует игру «в дурака». Компьютерная программа играет случайным образом, без анализа уже вышедших карт. Количество игроков не превышает шести.
Проект 8. «Крестики-нолики»
Составьте программу, позволяющую играть на бесконечном поле в «крестики-нолики»;
а) игроку с компьютером;
б) двум игрокам.
Если в качестве игрока выступает компьютер, то он всегда делает первый ход, а на очередном своем ходе анализирует ситуацию, рассчитывает возможные действия противника на 1-2 хода вперед и по результатам такого анализа выбирает наиболее оптимальный ход.
Проект 9. «Быки и коровы»
Составьте программу, позволяющую играть в «Быки и коровы»:
а) игроку с компьютером;
б) двум игрокам.
В этой игре ведущий задумывает четырехзначное число, все цифры которого различны (причем первая цифра отличается от нуля). Остальные играющие должны отгадать задуманное число. Выигрывает тот, кто первым отгадает число. Для этого играющие по очереди называют ведущему свои варианты ответа, а ведущий сообщает им о количестве «быков» и «коров» в названном числе («бык» — в записи названного числа есть цифра, которая есть в задуманном числе и стоит в нем в нужной позиции; «корова» — в записи названного числа есть цифра, которая имеется в задуман-
88
Раздел 16. Программирование. Часть 2
НОМ числе, но стоит не в той позиции). Например, если задумано число 3275, а названо число 1234, то в названном числе имеется один «бык» (цифра 2) и одна «корова» (цифра 3). Число является отгаданным, если имеется 4 «быка».
Проект 10. Числовые головоломки
Составьте программу, которая:
1) предлагает игроку числовые головоломки типа «ОДИН + ОДИН = МНОГО» из некоторого набора (до 30 головоломок);
2) позволяет решить головоломку;
3) контролирует правильность решения.
Проект 11. Графики
Составьте программу, которая предлагает пользователю список функций для построения графиков (например: у = ах^ + Ьх + с\ у = asin д: + Ь и т. д. — до 25 вариантов). После выбора функции, задания коэффициентов и отрезка, на котором выполняется построение, программа строит указанный график. После этого значения коэффициентов и положение графика можно менять (например, с помощью клавиш управления курсором), при этом график перестраивается заново и выводится обновленное уравнение соответствующей кривой.
Проект 12. Игра «Две лисы и двадцать кур»
На поле указанной формы находятся две лисы и 20 кур (начальное положение показано на рисунке). Куры могут перемещаться на один шаг вверх, влево или вправо, но не назад и не по диагонали. Лисы также могут перемещаться только на один шаг, но вверх, вниз, влево и вправо. Лиса может съесть курицу (как в игре в шашки): если в горизонтальном или вертикальном направлении за курицей на один шаг имеется свободное поле, то лиса перепрыгивает через курицу и берет ее. Лисы всегда обязаны есть кур и, если у них есть выбор, обязаны осуществлять наиболее длинное их поедание (если два поедания имеют одинаковую длину, то выбирается один из них по желанию лисы).
Составьте программу, которая играет за лис. Игрок перемещает кур. Противники делают ходы по очереди, причем куры начинают игру. Куры выигрывают партию, если девяти из них удается занять девять полей, образующих верхний квадрат игры. Лисы выигрывают, если им удастся съесть 12 кур, так как в этом случае оставшихся кур недостаточно, чтобы занять девять верхних полей.
Работа 16.11. Проекты по программированию
89
л л
К к к к к к к
к к к к к к к
к к к
к к к
Проект 13. Программа «Игры со спичками»
Составьте программу, которая:
1) предлагает игроку головоломки со спичками из некоторого набора (до 30 головоломок);
2) позволяет решить головоломку, передвигая спички;
3) контролирует правильность решения.
Проект 14. Графика в Turbo Pascal
Составьте программу, демонстрирующую все графические возможности Turbo Pascal и обучающую работе с основными графическими процедурами и функциями. Программа должна контролировать усвоение изученного материала (в виде теста или в какой-либо другой форме).
Проект 15. Игра в слова
Составьте программу, позволяющую компьютеру и человеку играть в слова. Предварительно программа выводит на экран правила игры и позволяет вернуться к их просмотру в любой момент времени. Правила игры: называется слово, а другой игрок должен назвать другое слово, начинающееся с буквы, на которую оканчивается ранее названное.
Тематикой игры могут быть (по выбору играющего человека) названия городов, животных, растений и т. д. (не менее 5 вариантов). Для игры компьютер использует собственную базу данных (для каждой тематики свою), хранящуюся в виде текстового файла. Если названное человеком слово отсутствует в базе, то уточняется, правильно ли оно названо, и в случае правильности слово заносится в базу, иначе уточняется.
90
Раздел 16. Программирование. Часть 2
Проект 16. Ребусы
Выбрав какой-либо школьный предмет (информатику, математику и т. д.), подберите ребусы по нему и предложите их пользователю для решения. Программа должна позволять выбрать тот или иной ребус, контролировать его решение и подводить итоги при завершении игры.
Раздел 17
Моделирование
Работа 17.1. Компьютерное моделирование свободного падения
Цель работы: реализация на компьютере математической модели движения тела при свободном падении в плотной среде с использованием электронных таблиц и программирования.
Задание 1 (уровень 1). Используя электронную таблицу, приведенную в учебнике (§ 3.2.3, табл. 3.1), выполните расчеты для парашютиста, прыгающего с неподвижно висящего объекта (воздушного шара или вертолета). Определите по результатам проведенных расчетов зависимость высоты парашютиста и скорости его движения от времени (от начала полета до момента приземления).
При вычислениях используйте следующие значения параметров, определяемых формой и размером тела (см. § 3.2.2): Cj = 30, Ь = 0,4 м, С2= 0,5. Массу тела задайте самостоятельно из диапазона 50-100 кг.
Задание 2 (уровень 1). Выполните задание 1, используя программу на Паскале, приведенную в учебнике (§ 3.2.3, программа Sharik).
Задание 3 (уровень 2). Парашютист прыгает с некоторой высоты и летит, не раскрывая парашюта. На какой минимальной высоте он должен раскрыть парашют, чтобы иметь к моменту приземления безопасную скорость (не более 10 м/с)?
Задание 4 (уровень 2). Парашютист прыгает с некоторой высоты и летит, не раскрывая парашюта. Через какое максимальное время он должен раскрыть парашют, чтобы иметь к моменту приземления безопасную скорость (не более 10 м/с)?
Задание 6 (уровень 3). Исследуйте зависимость наибольшей высоты прыжка от площади поперечного сечения парашюта (входит в которой скорость приземления была бы безопасной
(не более 10 м/с). Значение массы парашютиста выберите самостоятельно. Отобразите полученную зависимость в графической форме.
92
Раздел 17. Моделирование
Задание 7 (уровень 3). Промоделируйте процесс падения тела с заданными характеристиками (масса, форма) в средах различной плотности. Изучите влияние вязкости среды на характер движения. Разработайте программу, которая выводит на экран графики зависимости скорости движения тела и пройденного им пути от времени.
Задание 8 (уровень 3). Глубинная бомба, установленная на взрыв через заданное время, сбрасывается со стоящего неподвижно противолодочного корабля. Исследуйте связь между глубиной, на которой произойдет взрыв, и формой корпуса бомбы (сферический, полусферический, каплевидный и др.).
Задание 9 (уровень 3). Глубинная бомба, установленная на взрыв на заданной глубине, сбрасывается со стоящего неподвижно противолодочного корабля. Исследуйте связь между временем достижения заданной глубины и формой корпуса бомбы (сферический, полусферический, каплевидный и др.).
Работа 17.2. Численный расчет баллистической траектории
Цель работы: реализация на компьютере математической модели задачи баллистики в плотной среде с использованием электронных таблиц и программирования.
Задание 1 (уровень 1). Используя электронную таблицу, приведенную в учебнике для 11 класса (§ 3.2.5, табл. 3.2), постройте траектории и найдите временные зависимости горизонтальной и вертикальной составляющих скорости и перемещения для тела массой 1 кг, брошенного под углом 45° к горизонту с начальной скоростью 10 м/с:
1) в воздухе;
2) в воде.
Сравните результаты с получаемыми без учета сопротивления среды (их можно получить численно из той же модели или аналитически).
Задание 2 (уровень 1). Выполните задание 1, используя программу на Паскале, приведенную в учебнике для 11 класса (§ 3.2.5, программа Pushka).
Задание 3 (уровень 2). Исследуйте зависимость горизонтальной дальности полета тела от одного из коэффициентов сопротивления среды, зафиксировав все остальные параметры. Представьте полученную зависимость в графической форме.
Работа 17.3. Моделирование расчетов стрельбы по цели
93
Задание 3 (уровень 2). Найдите вид зависимости максимальной высоты траектории от одного из коэффициентов сопротивления среды, зафиксировав все остальные параметры. Представьте полученную зависимость в графической форме.
Задание 4 (уровень 3). Разработайте модель подводной охоты. На расстоянии г под углом а подводный охотник видит неподвижную акулу. На сколько метров выше нее надо целиться, чтобы гарпун попал в цель?
Задание 5 (уровень 3). Промоделируйте движение исследовательского зонда, выстреленного под углом к горизонту. В верхней точке траектории над зондом раскрывается тормозной парашют, после чего зонд плавно опускается до земли.
Задание 6 (уровень 3). Глубинная бомба, установленная на взрыв через заданное время, сбрасывается с движуш;егося противолодочного корабля. Исследуйте зависимость глубины, на которой произойдет взрыв, и пройденным расстоянием по горизонтали до взрыва от формы корпуса бомбы (сферический, полусферический, каплевидный и др.).
Задание 7 (уровень 3). Составьте и отладьте программу на Delphi с оконным интерфейсом для расчета траектории полета снаряда с выводом на экран графического изображения траектории (по аналогии с рис. 3.12 в учебнике для 11 класса).
Работа 17,3. Моделирование расчетов стрельбы по цели
Цель работы: реализация на компьютере численных экспериментов по расчетам стрельбы по цели в пустоте и в атмосфере.
Задание 1 (уровень 1). С помопцью электронной таблицы вычислите углы настильной и навесной стрельбы в пустоте для попадания в цель, расположенную на расстоянии 1500 м и на высоте 200 м, при начальной скорости снаряда 300 м/с и радиусе цели 1 м. Проверьте полученные результаты на учебной программе «Полет снаряда, выпущенного из пушки».
Задание 2 (уровень 2). Напишите программу на Паскале, которая будет сообщать, можно ли попасть в цель, находящуюся на заданном ^paccтoянии L от пушки и заданной высоте Н над горизонтом, при заданном угле прицела Hq и скорости вылета снаряда Vq. Рассматривается полет в пустоте.
Задание 3 (уровень 2). Используя программу Strelba (учебник для 11 класса, § 3.2.7), проведите исследование влияния величины шага по времени на точность расчетов полета снаряда в пустоте и в атмосфере.
94
Раздел 17. Моделирование
Задание 4 (уровень 3). Составьте программу, аналогичную программе Strelba (учебник для 11 класса, § 3.2.7), которая будет рассчитывать угол прицела для навесной стрельбы по заданной цели при фиксированной величине начальной скорости снаряда. Протестируйте программу на примере полета снаряда в пустоте для данных расчета из § 3.2.6 учебника для 11 класса (навесной прицел). Для тех же значений {Н = 200 м, L = 700 м, Fq = 125,23 м/с, Д = 10 м, г = 0,08 м) рассчитайте угол прицела для попадания в цель по навесной траектории. Сравните полученные результаты с результатами эксперимента в учебной программе «Полет снаряда, выпущенного из пушки».
Задание 5 (уровень 3). Выполните расчет начальной скорости вылета снаряда из пушки при заданном угле прицела Oq для попадания в цель, удаленную от пушки на расстояние L по горизонтали и расположенную на высоте Н по вертикали. Определите время полета снаряда. Выполните вычисления для полета снаряда как в пустоте, так и в атмосфере. Для тестирования используйте параметры расчетов, приведенные в § 3.2.7.
Пояснение: в отличие от расчетов, выполняемых по программе Strelba (учебник для 11 класса, § 3.2.7), где задается фиксированная величина начальной скорости и подбирается угол прицела, здесь нужно зафиксировать угол прицела и подбирать (методом половинного деления) начальную скорость.
Работа 17.4. Численное моделирование распределения температуры
Цель работы; реализация на компьютере математической модели с использованием электронных таблиц и программирования для расчета распределения температуры в теплопроводной среде, а также распределения электрического поля от точечных зарядов.
Задание 1 (уровень 1). Используя электронную таблицу для моделирования распределения температуры в прямоугольной области с изотермическими границами (учебник для 11 класса, § 3.3.3, рис. 3.25), проведите вычислительный эксперимент при следующих значениях температуры на границах; верхняя граница — 20 °С, нижняя граница — 0 °С, левая и правая границы — 15 °С. По результат£1м расчетов постройте графики распределения температур в двух горизонтальных и двух вертикальных сечениях прямоугольной области.
Задание 2 (уровень 1). Выполните задание 1, используя программу на Паскале, приведенную в учебнике для 11 класса (§ 3.3.4, программа Teplo).
Работа 17.4. Численное моделирование распределения температуры
95
Задание 3 (уровень 1). С помощью программы на Delphi для построения изолиний, приведенной в учебнике для 11 класса (§ 3.3.5), постройте изотермы для прямоугольной области и случая границ с постоянными температурами: одна из длинных границ имеет температуру О °С, другая — температуру 20 °С, короткие границы имеют температуру 10 °С.
Задание 4 (уровень 1). С помощью программы на Delphi для построения изолиний, приведенной в учебнике для 11 класса (§ 3.3.5), воспроизведите вычислительный эксперимент № 2 по расчету поля температур для квадратной области с линейным распределением температур на границе и вычислительный эксперимент № 3 для вытянутой прямоугольной области с линейным распределением температур на границах (оба эксперимента — см. учебник для 11 класса, § 3.3.6).
Задание 5 (уровень 2). Внесите изменения в программу на Паскале для решения задачи теплопроводности (учебник для 11 класса, § 3.3.4, программа Teplo), чтобы обеспечить возможность моделирования распределения температуры в квадратной области для случаев:
а) теплоизолированных боковых границ и изотермических вертикальных границ;
б) теплоизолированных вертикальных границ и изотермических боковых границ;
в) наличия внутреннего источника тепла.
Протестируйте созданные программы.
Задание 6 (уровень 2). Внесите изменения в электронную таблицу для расчета поля температур (учебник для 11 класса, § 3.3.3, рис. 3.25), чтобы реализовать решение одномерной задачи: рассматривается теплопроводный стержень, через боковую поверхность которого не происходит теплоотдача (имеется теплоизоляция). Проведите моделирование распределения температуры вдоль стержня длиной 1 м на сетке в 10 ячеек при постоянной температуре о °С на правом и 20 °С на левом его конце.
Задание 7 (уровень 2). Преобразуйте программу на Паскале для расчета поля температур (учебник для 11 класса, § 3.3.4, программа Teplo), чтобы реализовать решение одномерной задачи: рассматривается теплопроводный стержень, через боковую поверхность которого не происходит теплоотдача (имеется теплоизоляция). Проведите моделирование распределения температуры вдоль стержня длиной 1 м на сетке в 10 ячеек при постоянной температуре о °С на правом и 20 °С на левом его конце.
9в
Раздел 17. Моделирование
Задание 8 (уровень 3). Внесите изменения в электронную таблицу для расчета поля температур (учебник для 11 класса, § 3.3.3, рис. 3.25), чтобы реализовать решение одномерной задачи с внутренним источником тепла: рассматривается теплопроводный стержень, через боковую поверхность которого не происходит теплоотдача (имеется теплоизоляция). Проведите моделирование распределения температуры вдоль стержня при наличии в его средней точке источника тепла с температурой 30 и при постоянной температуре на его концах: 0 °С — на правом и 20 °С — на левом конце.
Задание 9 (уровень 3). Внесите изменения в электронную таблицу для расчета поля температур (учебник для 11 класса, § 3.3.3, рис. 3.25), чтобы реализовать решение одномерной задачи с внутренним источником тепла: рассматривается теплопроводный стержень, через боковую поверхность которого не происходит теплоотдача (имеется теплоизоляция). Проведите моделирование распределения температуры вдоль стержня при наличии в его средней точке источника тепла с температурой 30 °С и при постоянной температуре на его правом конце 0 °С; левый конец стержня теплоизолирован.
Задание 10 (уровень 3). Преобразуйте программу на Паскале для расчета поля температур (учебник для 11 класса, § 3.3.4, программа Teplo), чтобы реализовать решение одномерной задачи с внутренними источниками тепла: рассматривается теплопроводный стержень, через боковую поверхность которого не происходит теплоотдача (имеется теплоизоляция). Проведите моделирование распределения температуры вдоль стержня при наличии в его средней точке источника тепла с температурой 30 °С и при постоянной температуре на его концах: 0 °С — на правом и 20 °С — на левом конце.
Задание 11 (уровень 3). Преобразуйте программу на Паскале для расчета поля температур (учебник для 11 класса, § 3.3.4, программа Teplo), чтобы обеспечить решение одномерной задачи с внутренними источниками тепла: рассматривается теплопроводный стержень, через боковую поверхность которого не происходит теплоотдача (имеется теплоизоляция). Проведите моделирование распределения температуры вдоль стержня при наличии в его средней точке источника тепла с температурой 30 °С и при постоянной температуре на его правом конце, равной 0 °С; левый конец стержня теплоизолирован.
Работа 17.5. Задача об использовании сырья
97
Задание 12 (уровень 3). Электрическое (электростатическое) поле принято изображать графически путем построения линий равного потенциала {изолиний) либо силовых линий (см. учебник физики; в трехмерном случае линии равного потенциала заменяются поверхностями равного потенциала). Потенциал электрического поля, создаваемого одиночным зарядом q, на расстоянии г от
1 Q
—, где Sq = 8,85 • 10“^^ ф/м (так на-
него имеет значение ф
4я8о г
зываемая «электрическая постоянная»). Разработайте программу для построения изолиний электростатического поля, создаваемого одиночным электрическим зарядом, в квадратной области, в центре которой находится этот заряд. Сетка должна содержать нечетное количество линий — так, чтобы заряд находился в центральном узле сетки. Предварительно необходимо, пользуясь приведенной формулой, составить таблицу значений потенциала в каждом узле сетки.
Задание 13 (уровень 3). Разработайте программу для построения изолиний электростатического поля, создаваемого двумя электрическими зарядами в прямоугольной области, в которой эти заряды симметрично расположены в узлах сетки (см. рис. 17.1). Постройте изолинии для случаев = Q2 ^ ~ Q2' (Поскольку
потенциал — скалярная характеристика электрического поля, потенциалы полей от различных зарядов в любой точке пространства арифметически суммируются с учетом знака.)
Работа 17.5. Задача об использовании сырья
Цель работы: ознакомиться с графическим методом и возможностями табличного процессора Excel для решения зЕщач об использовании сырья.
98
Раздел 17. Моделирование
Задание 1 (уровень 1). Найдите максимум функции Z — 4jCj + 3^2 ^ 0) при условиях:
ДС1 - ДС2 ^ - 2,
Sjcj + 3^2 ^15,
Х2 ^ 2,5,
2х^ -Х2^-2,
- 2л:2 ^ 2.
Решите задачу графическим методом и с помощью функции Поиск решения Microsoft Excel.
Задание 2 (уровень 1). По построенной математической модели к задаче № 7 (см. вопросы и задания к § 3.4.1 учебника для 11 класса) получите решение с помощью табличного процессора Excel, используя инструмент Поиск решения.
Задание 3 (уровень 2). Постройте математическую модель и решите графическим методом и с помощью табличного процессора Excel, используя инструмент Поиск решения, следующую задачу. Трикотажная фабрика для производства свитеров и кофточек использует чистую шерсть, эластан и вискозу, запасы которых составляют соответственно 95, 80 и 75 кг. Количество трикотажного сырья (в кг), необходимое для изготовления 10 изделий, а также прибыль, получаемая от их реализации, приведены в таблице. Составьте план производства изделий, обеспечивающий получение максимальной прибыли.
Вид сырья Затраты сырья на 10 изделий
Свитер Кофточка
Шерсть 2 5
Эластан 5 2
Вискоза 5 1
Прибыль 4 5
Задание 4 (уровень 2). Постройте математическую модель и решите графическим методом и с помощью табличного процессора Excel, используя инструмент Поиск решения, следующую задачу. Швейная фабрика для пошива пальто и курток использует драп, подкладочную ткань и отделочную ткань, запасы которых составляют соответственно 98, 62 и 76 м^. Количество ткани (в м^), не-
Работа 17.5. Задача об использовании сырья
99
обходимое для изготовления 10 изделий, а также прибыль, получаемая от их реализации, приведены в таблице. Составьте план производства изделий, обеспечивающий получение максимальной прибыли.
Вид сырья Затраты сырья на 10 изделий
Пальто Куртка
Драп 2 7
Подкладочная ткань 3 2
Отделочная ткань 4 1
Прибыль 2 5
Задание 5 (уровень 2). Постройте математическую модель и решите графическим методом и с помощью табличного процессора Excel, используя инструмент Поиск решения, следующую задачу. Для производства кетчупа и соуса используются томатная паста, крахмал и сухие овощи, запасы которых составляют соответственно 32, 52 и 44 кг. Количество сырья (в кг), необходимое для изготовления 10 кг кетчупа и 10 кг соуса, а также прибыль, получаемая от их реализации, приведены в таблице. Составьте план производства продуктов, обеспечивающий получение максимальной прибыли.
Вид сырья Затраты сырья на 10 кг продукта
Кетчуп Соус
Томатная паста 1 2
Крахмал 4 1
Сухие овощи 3 2
Прибыль 5 6
Задание 6 (уровень 2). Постройте математическую модель и решите графическим методом и с помощью табличного процессора Excel, используя инструмент Поиск решения, следующую задачу. Мебельная фабрика для производства комодов и шкафов использует дерево, пластик и стекло, запасы которых составляют соответственно 41, 77 и 75 м^. Количество сырья, необходимое для изготовления 10 изделий, а также прибыль, получаемая от их реализации, приведены в таблице. Составьте план производства изделий, обеспечивающий получение максимальной прибыли.
100
Раздел 17. Моделирование
Вид сырья Затраты сырья на 10 изделий
Шкаф Комод
Дерево 2 3
Пластик 2 7
Стекло 5 2
Прибыль 7 6
Задание 7 (уровень 2). Постройте математическую модель и решите графическим методом и с помощью табличного процессора Excel, используя инструмент Поиск решения, следующую задачу. При производстве кормов для птиц используются витаминная мука, просо и овес, запасы которых составляют соответственно 32, 29 и 45 кг. Количество сырья, необходимое для изготовления 10 кг кормов, а также прибыль, получаемая от их реализации, приведены в таблице. Составьте план производства кормов, обеспечивающий получение максимальной прибыли.
Вид сырья Затраты сырья на 10 кг кормов
Корм для попугаев Корм для канареек
Витаминная мука 1 4
Просо 2 3
Овес 5 2
Прибыль 8 7
Задание 8 (уровень 2). Постройте математическую модель и рещите графическим методом и с помощью табличного процессора Excel, используя инструмент Поиск решения, следующую задачу. На четырех станках обрабатываются два вида изделий. Каждое изделие проходит обработку на каждом станке. В таблице заданы нормы загрузки оборудования в пересчете на единицу продукции и фонд полезного времени работы станков. Составьте оптимальный план загрузки оборудования, обеспечивающий максимальную прибыль.
Работа 17.5. Задача об использовании сырья
101
Станки Нормы загрузки оборудования Фонд времени по загрузке оборудования
Вид изделия
Вг
Ai 5 5 80
Аг 2 1 18
Аз 0 2 16
А4 1 0 8
Доход от реализации 7 15
Подсказка: в этой задаче ресурсом является время. В качестве ограничений на этот ресурс используется фонд времени по загрузке оборудования.
Задание 9 (уровень 2). Постройте математическую модель и решите графическим методом и с помош;ью табличного процессора Excel, используя инструмент Поиск решения, следующую задачу. Строительная фирма производит и устанавливает «под ключ» дачные домики двух типов (серия А, серия В). Возведение каждого домика требует определенных трудозатрат для производства комплектующих, монтажа домика и внутренней отделки. Производственные мощности фирмы и ее персонал дают возможность выделять ежемесячно 65 человеко-дней на производство комплектующих, 75 человеко-дней на монтаж домиков и 105 человеко-дней на внутреннюю отделку. В таблице заданы трудозатраты и доход, который фирма получает от реализации каждого типа домиков. Сколько домиков каждого типа должна производить фирма, чтобы получить максимальную прибыль?
Вид деятельности Трудозатраты, чел.-дней
Серия А Серия В
Производство комплектующих 5 2
Монтаж домиков 5 4
Внутренняя отделка 5 7
Прибыль 7 4
Подсказка: в этой задаче в качестве ресурса выступают трудозатраты. Ограничения накладываются на этот ресурс.
102
Раздел 17. Моделирование
Задание 10 (уровень 2). Постройте математическую модель и решите графическим методом и с помощью табличного процессора Excel, используя инструмент Поиск решения, следующую задачу. На звероферме выращиваются черно-бурые лисы и песцы. Для обеспечения нормальных условий их выращивания используется три вида кормов. Количество корма каждого вида, которое должны получать животные, приведено в таблице. В ней также указаны запасы корма каждого вида, которые могут быть использованы зверофермой, и прибыль от реализации одной шкурки лисицы и песца. Сколько животных надо вырастить, чтобы получить максимальную прибыль от реализации шкурок?
Вид корма Количество единиц корма, которое ежедневно должны получать Запасы кормов
Лисица Песец
I 2 3 180
II 4 1 240
III 6 7 426
Прибыль от реализации одной шкурки 160 120
Задание 11 (уровень 2). Постройте математическую модель и решите графическим методом и с помощью табличного процессора Excel, используя инструмент Поиск решения, следующую задачу. Фирма сдает в аренду складские помещения двух типов. Стоимость аренды зависит от типа арендуемого помещения и месяца. Финансовые возможности торговой фирмы, арендующей складские помещения, ограничены и составляют в марте не более 75 тыс. условных денежных единиц, в апреле — не более 39 тыс. условных денежных единиц, в мае — не более 113 тыс. условных денежных единиц. Фирма-арендодатель получает прибыль от сдачи помещений в аренду. Найдите план аренды складских помещений, обеспечивающий максимальную прибыль фирме-арендодателю.
Месяц Арендная ставка, тыс. уел. денежных единиц/м^
Тип складского помещения
1 II
Март 2 5
Апрель 3 1
Май 7 6
Прибыль 5 8
Работа 17.5. Задача об использовании сырья
103
Подсказка: в этой задаче в качестве ресурса выступают деньги. Ограничения накладываются на этот ресурс.
Задание 12 (уровень 2). Постройте математическую модель и решите графическим методом и с помощью табличного процессора Excel, используя инструмент Поиск решения, следующую задачу. При производстве грунта для домашних растений используются три вида почвы, запасы которой составляют соответственно 60, 92 и 72 кг. Количество почвы, необходимое для изготовления 10 кг грунта каждого типа, а также прибыль, получаемая от их реализации, приведены в таблице. Составьте план производства грунта, обеспечивающий получение максимальной прибыли.
Вид почвы Количество почвы на 10 кг грунта
Грунт универсальный Грунт для кактусов
I 1 4
II 2 3
III 5 2
Прибыль 8 7
Задание 13 (уровень 3). Постройте математическую модель и решите с помощью табличного процессора Excel, используя инструмент Поиск решения, следующую задачу. Инвестиционная компания рассматривает в качестве объектов для инвестирования два проекта: проект I — производство энергосберегающих ламп, проект II — производство приборов учета воды. Финансовые возможности фирмы позволяют ей инвестировать в 1-м квартале не более 20 тыс. условных денежных единиц, во 2-м квартале — не более 25 тыс. условных денежных единиц, в 3-м квартале — не более 30 тыс. условных денежных единиц. Какой из проектов целесообразно выбрать, чтобы получить максимальную прибыль?
Потребность в денежных средствах, тыс. уел. денежных единиц
Тип проекта
1 II
1-й квартал 10,8 9,45
2-й квартал 10,8 12,15
3-й квартал 13,5 14,85
Ожидаемая прибыль 23 20
104
Раздел 17. Моделирование
Подсказка: необходимо ввести в рассмотрение двоичные переменные Xj и Xg, каждая из которых принимает только два значения: нуль, если соответствующий проект не выбирается для инвестирования, и единицу, если проект выбирается для инвестирования. Целевая функция имеет вид: Z = 23 • Xj + 20 • Xg. К модели необходимо добавить ограничение, связанное с двоичным видом переменных Xj^ и Xg. Это можно сделать в окне добавления ограничений инструмента Поиск решения (рис. 17.2).
Добавление ограничения
Ссылка на ячейку: ]$е$2:$С^2
J<1
QrpaHHsefflie;
OK
]
Отмена
двоим
<=
>=
цел
двоичное
бавить I Справка |
Рис. 17.2
Работа 17.6. Транспортная задача
Цель работы: ознакомиться с возможностями табличного процессора Excel для решения транспортной задачи.
Задание 1 (уровень 2). Постройте математическую модель и решите с помощью табличного процессора Excel, используя инструмент Поиск решения, следующую транспортную задачу. На складах имеются запасы груза, который необходимо доставить в магазины в определенном объеме.
Вариант 1:
Запасы груза на складах
Склады «1 ^2 «4
Запасы груза 245 315 670 710
Потребность в грузе в магазинах
Магазины ^2 h ^4 h ^6
Объем груза 150 200 240 370 360 620
Работа 17.6. Транспортная задача
105
Удельные стоимости перевозки
bi Ч Ч ч Ч Ч
«1 500 470 820 560 650 1000
900 1150 870 790 350 800
ttg 460 290 830 380 470 910
«4 560 780 870 420 920 990
Вариант 2:
Запасы груза на складах
Склады «1 «2 ад «4
Запасы груза 830 455 375 500
Потребность в грузе в магазинах
Магазины ^2 ^3 ^4 ч Ч
Объем груза 450 275 390 255 270 520
Удельные стоимости перевозки
Ч Ч Ч ч Ч Ч
«1 580 770 420 960 850 700
800 1050 670 980 890 1100
660 590 740 580 870 410
«4 680 780 570 320 730 1000
Вариант 3:
Запасы груза на складах
Склады ад ttg «4
Запасы груза 45 100 20 75
Потребность в грузе в магазинах
Магазины *2 ^3 Ь4
Объем груза 30 80 95 35
loe
Раздел 17. Моделирование
Удельные стоимости перевозки
Ьг Ь2 Ьз Ьа
«1 6 3 7 10
10 4 12 10
«3 5 9 8 11
“4 4 2 4 8
Вариант 4:
Запасы груза на складах
Склады “1 “з «4
Запасы груза 45 85 20 90
Потребность в грузе в магазинах
Магазины h ^3 ^4
Объем груза 25 60 35 120
Удельные стоимости перевозки
bi ^2 Ьз ^4
«1 7 3 6 9
6 12 7 5
9 9 5 4
«4 8 10 12 6
Вариант 5:
Запасы груза на складах
Склады «1 ttg «4
Запасы груза 65 80 35 90
Потребность в грузе в магазинах
Магазины ^2 ^4
Объем груза 60 50 85 75
Работа 17.6. Транспортная задача
107
Удельные стоимости перевозки
bi &2 Ьз Ь4
«1 8 10 6 5
^2 4 3 5 9
О3 11 4 4 8
«4 5 5 3 6
Задание 2* (уровень 3). Фирма, имеющая собственный автопарк, занимается перевозкой грузов из различных населенных пунктов. После доставки груза автомобили ожидают новой заявки на перевозку груза в том городе, куда был доставлен груз. Расстояния между городами, количество свободных машин и заявки на машины приведены в таблице. Составьте план перегона порожних автомобилей, обеспечивающий их минимальный суммарный пробег.
Пункты доставки грузов Расстояние между городами, км Количество свободных машин (шт)
Москва Нижний Новгород Рязань Калуга
Пермь 1907 1506 1780 1650 4
Екатеринбург 2011 1950 1890 1788 3
Челябинск 2500 2120 1960 1854 6
Курган 2450 2100 1970 1790 1
Заявки на машины (шт) 2 3 3 6
Подсказка: обозначив как X;, количество машин, перегоняе-
ч
мых из 1-го города в /-й, в качестве целевой функции нужно рассматривать суммарный пробег порожних автомобилей:
2 = 1907 • Хц + 1506 ■ + 1780 ■ Xi3 + 1650 • +
+ 2011 • Х21 + 1950 ■ ^22 -н 1890 ■ ^23 + 1788 • Х24 +
+ 2500 • Х31 + 2120 • Х32 + I960 • Х^з -ь 1854 • Х34 -к
ч- 2450 • ^41 -ь 2100 • Х42 -ь 1970 • Х43 -ь 1790 • Х44.
* Урубков А. Р., Федотов И. В. Методы и модели оптимизации управленческих решений: учебное пособие. М.: Изд-во «Дело» АНХ, 2009.
108
Раздел 17. Моделирование
Работа 17.7. Задачи теории расписаний
Цель работы: освоить методы решения задач теории расписаний (задачи о шлюзе и о двух станках).
Задание 1 (уровень 1), Воспроизведите решение задачи о шлюзе из § 3.4.3 учебника для 11 класса с помощью табличного процессора Excel.
Задание 2 (уровень 2). Составьте программу на Паскале для решения задачи о шлюзе и протестируйте ее работу на исходных данных, приведенных в § 3.4.3 учебника для 11 класса.
Задание 3 (уровень 2). Вычислите календарное время обработки деталей на двух станках. Исходные данные (время обработки i-й детали на первом и на втором станках) представлены в таблице. Используйте «ручную» реализацию алгоритма Джонсона, а также программу на Паскале, приведенную в § 3.4.3 учебника для 11 класса.
Вариант 1:
№ детали Время обработки детали на первом станке (ty,) Время обработки детали на втором станке (ty^)
1 3 4
2 7 6
3 12 5
4 9 8
5 2 10
Вариант 2:
№ детали Время обработки детали на первом станке (t,-y) Время обработки детали на втором станке (ty^)
1 12 5
2 9 8
3 7 6
4 9 8
5 2 10
Работа 17.7. Задачи теории расписаний
109
Вариант 3:
№ детали Время обработки детали на первом станке (f,,) Время обработки детали на втором станке
1 9 8
2 5 6
3 4 3
4 7 12
5 10 4
Вариант 4:
№ детали Время обработки детали на первом станке {t/^) Время обработки детали на втором станке (f,^)
1 8 4
2 2 5
3 3 4
4 7 6
5 1 8
Вариант 5:
№ детали Время обработки детали на первом станке Время обработки детали на втором станке
1 9 8
2 2 7
3 4 11
4 5 ■ 4
5 12 2
Вариант 6:
№ детали Время обработки детали на первом станке (1,,) Время обработки детали на втором станке (t^^)
1 3 4
2 7 6
3 12 10
4 9 8
5 12 5
110
Раздел 17. Моделирование
Вариант 7:
№ детали Время обработки детали на первом станке (1^,) Время обработки детали на втором станке (1,^)
1 12 5
2 10 8
3 7 6
4 9 8
5 2 10
Вариант 8:
№ детали Время обработки детали на первом станке (t/,) Время обработки детали на втором станке (1^^)
1 9 8
2 5 6
3 4 3
4 10 4
5 7 12
Вариант 9:
№ детали Время обработки детали на первом станке (f^,) Время обработки детали на втором станке
1 8 4
2 2 7
3 3 5
4 7 8
5 1 5
Вариант 10:
№ детали Время обработки детали на первом станке Время обработки детали на втором станке (t^^)
1 9 7
2 3 8
3 4 11
4 5 4
5 12 3
Работа 17.8. Задачи из теории игр
111
Работа 17.8. Задачи из теории игр
Цель работы: ознакомиться с методом решения задач конечных игр с полной информацией.
Задание 1* (уровень 2). Имеются две кучки камней — в 4 и 3 камня. Два игрока ходят по очереди. За один ход игрок либо увеличивает количество камней в какой-то кучке в 3 раза, либо добавляет 2 камня в какую-то кучку. Выигрывает игрок, после хода которого в одной из кучек становится не менее 24 камней. В распоряжении игроков имеется неограниченное количество камней. Кто выиграет в этой игре — игрок, делаюш;ий первый ход, или игрок, делающий второй ход? Каким должен быть первый ход выигрывающего игрока?
Задание 2 (уровень 2). Имеются две кучки камней — в 3 и 2 камня. Два игрока ходят по очереди. За один ход игрок либо увеличивает количество камней в какой-то кучке в 3 раза, либо добавляет 3 камня в какую-то кучку. Выигрывает игрок, после хода которого в одной из кучек становится не менее 24 камней. В распоряжении игроков имеется неограниченное количество камней. Кто выиграет в этой игре — игрок, делающий первый ход, или игрок, делающий второй ход? Каким должен быть первый ход выигрывающего игрока?
Задание 3 (уровень 2). Имеются две кучки камней — в 3 и 2 камня. Два игрока ходят по очереди. За один ход игрок либо увеличивает количество камней в какой-то кучке в 3 раза, либо добавляет 1 камень в какую-то кучку. Выигрывает игрок, после хода которого в одной из кучек становится не менее 16 камней. В распоряжении игроков имеется неограниченное количество камней. Кто выигрывает в этой игре — игрок, делающий первый ход, или игрок, делающий второй ход? Каким должен быть первый ход выигрывающего игрока?
Задание 4 (уровень 2). Имеются три кучки камней — в 2, 3 и 4 камня. Два игрока ходят по очереди. Ход состоит в том, что игрок либо удваивает количество камней в какой-то кучке, либо добавляет по 2 камня в каждую из кучек. Выигрывает игрок, после хода которого в одной из кучек становится не менее 15 камней либо количество камней во всех трех кучках становится не менее 25. В распоряжении игроков имеется неограниченное количество камней. Кто выигрывает в этой игре — игрок, делающий первый
Варианты заданий 1-4 взяты из книги: Самылкина Н. Н. Готовимся к ЕГЭ по информатике. Элективный курс: учебное пособие. М. БИНОМ. Лаборатория знаний, 2008.
112
Раздел 17. Моделирование
ХОД, ИЛИ игрок, делающий второй ход? Каким должен быть первый ход выигрывающего игрока?
Задание 5* (уровень 2). Имеются две кучки камней — в 2 и 3 камня. Два игрока ходят по очереди. Ход состоит в том, чтобы добавить 4 камня в большую кучку либо утроить количество камней в меньшей. Если камней в кучках поровну, то добавлять камни можно только в одну из них. Игрок проигрывает, если сумма камней в обеих кучках становится больше или равна 22. Кто выигрывает в этой игре — игрок, делающий первый ход, или игрок, делающий второй ход? Каким должен быть первый ход выигрывающего игрока?
Работа 17.9. Моделирование экологической системы
Цель работы: проведение исследования динамики экологической системы «хищник-жертва» с помощью электронных таблиц и программирования на Паскале.
Задание 1 (уровень 1). Проведите моделирование динамики системы «хищник-жертва» при значениях параметров: г = 5, а = 0,1, ^ = 2, / = 0,6, Nq = 150, Cq =50, используя уравнения (3.56) из § 3.4.5 учебника для 11 класса. Объясните полученные результаты.
Задание 2 (уровень 2). Проведите моделирование динамики численности популяций в системе «хищник-жертва», используя уравнения (3.56) из §3.4.5 учебника для 11 класса, при значениях параметров: г = 5, а = 0,1, q = 2, f = 0,6. Проанализируйте зависимость исхода эволюции от соотношения значений параметров
No и
Задание 3 (уровень 2). Проведите моделирование динамики численности популяций в системе «хищник—жертва», используя уравнения (3.56) из § 3.4.5 учебника для 11 класса, при значениях параметров: г=5,а = 0,1,^ = 2, iVo = 100, Cq = 6. Проанализируйте зависимость результатов моделирования от значения параметра f в диапазоне от 0,1 до 2.
Задание 4 (уровень 3). Рассматриваемая в § 3.4.5 учебника для 11 класса модель (3.56) предсказывает сопряженные колебания численности жертв и хищников. Исследуйте зависимость запаздывания амплитуды колебаний численности хищников от амплитуды колебаний численности жертв в зависимости от значений пара-
* Вариант 5 взят из книги: Информатика: ЕГЭ 2011. Контрольные тренировочные материалы с ответами и комментариями (Серия «Итоговый контроль: ЕГЭ»). М.; СПб.: Просвещение, 2011.
Работа 17.10. Имитационное моделирование
113
метра а. Значения остальных параметров зафиксируйте по своему усмотрению.
Задание 5 (уровень 3). Рассматриваемая в § 3.4.5 учебника для 11 класса модель (3.56) предсказывает сопряженные колебания численности жертв и хищников. Исследуйте зависимость запаздывания амплитуды колебаний численности хищников от амплитуды колебаний численности жертв в зависимости от значений параметра q. Значения остальных параметров зафиксируйте по своему усмотрению.
Задание 6 (уровень 3). Рассматриваемая в § 3.4.5 учебника для 11 класса модель (3.56) предсказывает сопряженные колебания численности жертв и хищников. Исследуйте зависимость запаздывания амплитуды колебаний численности хищников от амплитуды колебаний численности жертв в зависимости от значений параметра /. Значения остальных параметров зафиксируйте по своему усмотрению.
Задание 7 (уровень 3). Рассматриваемая в § 3.4.5 учебника для 11 класса модель (3.56) предсказывает сопряженные колебания численности жертв и хищников. Исследуйте зависимость запаздывания амплитуды колебаний численности хищников от амплитуды колебаний численности жертв в зависимости от значений параметра г. Значения остальных параметров зафиксируйте по своему усмотрению.
Работа 17.10. Имитационное моделирование
Цель работы: практическое освоение методов моделирования на компьютере случайных процессов с различными законами распределения вероятностей; имитационное моделирование функционирования систем массового обслуживания.
Задание 1 (уровень 1). Пользуясь программой для построения последовательности псевдослучайных чисел, распределенных в соответствии с законом Пуассона, постройте такие последовательности для различных значений параметра л, входящих в формулу 3.62 (см. § 3.5.2 учебника для 11 класса; п = 4, 6, 8), сравните соответствующие гистограммы распределений и сделайте качественные выводы о влиянии параметра п на вид распределения.
Задание 2 (уровень 1). Пользуясь электронной таблицей (см. рис. 3.58 в § 3.5.4 учебника для 11 класса), проведите серию экспериментов при различных соотношениях среднего времени ожидания в очереди и обслуживания клиента. Выясните, при каких соотношениях указанных параметров наступает кризис очереди, описанный в учебнике (см. § 3.5.5, рис. 3.62, 3.63).
114
Раздел 17. Моделирование
Задание 3 (уровень 1). Пользуясь программой на Паскале (см. § 3.5.5 учебника для 11 класса), проведите серию экспериментов при различных соотношениях среднего времени ожидания в очереди и обслуживания клиента. Объем каждой выборки должен составить 10 000 единиц.
Задание 4 (уровень 2). Измените программу для получения последовательности псевдослучайных чисел, приведенную в § 3.5.3 учебника для 11 класса, для имитации нормального (гауссова) распределения. Постройте несколько гистограмм распределения, полученного методом отбора-отказа, для различных выборок из 10 000 точек в каждой.
Задание 5 (уровень 3). На междугородной телефонной станции две телефонистки обслуживают общую очередь заказов. Очередной заказ обслуживает телефонистка, которая освободилась первой. Если обе телефонистки в момент поступления заказа заняты, то звонок аннулируется, и клиенту требуется звонить снова. Промоделируйте этот процесс, считая входные потоки пуассоновскими.
Задание 6 (уровень 3). В травмпункте работает один врач. Длительность лечения больного и промежутки времени между поступлениями больных — случайные величины, распределенные по пуассоновскому закону. По тяжести травм больные делятся на две категории; поступление больного любой категории — случайное событие с равновероятным распределением. Врач сначала занимается больными с тяжелыми травмами (в порядке их поступления), а затем, если таковых нет, — больными с легкими травмами. Промоделируйте этот процесс и оцените среднее время ожидания в очереди больных каждой категории.
Задание 7 (уровень 3). Одна ткачиха обслуживает группу станков, осуществляя по мере необходимости краткосрочное вмешательство, длительность которого — случайная величина. Какова вероятность простоя сразу двух станков? Как велико среднее время простоя одного станка?
Задание 8 (уровень 3). В городском автохозяйстве имеются две ремонтные зоны. Одна обслуживает ремонты краткой и средней продолжительности, другая — средней и длительной (т. е. среднесрочный ремонт может осуществлять любая из этих зон). По мере поломок в автохозяйство доставляют транспорт; промежуток времени между его доставками — пуассоновская случайная величина. Продолжительность ремонта — случайная величина с нормальным законом распределения. Промоделируйте эту систему. Определите среднее время ожидания в очереди транспорта, требующего краткосрочного, среднесрочного и длительного ремонта.
Работа 17.10. Имитационное моделирование
115
Задание 9 (уровень 3). На телефонной станции используется обычная система: если абонент занят, то очередь не формируется, и надо звонить снова. Промоделируйте следующую ситуацию: три абонента пытаются дозвониться до одного и того же владельца номера и в случае успеха разговаривают с ним некоторое случайное по длительности время.
Задание 10 (уровень 3). Промоделируйте ситуацию, описанную в предыдущей задаче, но со следующим изменением: если в момент попытки дозвона телефон абонента занят, то формируется очередь.
Задание 11 (уровень 3). При обслуживании запросов к базе данных в локальной компьютерной сети, организованной по принципу «клиент-сервер», рабочая станция (клиент) посылает серверу запрос на обработку данных и ждет, пока сервер обработает этот запрос. При так называемой распределенной обработке данных сервер имеет монопольный доступ к единственной в системе базе данных; при простейшей организации работы системы «клиент-сервер» каждый последующий запрос начинает обрабатываться только после завершения транзакции, связанной с предыдущим запросом.
Промоделируйте работу этой системы в следующих случаях:
1) нормальное (гауссово) распределение промежутков времени между поступлениями клиентских запросов на сервер и равновероятное распределение продолжительностей транзакций;
2) нормальное распределение промежутков времени между поступлениями клиентских запросов на сервер и пуассоновское распределение продолжительностей транзакций;
3) пуассоновское распределение промежутков времени между поступлениями клиентских запросов на сервер и равновероятное распределение продолжительностей транзакций;
4) пуассоновское распределение промежутков времени между поступлениями клиентских запросов на сервер и нормальное распределение продолжительностей транзакций.
Оглавление
Раздел 14. Системология.................................3
Работа 14.1. Модели систем...........................3
Работа 14.2. Проектирование инфологической модели....6
Раздел 15. Базы данных..................................8
Работа 15.1. Знакомство с СУБД.......................8
Работа 15.2. Создание базы данных
«Классный журн£1л»......................15
Работа 15.3. Реализация запросов
с помощью Конструктора..................20
Работа 15.4. Расширение базы данных.................29
Работа 15.5. Самостоятельная разработка базы данных. ... 33
Раздел 16. Программирование. Часть 2..................43
Работа 16.1. Программирование линейных алгоритмов
на Паскале..............................43
Работа 16.2. Программирование алгоритмов
с ветвлением............................46
Работа 16.3. Программирование циклических алгоритмов
на Паскале .............................53
Работа 16.4. Программирование с использованием
подпрограмм.............................58
Работа 16.5. Программирование обработки массивов....60
Работа 16.6. Программирование обработки строк
символов................................66
Работа 16.7. Программирование обработки записей.....69
Работа 16.8. Рекурсивные методы программирования...74
Работа 16.9. Объектно-ориентированное
программирование........................77
Работа 16.10. Визуальное программирование...........78
Работа 16.11. Проекты по программированию...........84
Оглавление
117
Раздел 17. Моделирование..............................91
Работа 17.1. Компьютерное моделирование свободного
падения..................................91
Работа 17.2. Численный расчет баллистической
траектории...............................92
Работа 17.3. Моделирование расчетов стрельбы
по цели..................................93
Работа 17.4. Численное моделирование распределения
температуры..............................94
Работа 17.5. Задача об использовании сырья...........97
Работа 17.6. Транспортная задача....................104
Работа 17.7. Задачи теории расписаний...............108
Работа 17.8. Задачи из теории игр...................111
Работа 17.9. Моделирование экологической системы...112
Работа 17.10. Имитационное моделирование............113
* I
'ъд
-1 г.
«i'
* ‘Г-**; Л.:^; :> A?ve'
_ _ 5 -i 5V7*’^
L л :."*■' V 1 г j '-1-'^^
:< • f* !■■*’•
^ я т> i. 'ЛГ» /I
^ 1 . i
':■ '• г.. . ■' '■ f* ч'!-?'
“ “
f • и ,, - -ri К гя'.‘>'1
Mr ii '1 -i.‘. r й-t »'■?
'Л ‘ » # ■> «'•Т
?"• . ■
■» j " ^ ►- “■* r 1 Г‘-Г f *-
fT~ *г,Ч< (• , J^