Программирование на C и C++

Онлайн справочник программиста на C и C++

Структурированный язык

Хотя термин структурированный язык не применим напрямую к С, С часто называют структурированным языком, поскольку он структурно схож с Алголом, Паскалем и Модулой-2. (Структурированный язык позволяет объявлять процедуры или функции внутри других процедур или функций. Таким образом, концепции глобальности и локальности расширяются с использованием дополнительных правил видимости, управляющих видимостью переменных или процедур. Поскольку С не позволяет создавать функции внутри функции, он не является полностью структурированным языком.)

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

Структурированный язык предоставляет множество возможностей программирования. Он поддерживает несколько типов циклов, таких как while, do-while и for. В структурированном языке использование goto нежелательно. Структурированный язык не требует концепции строгих полей. Ниже приведено несколько примеров структурированных и неструктурированных языков:

 

Структурированные Неструктурированные
Паскаль Фортран
Ада Бейсик
С++ COBOL
С  
Модула-2  

 

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

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

Другим способом структуризации и разделения кода С является использование блоков кода. Блок кода — это группа логически связанных операторов, которая воспринимается как модуль. В С блок кода создается путем помещения последовательности операторов в фигурные скобки. Например

if (х<10) {
printf("мало, попробуйте еще раз");
reset_counter (-1);
}

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