Green-sell.info

Новые технологии
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Подпрограммы в структурном программировании

Try Objective-с

сайта «Try Objective-c — программирование для начинающих»!

Здесь простым и доступным языком представлен материал по основам программирования.

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

Сам процесс обучения программированию довольно трудоемок, но если у вас есть цель — то у вас все получится!

Заучивать весь представленный материал нет необходимости. Главное — чтобы вы понимали саму суть здесь изложенного.

  • Просмотров: 21803
  • Автор: Midav
  • Дата: 5-10-2012, 00:57

1.17 Типы программирования. Часть 1. Структурное программирование. Циклы

Любой язык программирования — это формальный язык, поскольку он придуман людьми для решения каких либо специфических задач. Например, набор специальных знаков и правил записи формул, используемых математиками для записи формул и доказательств теорем, является формальным языком.

Языки программирования – формальные языки, предназначенные для описания алгоритмов.

Формальные языки характерны тем, что имеют четкие синтаксические правила.
Например запись 2×2=4 является синтаксически правильной математической записью, а 2=+4 – нет.

Когда вы читаете предложение на русском языке или выражение на формальном языке, вы определяете его структуру, часто неосознанно. Этот процесс называется синтаксическим анализом или синтаксическим разбором. Эквивалентный англоязычный термин – parsing (парсинг)

Отсюда мы подходим к тому, что называется парадигмой программирования.

Парадигма программирования — это некий набор правил, который определяет стиль написания программ.

Существует несколько таких правил, которые можно распределить по специфике методологии программирования:
— структурное программирование
— объектно-ориентированное программирование
— логическое программирование и прочие.

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

Перевод осуществлён Kovalev Filipp

Это обзорная лекция профессора Джери Кейн с факультета Computer Sciense университета Стэнфорд.
Парадигмы программирования представляют несколько языков, включая C, Ассемблер, C++, Параллельное программирование, Sheme и Python.
Цели данного курса — научить слушателей как писать код на каждом из этих языков и понимать парадигмы программирования, представляемые этими языками.

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

Рассмотрим основные моменты касающиеся структурного программирования.

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

Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций имеющие следующие отличительные черты:

1
Последовательное исполнение
— однократное выполнение операций в том порядке, в котором они записаны в тексте программы (сначала выполняется инструкция 1, затем инструкция 2, затем следующая. и так далее);

2
Ветвление (if)
— это однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;
Операторы выполняющие функции ветвления имеют название — условные операторы.

Условие — любое выражение
Оператор — любой допустимый оператор или блок операторов
Если условие истинно — оператор будет выполнен.
Если условие ложно — оператор будет пропущен

Условный оператор if может быть усложнен служебным словом else — иначе
Это слово позволяет получить законченность условного оператора if, которое будет выражаться так:

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

Цикл for
Для организации цикла for необходимо выполнить три обязательных действия:
— установить начальные значения переменных
— проверять истинность условия цикла
— на каждом шаге изменять значение счетчика чикла

— Выражение 1 — инициализация (выполняется только один раз в самом начале цикла)
— Выражение 2 — условие цикла (выполняется на каждом последующем витке цикла)
— Выражение 3 — приращение счетчика (выполняется на каждом последующем витке цикла после выполнения оператора)

циклы с предусловием (while)
сперва выполняется условие (проверяется его истинность или ложность) и только после этого выполняется сам цикл. Данный цикл может не выполниться ни разу если результатом проверки окажется «ложь».

Условие — любое выражение
Оператор — любой допустимый оператор или блок операторов

циклы с пост условием (do while) — сперва выполняется сам цикл и только после него проверяется его истинность или ложность. Особенностью данного цикла является то, что он будет выполнен хотя бы один раз, в отличии от цикла с предусловием.

В программе циклы могут быть ВЛОЖЕННЫЕ друг в друга произвольным образом.

Повторяющиеся фрагменты программы (либо не повторяющиеся) могут оформляться в виде так называемых ПОДПРОГРАММ (процедур или функций).
В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция вызова подпрограммы. При выполнении такой инструкции выполняется вызванная подпрограмма, после чего исполнение программы продолжается с инструкции, следующей за командой вызова подпрограммы.

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

Процедура, будучи вызванной выполняет какое то действие.
Функция (в отличии от процедуры) всегда возвращает значение.

Например в программе мы можем какой либо переменной присвоить значение (результат) какой то функции:
x = function(y)
Здесь мы переменной Х присваиваем значение Y, которое вернула функция function
(синтаксис мы будем рассматривать позднее)
В языке СИ например, что процедура, что функция называются одинаково — функция. Независимо от того какую работу они выполняют.

Разработка программы в структурном программировании ведётся пошагово, методом «сверху вниз».
Это позволяет вместо работающих подпрограмм использовать «заглушку», чтобы протестировать работоспособность всей программы в целом. После первого тестирования на работоспособность заглушку заменяют реальной подпрограммой.

Ярким представителем структурного программирования является язык программирования СИ
Основы программирования на Си мы также будем рассматривать в дальнейшем.

Необходимо стараться писать программу таким образом, чтобы те блоки, из которых она будет состоять были универсальными — чтобы к ним можно было обращаться несколько раз. Или, что еще лучше, чтобы такой модуль был настолько универсален, что его можно было бы использовать в совершенно другой программе.

Понятие структурного программирования. Подпрограммы.

Дата добавления: 2014-11-28 ; просмотров: 1398 ; Нарушение авторских прав

Значительное увеличение сложности задач, решаемых с помощью ЭВМ, приводит к увеличению размеров и сложности программ, что порождает дополнительные трудности при их разработке и отладке. Увеличение продолжительности жизненного цикла программ приводит к тому, что с течением времени из-за изменения условий использования программ возникает необходимость их модификации, повышения их эффективности, удобства пользования ими.

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

Под структурным программированием понимают такие методы разработки и записи программы, которые ориентированы на максимальные удобства для восприятия и понимания ее человеком. При прочтении программы в ее следующих друг за другом фрагментах должна четко прослеживаться логика ее работы, т. е. не должно быть «скачков» на фрагменты программы, расположенные где-то в другом месте программы.

Структурное программирование — «программирование без go to», т. е. не используются операторы перехода без особой необходимости. В связи с этим отдельные фрагменты программы представляют собой некоторые логические (управляю­щие) структуры, которые определяют порядок выполнения содержащихся в них правил обработки данных. Любая программа получается построенной из стандартных логических структур, число типов которых невелико.

Основные логические структуры:

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

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

Читать еще:  Классификация языков программирования высокого уровня

Повторение — цикл, в котором группа операторов может выполняться повторно, если соблюдается заданное условие.

Технология нисходящего программирования базируется на методе программирования «сверху вниз». Часто этот метод называют методом пошаговой детализации. Основой такого метода является идея постепенной декомпозиции исходной задачи на ряд подзадач. Сначала формулируется самая грубая модель решения, отдельные детали которой на первом этапе могут быть довольно расплывчатыми. По мере разработки программы, разбивая наиболее неясные части алгоритма и добиваясь все более точных и детализированных формулировок получают более подробное решение, как бы опускаясь с большой высоты ниже и начиная при этом различать более мелкие детали. Решение отдельного фрагмента сложной задачи может представлять собой самостоятельный программный блок, называемый подпрограммой. Такой процесс детализации продолжается до тех пор, пока не станут ясны все детали решения задачи. В этом случае программу решения сложной задачи можно представить как иерархическую совокупность относительно самостоятельных фрагментов — подпрограмм.

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

Структурное программирование

Модульное программирование

РАЗДЕЛ 6. ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ.

Лекция № 7. Основные технологии программирования – 2 час.

Понятие о структурном программировании. Модульный принцип программирования. Подпрограммы. Принципы проектирования программ сверху-вниз и снизу-вверх. Основные положения объектно-ориентированного программирования. Интегрированные среды программирования. Этапы решения задач на компьютере. Эволюция и классификация языков программирования. Основные понятия языков программирования. Структуры и типы данных языка программирования.

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

XXIII. Основные технологии программирования
Самостоятельная работа: [3] стр. 198–209; [4] стр. 182–184

Модульное программирование — метод разработки программ, предполагающий разбиение программы на независимые модули. Разделение большой программы на модули облегчает ее разработку, отладку и сопровождение. Считается, что оптимальный по размерам модуль целиком помещается на экране дисплея.
Заглушка

Заглушка в структурном программировании — процедура, представленная точной спецификацией заголовка и пустым телом. Заглушка позволяет компилировать и выполнять программу в отладочном режиме

Метод восходящего проектирования (Программирование «снизу вверх»)

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

Нисходящее программирование (Программирование «сверху вниз»)

Нисходящее программирование — методика разработки программ, при которой разработка начинается с определения целей решения проблемы, после чего идет последовательная детализация, заканчивающаяся детальной программой. При этом происходит пошаговое разбиение алгоритма на всё более мелкие части до тех пор, пока получатся такие фрагменты, для которых можно написать конкретные команды.

Структурное программирование — методология и технология разработки программных комплексов, основанная на принципах:
— программирования «сверху-вниз»;
— модульного программирования.

При этом логика алгоритма и программы должны использовать три основные структуры: последовательное выполнение, ветвление и повторение.

XXIV. Основные принципы структурного программирования
(программирование без GO TO)

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

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

Каждый модуль оформляется по определённым правилам в виде подпрограммы, и в текст основного алгоритма вместо него вставляется короткая инструкция вызова подпрограммы. Когда выполнение программы доходит до этой инструкции, выполняется фрагмент, заложенный в подпрограмму, после чего управление передаётся на команду, следующую за инструкцией вызова подпрограммы.

Различают подпрограммы функции (используется как операнд в выражениях) и процедуры (используется как оператор). Общий вид подпрограммы:

Заголовок: Имя и Формальные параметры
Тело подпрограммы
Признак окончания подпрограммы

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

Пример. Дан массив целых чисел ,i=1, 2, . 15. Программа вычисляет произведение сумм некоторых элементов массива А. Так как операции, которые следует выполнить для суммирования, не зависят от конкретных значений используемых чисел, алгоритм суммирования оформлен в виде подпрограммы. Поскольку каждая из сумм, которые входят в конечное произведение, не представляет интереса сама по себе, подпрограмма оформлена по типу подпрограммы-функции.

начало цикла для I=I1 до I2

писать(«введите значения массива А»)

начало цикла для j=1 до 15

писать («произведение равно»,Р:6)

В программу введены константы: G=1; W=12;T=8;L=15. Это – фактические параметры, которые надо использовать вместо формальных параметров I1 и I2 при вычислении значения Р. В результате переменная Р примет значение произведения сумм элементов с 1 по 12 и с 8 по 15 из массива А.

Разработка программы идёт пошагово, методом сверху-вниз. Сначала пишется текст основной программы, в которой вместо фрагментов, выделенных в подпрограммы, ставят «заглушки». Это подпрограммы, в которых вместо реально нужных операторов ставят сигнальные печати или ввод данных, которые должна была бы сосчитать эта подпрограмма. Таким образом проверяют и отлаживают основной алгоритм. Затем подпрограммы-заглушки по очереди заменяют на нужные подпрограммы, отлаживают и тестируют их. Такая технология облегчает создание программы, уменьшает количество ошибок и облегчает нахождение допущенных ошибок.

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

Основные языки программирования, использующие структурную технологию:

– Ада, Си – языки общего назначения;

– Бейсик (до Visual Basic);

– КОБОЛ – для экономических задач (много операторов, облегчающих манипуляции с файлами);

– Фортран, Паскаль, ПЛ/1 – для вычислительных задач (удобные средства для записи формул).

XXV. Основные принципы объектно-ориентированного программирования
Самостоятельная работа: [4] стр. 157–181

Объектно-ориентированное программирование (ООП) применяют при программировании разных манипуляций над объектами (программы управления размерами и положением окон Windows, листами книги Excel, файлами и т. п.).

Основные принципы составления алгоритма решения таких задач:

– Моделируемая система состоит из объектов. Объекты могут быть вложены друг в друга (объект лист Excel – это часть объекта книга Excel).

– Объекты каким-то образом взаимодействуют между собой.

– Каждый объект характеризуется своим состоянием и поведением. Состояние объекта задаётся значением некоторых его свойств (объекты типа «книга Excel» имеют свойства имя, размер, открыта/закрыта и т. п.). Действия, которые можно выполнять над объектом или которые он сам может выполнять, называются методами (объект типа «книга Excel» можно открыть, закрыть, переименовать, перенести в другую папку и т. п.). После каждого действия изменяются какие-то свойства объекта.

Основные термины и понятия:

Класс объектов – шаблон, определяющий основные свойства, методы и события группы объектов, объединяемых в класс. По другому: Класс объектов – это множество объектов, имеющих общее поведение и общую структуру

События – ситуации, в которых надо программировать какой-то отклик объекта (что делать, когда над гиперссылкой или кнопкой расположен курсор, или щёлкает курсор, или происходит двойной щелчок).

Наследование – порождает иерархию объектов. В основном классе (родителе) можно выделять подклассы. Они состоят из объектов, входящих в класс родителя и обладают наряду со всеми его характеристиками дополнительной группой свойств, которых у других объектов класса-родителя нет. Пример: класс-родитель – окно Windows, подклассы – диалоговые окна, окна документов, окна папок. Подклассы окон документов – окна документов Word, окна документов Excel, окна документов Power Point и т. п.

Читать еще:  Объектно ориентированное программирование это совокупность

Определение наследования в Интернет-тестах: свойство ООП, которое может быть смоделировано с помощью таксонометрической классификационной схемы (иерархии).

Инкапсуляция – сокрытие деталей программ, создающих и манипулирующих объектами. Создание объектов, манипулирование ими оформляется в виде подпрограмм. Программист указывает в своей программе только то, что и с каким объектом нужно сделать или какой результат нужно получить. То есть объекты рассматриваются как «чёрные ящики». Такой способ упрощает разработку программы и её модификацию.

Полиморфизм –.одно и то же имя может обозначать в разных подклассах одного класса разные методы для выполнения одного и того же типа действий (трансформация объекта: для подкласса овал – один метод (программа), для подкласса прямоугольник – другой.

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

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

Основные языки ООП:

– С++ – для системного программирования;

– Java, JavaScript, PHP, Perl – для разработки сценариев в динамических Veb-страницах;

– Simula – первый язык, построенный по принципам ООП;

– Delphi (Object Pascal) – удобен для программирования баз данных.

XXVI. Этапы решения задач на компьютере
Самостоятельная работа
: [3] стр. 198–209; [4] стр. 182–184

1. Постановка задачи:

– сбор информации о задаче;

– описание исходных данных и конечных целей;

– определение формы выдачи результатов.

2. Анализ и исследование модели задачи:

– анализ существующих аналогов;

– анализ технических и программных средств;

– разработка мат. модели;

– разработка структур данных.

3. Разработка алгоритма:

– выбор метода проектирования алгоритма;

– выбор формы записи алгоритма (блок-схема, псевдокод и т.п.);

– выбор тестов и метода тестирования;

4. Программирование:

– выбор языка программирования;

– уточнение способа организации данных;

– запись алгоритма на выбранном языке.

5. Отладка и тестирование:

синтаксическая отладка: исправление ошибок в форме записи конструкций;

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

– тестовые расчёты и анализ результатов тестирования;

6. Деятельность, направленная на исправление ошибок в программной системе, называется отладкой .Тестирование – прогон отлаженной программы на эталонных вариантах исходных данных, для которых заранее известны результаты.

7. Анализ результатов тестирования и, если нужно, уточнение модели и повторение п.п. 2–5.

8. Сопровождение программы: составление документации по мат. модели, алгоритму, программе, набору тестов, использованию готовой программы и т. п.

? Интегрированная система программирования включает среди прочих компоненты:

:#5 текстовый редактор – для создания исходного текста программы;

#5 компилятор и #5интерпретатор – для перевода исходного текста программы в машинный код.

? Система программирования представляет программисту возможность:#5 автоматической сборки разработанных модулей в единый проект

? В состав средств программирования на языках высокого уровня входят:

? Интерпретатор: #5 воспринимает исходную программу на исходном языке и выполняет её построчно, не создавая исполняемого модуля.

Исполняемый файл создаётся из исходного текста программы компилятором и предполагает выполнение следующих процессов:

? Ошибка в форме записи программы приводит к сообщению о синтаксической ошибке:

? На этапе отладки программы:#5 проверяется корректность работы программы.

На этапе тестирования проверяется правильность составления алгоритма и выделения существенных закономерностей в моделируемой системе.

Структурное программирование

— Учитель,- проговорил Сунь У-кун.- Я человек простой и вашего городского языка не понимаю. Что значат подпорки к стене?

— Когда люди начинают строить дом и хотят сделать его прочным и крепким, то между стенами они ставят подпорки. Но проходит время, и здание рушится, а это значит, что подпорки сгнили.

У Чэн-энь. «Путешествие на Запад», глава 2

Общая характеристика структурного программирования

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

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

Начнем с того, что обратимся к истории.

В теории схем программ было замечено, что некоторые случаи блок-схем легче поддаются анализу [ 16 ] . Поэтому естественно было выделить такой класс блок-схем, что и сделали итальянские ученые С. Бем и К. Джакопини в 1966 г. Они доказали, что любую блок-схему можно привести к структурированному виду, использовав несколько дополнительных булевых переменных. Э. Дейкстра подчеркнул, что программы в таком виде, как правило, являются легче понимаемыми и модифицируемыми, так как каждый блок имеет один вход и один выход .

В качестве методики структурного программирования Э. Дейкстра предложил пользоваться лишь конструкциями цикла и условного оператора, изгоняя go to как концептуально противоречащее этому стилю

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

К несчастью, оператор go to формально совместим с другими конструкциями традиционных (тогда говорили — универсальных) алгоритмических языков. Но реально он плохо взаимодействует с ними. Значит, он плох сам по себе.

Структурное программирование основано главным образом на теоретическом аппарате теории рекурсивных функций. Программа рассматривается как частично-рекурсивный оператор [ 21 ] над библиотечными подпрограммами и исходными операциями. Структурное программирование базируется также на теории доказательств, прежде всего на естественном выводе. Структура программы соответствует структуре простейшего математического рассуждения, не использующего сложных лемм и абстрактных понятий 2 На самом деле традиционным вычислительным программам соответствует не классическая, а интуиционистская логика, но структура доказательств и большинство правил вывода в них совпадают. .

Средства структурного программирования в первую очередь включаются во все языки программирования традиционного типа и во многие нетрадиционные языки. Они занимают основное место в учебных курсах программирования и в теоретических работах (например, [ 1 ] , [ 4 ] , [ 9 ] ).

При структурном программировании присваивания и локальные действия становятся органичной частью программы. Достаточно лишь внимательно следить, чтобы каждая переменная в модуле использовалась для одной конкретной цели, и не допускать «экономии», при которой ненужная в данном месте переменная временно используется под совсем другое значение . Такая «экономия» запутывает структуру информационных зависимостей, которая при данном стиле должна быть хорошо согласована со структурой программы.

Структурное программирование естественно возникает во многих классах задач, прежде всего в таких, где задача естественно расщепляется на подзадачи, а информация — на достаточно независимые структуры данных. Основной его инвариант :

действия и условия локальны.

Необходимой чертой хорошей реализации структурного стиля программирования является соблюдение согласованности, а в идеале и единства, следующих компонентов программы:

Читать еще:  История и классификация языков программирования

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

Для структурного стиля программирования требуется следующее. Задача разбивается на подзадачи, и таким образом выстраивается дерево вложенности подзадач. Информационное пространство структурируется в точном соответствии с деревом вложенности: для каждой подзадачи оно состоит из ее локальных объектов, определяемых вместе с подзадачей и для нее, и так называемых глобальных объектов, определяемых как информационное пространство непосредственно объемлющей подзадачи. Таким образом, информационное пространство всей задачи (подзадачи самого верхнего уровня) расширяется по мере перехода к подзадачам за счет их локальных объектов. Для различных дочерних подзадач одной подзадачи оно имеет общую часть — информационное пространство родительской подзадачи 3 В этой системе требований без труда распознается так называемая блочная структура языков программирования, появившаяся еще в Algol 60 и ставшая в настоящее время фактическим стандартом. .

К структурным операторам добавляются либо циклы , либо рекурсии .

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

Призраки. Часто даже сама программа не может быть объяснена через понятия, которые используются внутри нее. Еще чаще это происходит для ее связей с внешним миром. Понимание программы возможно лишь после сопоставления реальных внутрипрограммных объектов с идеальными внепрограммными. Эти идеальные внепрограммные объекты ( призраки ) часто не просто не нужны, но даже вредны для исполнения программы 4 Кстати, программистам стоит почаще вспоминать, что, с точки зрения пользователя или заказчика, их внутрипрограммные объекты как раз являются такими же призраками , которые не имеют никакого отношения к реальной действительности. Так что при переходе от уровня рассмотрения программы самой по себе к уровню программы как части архитектуры реальной человеко-машинной системы идеальные и реальные объекты порою меняются местами. .

Первым обратил внимание на необходимость введения призраков для логического и концептуального анализа программ Г. С. Цейтин в 1971 г. В Америке это «независимо» открыли заново в 1979 г., хотя упомянутая статья Цейтина была опубликована на английском языке в общедоступном издании. Даже название сущностям было дано то же самое. Этому важнейшему и традиционно игнорируемому понятию посвящена отдельная лекция в курсе «Основания программирования» [ 21 ] .

Подпорки противоположны призракам . На самом деле они являются той формой, в которой материя проникает в программу, и в этом качестве противостоят всей совокупности идеальных сущностей, порождающих структуру программы: как реальных, так и призрачных, — и порою грубо ее искажают. Но без подпорок программа просто не будет работать или будет работать неэффективно.

Для структурного программирования весьма важно требование:

Все структуры подчиняются структуре информационного пространства.

Это общее требование конкретизируется в следующие.

  1. Необходимо, чтобы структура управления программы была согласована со структурой ее информационного пространства. Каждой структуре управления соответствуют согласующиеся с ней структуры данных и часть информационного пространства. Это условие позволяет человеку легко отслеживать порядок выполнения конструкций в программе.
  2. Подзадачи могут обмениваться данными только посредством обращения к объектам из общей части их информационных пространств (в современных языках чаще всего к глобальным).
  3. Информационные потоки должны протекать согласно иерархии структур управления; мы должны четко видеть для каждого блока программы, что он имеет на входе и что дает на выходе. Таким образом, свойства каждого логически завершенного фрагмента программы должны ясно осознаваться и в идеале четко описываться в самом тексте программы и в сопровождающей ее документации 5 Как видим, программа должна составляться после того, как программист хорошенько подумал, а не до того. .
  4. Описание переменных, представляющих перерабатываемые объекты, а также других, вспомогательных переменных при структурном программировании строго подчиняется разбиению задачи на подзадачи.
  5. Все призраки действуют на своем структурном месте и соответствуют идеальным сущностям, которые, согласно парадоксу изобретателя, должны вводиться для эффективного решения задачи.
  6. Все подпорки строго локализованы в том месте, где их вынуждены ввести. Желательно даже обозначать их по-другому, чем идеальные сущности, например, оставляя мнемонические имена лишь для идеальных сущностей, а подпорки именовать джокерами типа x или i . Необходимо строго следить за тем, чтобы подпорки не искажали идеальную структуру программы.

Структурное программирование лучше всего описано теоретически, но частные описания не сведены в единую систему. Одни книги трактуют его с точки зрения программиста, другие — с точки зрения теоретика. Так что даже здесь единой системы взглядов еще нет, хотя, видимо, все основания для ее формирования уже имеются.

лабы по информатике, егэ

лабораторные работы и задачи по программированию и информатике, егэ по информатике

Python Урок 9. Работа с файлами

Python Урок 8. Матрицы (двумерный массив)

Python Урок 7. Массивы в Питоне: продолжение (алгоритмы)

Python Урок 3. Функции и процедуры

Занятие №15. Часть 2: Динамические структуры данных: стеки и очереди

Занятие №15. Часть 1: Динамические структуры данных: указатели и списки

Pascal: Занятие № 4 часть II. Графика в Паскале

Урок 4. Язык Си матрицы

Pascal: Занятие №1. Часть 1: Структура программы на языке Паскаль, компиляторы

Pascal: Занятие №1. Часть 2: Операторы WriteLn и Readln в Pascal

Уроки и лабы

группа вк

Что такое структурное программирование, и какие основные принципы присущи технологии структурного программирования? На эти вопросы ответит небольшая лекция, предвосхищающая практические уроки.

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

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

Базовые элементы структурного программирования или элементарные структуры — это следование, ветвление и цикл; композиция этих трех базовых конструкций реализовывает любой алгоритм.

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

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

Известны следующие методы структурного программирования (или методики, стратегии):

– программирование сверху вниз;

– программирование снизу вверх.

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

Данный подход позволяет человеку постоянно мыслить на предметном уровне, не вникая в уровень конкретных операторов и переменных.

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

Данная методика зачастую приводит к нежелательным результатам, необходимостью переписывать код и увеличению времени разработки; по этой причине она является менее предпочтительной.

Достоинства структурного программирования и его недостатки:

– хорошее структурирование при проектировании программы позволяет легко производить тестирование и избегать проблем при отладке; таким образом, повышая надежность программ;

– структурирование программы позволяет с легкостью находить ошибки в коде, и легко модифицировать отдельные подпрограммы независимо от других, таким образом, повышая эффективность программ;

снижается время и стоимость программной разработки;

– улучшается читабельность кода программ.

Недостатки структурного программирования проявляются при усложнении программ. Так, структурное программирование не позволяет в доста­точной степени упростить большие сложные программы. Это связано с неограниченностью доступа функций к глобальным данным и принципом разделения данных и функций.

Ссылка на основную публикацию
Adblock
detector