- •Этапы разработки программы Программирование — это процесс создания (разработки) программы, который может быть представлен как последовательность нескольких этапов.
- •II. Языки программирования
- •Трансляторы
- •IV. Линейные алгоритмы
- •VI. Циклические алгоритмы
- •VII. Массивы данных
- •16. Ввести с помощью датчика случайных чисел и вывести на печать элементы массива.
- •20. Задан массив целых чисел a[n]. Определить количество положительных элементов в нем и вычислить их сумму.
- •22. Определить количество положительных, отpицательных и pавных нулю чисел в заданном массиве a[I].
- •23. Задан массив целых чисел a[I]. Определить количество положительных и отpицательных элементов в нем и вычислить их суммы.
- •24. Задан массив целых чисел a[n]. Опpеделить количество элементов, pасполо женных до пеpвого отpицательного.
- •25. Опpеделить является ли сумма элементов заданного массива X[I] четным числом.
- •26. Задан массив целых чисел a[n]. Cфоpмиpовать массив b[n], записав в него сначала все отpицательные элементы массива a[n], а эатем все остальные.
- •27. Задан массив целых чисел X[I]. Опpеделить max элемент и его поpядковый номеp.
- •28. Задан массив целых чисел a[I]. Hайти минимальный элемент сpеди положительных.
- •31. Заданы два массива целых чисел a[I] и b[I] по n элементов в каждом. Вычислить попаpные пpоизведения элементов этих массивов и опpеделить минимальное пpоизведение.
- •32. Задан массив целых чисел a[n]. Опpеделить тpи наибольших элемента в нем.
- •35. Опpеделить количество положительных элементов в каждом столбце матpицы.
- •39. Опpедилить max элемент матpицы и записать нули в стpоку, в котоpой он находится.
- •40. Задана матpица целых чисел. Опpеделить max элемент главной диагонали матpицы и напечатать стpоку, в котоpой он находится.
- •41. Задана матpица целых чисел. Опpеделить min элемент матpицы и записать 0 в ту стpоку и столбец, на пеpесечении котоpых он находится.
- •42. Задано целое положительное число n. Cфоpмиpовать матpицу:
- •46. Дано n целых чисел. Напечатать k целых чисел в каждой строке.
- •VIII. Обработка символьной информации
- •IX. Сортировка данных
- •57. Задан массив слов. Выполнить соpтиpовку этих слов в алфавитном поpядке.
- •X. Функции
- •127994, Москва, ул. Образцова, 15.
Этапы разработки программы Программирование — это процесс создания (разработки) программы, который может быть представлен как последовательность нескольких этапов.
Постановка задачи. На этом этапе подробно описывается исходная информация и формируются требования к результату, а также описывается поведение программы в особых случаях.
Математическое или информационное моделирование. Этот этап создает математическую модель решаемой за дачи, которая может быть реализована на компьютере. Данный этап очень тесно связан с первым, и выделять его имеет смысл только в том случае, когда нет единого метода решения.
Разработка или выбор алгоритма. Здесь необходимо определить последовательность действий, которые надо выполнить для получения результата.
Программирование. Программой называют последовательность действий, направленных на выполнение их некоторым исполнителем (например, компьютером).
Ввод программы и исходных данных в ЭВМ.
6. Тестирование и отладка программы. На этом этапе происходит исполнение алгоритма с помощью ЭВМ, поиск и исправление ошибок. Отладка программы заключается в тестировании программы на контрольных примерах.
7. Исполнение отлаженной программы и анализ результатов. На этом этапе программист задает исходные данные и анализирует результаты, полученные в ходе выполнения программы.
Алгоритм — это точное предписание, определяющее процесс перехода от исходных данных к результату.
Начиная с 50-х годов для изображения алгоритмов программисты стали использовать графические схемы, которые получили название блок-схем.
Графическое представление хода решения задачи — самый наглядный способ записи алгоритма. Блок-схемы наиболее распространенный способ графического изображения алгоритмов.
Рис. 1. Блок-схема алгоритма, вычисляющего сумму двух чисел
Алгоритм имеет следующие свойства:
однозначность — наличие единственного толкования правил выполнения действий и порядка их выполнения;
конечность — обязательное завершение каждого из действий, составляющих алгоритм, а также завершение выполнения алгоритма в целом;
результативность — получение при выполнении алгоритма определенного результата;
массовость — возможность применения алгоритма для решения целого класса задач (предполагается его правильная работа при меняющихся в заданных пределах значениях исходных данных);
правильность — способность алгоритма давать правильные результаты при решении поставленных задач.
Блок-схемы строятся по определенным правилам и включают в себя геометрические фигуры (блоки), соединенные между собой линиями, указывающими порядок выполнения операций. Блочные символы стандартизированы и различаются по типу выполняемых действий (ГОСТ 19.002-80 и 19.003-80, международные стандарты ISO 2636-73). В табл. 1 представлены наиболее часто используемые обозначения в блок-схемах.
Таблица 1. Основные обозначения блок-схем
Наименование |
Обозначение |
Функция |
Процесс (функциональный блок)
|
|
Выполнение операции или группы операций, в результате которых изменяются значение, форма представления или расположение данных |
Решение (логический блок или блок сравнения) |
|
Выбор направления выполнения алгоритма или программы в зависимости от некоторых условий |
Предопределенный процесс (подпрограмма)
|
|
Использование ранее созданных и отдельно описанных алгоритмов или программ
|
Ввод
|
|
Преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов обработки (вывод) |
Вывод |
|
Преобразование данных в форму, пригодную для отображения результатов обработки (вывод)
|
Пуск-останов
|
|
Начало и конец программы
|
Межстраничный соединитель
|
|
Указание на наличие связи между разъединенными частями схем, расположенных на разных листах
|
Соединитель
|
|
Связь между элементами блок-схемы схемы
|
Рассмотрим более подробно применение основных графических элементов блок-схемы.
В схеме начало и завершение алгоритма, а также вход и выход из вспомогательных алгоритмов отмечаются, соответственно, блочными символами начала и конца.
Эти блоки в отличие от большинства других имеют один вход или один выход, отмечающие как бы начало и конец пути обработки информации. Каждая схема обязательно должна начинаться и заканчиваться этими символами.
Следующие блочные символы в виде параллелограмма используют для обозначения операций ввода-вывода данных.
Блок, отражающий вычислительный процесс, применяют для обозначения операции (или группы операций), изменяющей значение, форму представления или размещения данных.
Производимые в этом блоке операции записывают в любой форме с использованием математических формул, выражений и пояснений на естественном языке.
Логический блочный символ, обозначающий решение, используют для выбора направления выполнения алгоритма в зависимости от некоторого условия (условий).
В блоке указывают условие, вопрос или решение, определяющие дальнейшее направление выполнения алгоритма. Условия могут быть простыми (блок 6) и составными (блок 8). В них должны быть учтены абсолютно все возможные варианты следования процесса при решении задачи.
Из блока проверки условия может выходить два или три информационных потока, что отличает его от других блочных символов, имеющих не более одного выхода. Выходящие из блока линии должны снабжаться условиями, порождающими то или иное направление исполнения алгоритма (например, «да» или «нет», <0, =0
или >0, + или -и т. д.). Блочный символ модификации символизирует начало циклических вычислений (заголовок цикла), для управления которыми он используется.
Внутри блока указываются переменная цикла и параметры, характеризующие закон ее изменения, например, i = х1, хn dx, где i — переменная цикла, x1 и хn — начальное и конечное значения переменной цикла, dx — шаг ее изменения (переменная цикла изменяется от до х1 до хn с шагом dx). Если шаг равен 1, то dx можно не указывать.
Кроме входящей линии блок модификации имеет одну выходящую (обозначенную на рисунке как «Вых.»), а также линии, отмечающие передачу вычислительного процесса на обработку для циклических вычислений («Цикл») и возврат в начало для изменения переменной цикла («Изм. пер.»).
Для обращения к вычислению по подпрограмме (стандартной или разработанной пользователем) в схеме используют блочный символ предопределенного процесса.
Он как бы заменяет алгоритм подпрограммы (вспомогательный алгоритм) и означает, что информационный поток передается подпрограмме. По завершении вычислительного процесса в подпрограмме результаты расчета возвращаются в основной алгоритм, в котором процесс вычислений возобновляется с блока, следующего за блоком обращения к подпрограмме. Блок предопределенного процесса используют при организации вспомогательных алгоритмов, оформленных автономно в виде отдельного модуля, или при обращении к библиотечным подпрограммам.
Для уменьшения количества пересечений и длины линий, символизирующих пути следования информационных потоков, допускается их разрывать, вставляя в места разрыва соединители. Если линия разрывается между блоками, размещенными на одной странице, то в качестве соединителя используют соответствующие символы.
В блочный символ вписывают номера блоков, в которые вычислительный процесс передается или из которых он поступил. Так, верхний соединитель указывает, что вычислительный процесс передается на вход блока 15, а нижний — что вычислительный процесс поступил с выхода блока 10.
Если же линии соединяют блоки, расположенные на разных страницах, то используется символ межстраничного соединителя, в который вписывают не только номера блоков, но и номера страниц.
Изображенный сверху межстраничный соединитель означает, что вычислительный процесс передается на вход блока 23, расположенного на странице 10. Нижний межстраничный соединитель означает, что информация передана с выхода блока 12, расположенного на странице б (то есть сначала указывается номер страницы, а под ним номер блока, на который передается или с которого принимается управление).
Для пояснений особенностей функционирования отдельных блоков или групп блоков, принятых допущений и назначений отдельных элементов, обозначений переменных и т. п. в схемы алгоритмов могут включаться комментарии.
Схема является самым наглядным и простым способом представления алгоритма. В ней четко прослеживаются порядок выполнения действий, потоки информации и пути их следования. Линии по отношению к блокам могут быть входящими и выходящими. Количество входящих линий для всех блоков не ограничено — их может быть одна, две, три и более. Выходящая же линия для большинства блоков может быть только одна (исключение — блоки проверки условия).
В схеме блоки, за исключением соединителей, могут нумероваться — для простоты дальнейшего описания их работы, организации комментариев и использования соединителей. Номера проставляют в верхней части графического символа в разрыве его рамки, как это показано на предыдущих рисунках. Блок пуска и останова не нумеруется, но обязательно учитывается при нумерации остальных блоков.
Внутри блоков и рядом с ними делаются записи, уточняющие выполняемые функции. Эти записи могут быть представлены в любой удобной для разработчика форме. Они не имеют каких-либо существенных ограничений (на язык, обозначения, символы и др.), однако должны быть понятны всем, кто будет пользоваться алгоритмом. Единственное ограничение накладывается на последовательность записей — они должны читаться (использоваться при работе алгоритма) слева направо и сверху вниз независимо от направления потоков информации.
Алгоритмы целесообразно разрабатывать поэтапно (по шагам). Сложные задачи следует разбивать на достаточно простые, легко воспринимаемые части. Логика алгоритма должна опираться на минимальное число простых управляющих базовых структур. При разработке схем алгоритмов необходимо соблюдать некоторые требования.
В схеме алгоритма все линии от блока начала до блока конца не должны иметь разрывов, не помеченных соединителями. Все линии, указывающие на последовательность выполнения действий, должны быть замкнутыми.
В схеме должны четко прослеживаться потоки информации.
Блоки следует размещать таким образом, чтобы избегать пересечения линий. При передаче управления в схеме снизу вверх или справа налево линии обязательно помечают стрелками.
Не допускается передача управления «в никуда». Источник и получатель должны быть четко обозначены.