🏅1. История языка Cи. Основные идеи. Принципы структурного программирования.

История языка Си

Был разработан в 1972 году Деннисом Ритчи. Первоначально создавался для реализации ОС UNIX, но впоследствии, был перенесен на множество других платформ. Си оказал существенное влияние на индустрию ПО. Так, например, его синтаксис стал основой для C++, C#, Java.

Основные идеи

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

Парадигма языка C (Си) - процедурное программирование (программа организуется в виде набора процедур или функций, которые выполняют определенные операции. В процедурном программировании основное внимание уделяется последовательности шагов для достижения определенного результата.)

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

Структурное программирование является подмножеством процедурного программирования.

Принципы/идеи:

  • Нисходящая разработка (от общего к частному)

  • Использование базовых логических структур

  • Сквозной структурный контроль

Структурный подход использует алгоритмическую декомпозицию - разбиение задач на подзадачи по действию

Этапы разработки ПО:

  1. Анализ

  2. Проектирование

  3. Кодирование

  4. Тестирование

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

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

В принципе эволюция ЯП происходит из-за сложности и плохой читаемости кода, а также возрастания сложности решаемых на компьютере задач, и, соответственно, усложнения ПО. Эволюция: двоичный код->ассемблер->первые языки (Лисп, Кобол, Фортран), с которыми было неудобно работать из-за полного отсутствия структуры. Тогда Дейкстра выкатывает принципы структурного программирования, по которым были созданы такие языки, как Паскаль, Алгол, Си.

Три основные парадигмы: структурное, объектно-ориентированное и функциональное. Структурное было открыто в 1968 году, когда Дейкстра понял, что GOTO - это зло, и программы должны строиться из трех базовых конструкций (последовательность, ветвления и цикл). Парадигма структурного программирования появилась как следствие возрастания сложности решаемых на компьютерах задач, и соответственно, усложнения программного обеспечения. В 1970-е годы объёмы и сложность программ достигли такого уровня, что традиционная (неструктурированная) разработка программ перестала удовлетворять потребностям практики. Программы становились слишком сложными, чтобы их можно было нормально сопровождать. Поэтому потребовалась систематизация процесса разработки и структуры программ.

Принципы структурного программирования по Дейкстре:

  1. Отказ от goto(оператор безусловного перехода)

  2. Любая программа может быть представлен использованием трёх базовых управляющих конструкции с (последовательность, ветвление, циклы)

  3. Повторяющиеся фрагменты оформляются в виде подпрограммы

  4. Все перечисленные конструкции имеют один выход (1 return)

  5. Разработка ведется «сверху - вниз»

  6. Каждая логически законченная структура оформляется в блок

  7. Базовые конструкции могут быть вложены друг в друга

Базовые логические структуры:

  • Линейные (следование) - все команды выполняются последовательно одна за другой

  • Разветвленные (ветвление) -в зависимости от условия выполняется либо одна, либо другая последовательность действий

  1. Отсутствие развилок - последовательно

  2. Выбор из двух альтернатив - if

  3. Множественный выбор из нескольких альтернатив - switch

  • Циклические (цикл) - выполнение одного или нескольких действий в случае истинности одного или нескольких условий

  1. Цикл с предусловием ("пока") - while

  2. Цикл с постусловием ("до") - do-while

  3. Цикл с известным количеством повторений ("для") - for

  4. Цикл без условия (бесконечный) - while(1) , for(;;)

При разработке модуля необходимо –

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

2. Ограничивать размеры модуля

3. Стремиться использовать простые и наиболее используемые алгоритмы

4. Ограничивать глубину вложенности функций.

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

Last updated