1. История языка Cи. Основные идеи. Принципы структурного программирования.
История языка Си
Был разработан в 1972 году Деннисом Ритчи. Первоначально создавался для реализации ОС UNIX, но впоследствии, был перенесен на множество других платформ. Си оказал существенное влияние на индустрию ПО. Так, например, его синтаксис стал основой для C++, C#, Java.
Основные идеи
C (Си) разрабатывался как язык, для которого можно создать . Стандартная библиотека невелика. Следовательно - компиляторы разрабатываются сравнительно легко, поэтому данный язык доступен на самых различных платформах.
Парадигма языка C (Си) - процедурное программирование (программа организуется в виде набора процедур или функций, которые выполняют определенные операции. В процедурном программировании основное внимание уделяется последовательности шагов для достижения определенного результата.)
Принципы структурного программирования
Структурное программирование является подмножеством процедурного программирования.
Принципы/идеи:
Нисходящая разработка (от общего к частному)
Использование базовых логических структур
Сквозной структурный контроль
Структурный подход использует алгоритмическую декомпозицию - разбиение задач на подзадачи по действию
Этапы разработки ПО:
Анализ
Проектирование
Кодирование
Тестирование
В принципе эволюция ЯП происходит из-за сложности и плохой читаемости кода, а также возрастания сложности решаемых на компьютере задач, и, соответственно, усложнения ПО. Эволюция: двоичный код->ассемблер->первые языки (Лисп, Кобол, Фортран), с которыми было неудобно работать из-за полного отсутствия структуры. Тогда Дейкстра выкатывает принципы структурного программирования, по которым были созданы такие языки, как Паскаль, Алгол, Си.
Принципы структурного программирования по Дейкстре:
Отказ от goto(оператор безусловного перехода)
Любая программа может быть представлен использованием трёх базовых управляющих конструкции с (последовательность, ветвление, циклы)
Повторяющиеся фрагменты оформляются в виде подпрограммы
Все перечисленные конструкции имеют один выход (1 return)
Разработка ведется «сверху - вниз»
Каждая логически законченная структура оформляется в блок
Базовые конструкции могут быть вложены друг в друга
Базовые логические структуры:
Линейные (следование) - все команды выполняются последовательно одна за другой
Разветвленные (ветвление) -в зависимости от условия выполняется либо одна, либо другая последовательность действий
Отсутствие развилок - последовательно
Выбор из двух альтернатив - if
Множественный выбор из нескольких альтернатив - switch
Циклические (цикл) - выполнение одного или нескольких действий в случае истинности одного или нескольких условий
Цикл с предусловием ("пока") - while
Цикл с постусловием ("до") - do-while
Цикл с известным количеством повторений ("для") - for
Цикл без условия (бесконечный) - while(1) , for(;;)
1. Все данные передавать в модуль только явно через список параметров
2. Ограничивать размеры модуля
3. Стремиться использовать простые и наиболее используемые алгоритмы
4. Ограничивать глубину вложенности функций.
Логическая структура любого алгоритма может быть представлена комбинацией трех базовых структур: следование, ветвление и цикл. Характерной особенностью базовых структур является наличие в них одного входа и одного выхода
Last updated