- •Введение
- •1. Общие положения
- •1.1. Понятие алгоритма. Данные в задачах и алгоритмах
- •1.2. Понятие о технологии разработки программ. Принципы и этапы разработки программ
- •1.3. Состав документации по отдельным этапам
- •1. Задача
- •9. Структурные тесты
- •1.4. Нисходящая разработка и нисходящая отладка
- •2. Процесс разработки программы на примере решения типовой задачи
- •2.1. Разработка алгоритма и программы уровня 0 с заглушками
- •2. Входные данные
- •3. Выходные данные
- •5. Функциональные тесты
- •6. Метод
- •7. Алгоритм
- •8. Программа на паскале. Диалоговый вариант
- •9. Структурные тесты
- •2.2. Отладка программы с заглушкой
- •2.3. Общая схема перехода от метода к алгоритму решения
- •2.4. Разработка алгоритма и программы для примера
- •2. Входные данные
- •5. Функциональные тесты
- •6. Метод
- •7. Алгоритм
- •8. Программа на паскале
- •9. Структурные тесты
- •2.5. Отладка полной программы
- •2.6. Список заданий
- •3. Организация хранения данных с позиций эффективности отладки и использования программы
- •3.1. Как лучше хранить, вводить и выводить данные
- •3.2. Использование текстовых файлов для хранения входных и выходных данных
- •3.3. Использование параметров в Паскаль-программах
- •3.4. Задание
- •4. Некоторые методы решения типовых задач
- •4.1. Поиск экстремальных значений (максимума, минимума) в одномерном массиве
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •4.2. Поиск элемента, удовлетворяющего заданному условию
- •2. Входные данные
- •6. Метод
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •4.3. Задача со сложной логикой
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •4.4. Упорядочение одномерного массива
- •3. Выходные данные
- •6_А. Метод включения
- •6_Б. Метод пузырька
- •4.5. Список заданий
- •5. Работа с двумерными массивами (матрицами)
- •5.1. Схема обработки матриц
- •5.2. Ввод и вывод матрицы
- •5.3. Пример решения задачи
- •3. Выходные данные
- •6. Метод
- •5.4. Список заданий
- •6. Оформление алгоритмов в виде процедур
- •6.1. Основные положения
- •6.2. Кодирование процедур на языке Паскаль
- •6.3. Специфика оформления процедур ввода – вывода
- •6.4. Рекомендации по оформлению процедур
- •6.5. Примеры разработки процедур
- •3. Выходные данные
- •6. Метод
- •3 Истина, если все элементы строки больше 1, ложь, в противном случае . Выходные данные
- •7. Описание процедуры
- •8. Кодирование на паскале
- •9. Структурные тесты
- •2. Входные данные
- •3. Выходные данные
- •4. Аномалии не рассматриваем
- •6. Метод
- •7. Алгоритм
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •8. Кодирование на паскале
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •8. Кодирование на паскале
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •7. Описание процедуры
- •8. Кодирование на Паскале
- •6.6. Список заданий
- •7. Внешние модули (unit) в турбо-Паскале
- •7.1. Суть и описание модуля
- •7.2. Связь модуля с другими модулями и главной программой. Область действия описаний объектов
- •7.3. Специфика оформления процедур ввода – вывода в модулях
- •7.4. Примеры оформления процедур во внешних модулях
- •7.5. Задания
- •7.6. Обработка многомодульных программ в среде турбо-Паскаль
- •8. Контрольные вопросы к главе 1
- •К главе 2
- •К главе 3
- •К главе 6
- •К главе 7
- •Заключение
- •Литература
- •Приложение 1. Базовые структуры алгоритмов
- •Приложение 2. Простые типы в Паскале
- •Приложение 3. Структура типов данных в языке Паскаль
- •Содержание
2. Входные данные
цел n– число точек; простая переменная; 0<n<=100; формат XXX (:3);
вещ r– критическое удаление; простая переменная; 0<r<=10; точность 0,1; формат XX.X (:4:1);
вещ x– абсциссы точек; одномерный массив;x[i]<=10; точность 0,1; формат +ХХ.Х (:5:1);
вещ y– ординаты точек; одномерный массив;y[i]<=10; точность 0,1; формат +ХХ.Х (:5:1).
3. Выходные данные
вещ p- искомый процент точек; простая переменная; 0<p<=100; точность0,1; форматXXX.Х(:5:1);
вещ sa- среднее удаление точек от начала координат; простая переменная; 0<sa<=sqrt(10*10+10*10)<=10*sqrt(2)<20; точность 0,1; форматXX.X(:4:1).
Замечание. Одно из требований задачи - найти точки с положительными координатами вне окружности. Как оценивать ситуацию отсутствия таких точек среди заданных?
Если в задаче речь идет о поиске объекта согласно некоторому условию, будем считать, что отсутствие искомого – возможный вариант решения задачи, и предусматривать его. Как именно – зависит от конкретной задачи.
В данном случае при отсутствии нужных точек значение окажется равным нулю. При этом очевидно, что никаких недопустимых операций (типа деления на ноль) не будет. При выводе результата достаточно вывести p; само полученное значение однозначно говорит о том, есть точки или нет.
Это частный, далеко не всегда возможный вариант диагностики результата поиска, но для начала мы им воспользуемся в силу его простоты. Далее (см. § 2.3, «Альтернативные ситуации») будет предложен универсальный прием.
4. Аномалиипока не рассматриваем
5. Функциональные тесты
№ |
Входные данные |
Результат |
Смысл теста | ||||||||||||
1 |
n=5; r=3.0
|
p=20 (обр9) sa=3.9 (обр10) |
Искомые точки есть; данные взяты из примера | ||||||||||||
2 |
n=5; r=3.0
|
p=0 (обр9) sa=2.5 (обр10) |
Искомых точек нет; тест построен на основе теста 1 |
6. Метод
Действуя по нисходящей схеме, прежде всего разделим подзадачи ввода данных, обработки (собственно решения задачи) и вывода результатов. Такое разбиение на подзадачи в качестве первого шага следует делать всегда, если это возможно.
Для каждой из подзадач укажем входы и выходы. Это необходимо для контроля правильности логики решения.
Схема решения задачи будет выглядеть следующим образом.
Здесь ввод-вывод (подзадачи А0.1 и А0.3) тривиален и представляет собой чисто техническую задачу. Его можно сразу описать в алгоритме, а затем закодировать, что мы и сделаем.
В дальнейшей разработке нуждается только подзадача А0.2, по сути представляющая собой исходную задачу. Ее мы раскроем на следующем уровне проектирования. На данном уровне эту абстракцию в алгоритме заменим заглушкой. Согласно тестам должно быть два варианта заглушки.
Для ввода-вывода массивов потребуется промежуточная переменная - индекс элемента.
Пусть i- текущий индекс элемента массива.