Г. Шилдт - Полный справочник по C++ (1109478), страница 6
Текст из файла (страница 6)
Некоторые языки программирования содержат в несколько раз больше ключевых слов. Скажем, самые распространенные версии языка ВА51С предусматривают более 100 таких слов! С вЂ” структурированный язык Возможно, вы уже слышали словосочетание блочна-структурированныи (Ыос)гыгцсшгед) по отношению к языку программирования.
Хотя этот термин нельзя напрямую применять к языку С, его обычно тоже называют структурированным. Он имеет много обшего с другими структурированными языкзми, такими как АЕОО)., Рааса) и Мог)ц)а-2. Язык С (как и С++) не считается блочно.структурирсванньгм, поскольку не позволяет объявлять одну функции внутри других.
Отличительной особенностью структурированных языков является обособление кода и данных (соглрапгпепга1(хаг(оп). Оно позволяет выделять и скрывать от остальной части программы данные и инструкции, необходимыс для решения конкретной задачи. Этого можно достичь с помощью подпрограмм (зцЬгоцйпез), в которых используются локальныс (временные) псремснныс. Используя локальные переменные, можно создавать подпрограммы, нс порождаюшис побочных эффектов в других модулях.
Это облегчает координацию модулей межлу собой. Если программа разделена на обособленные функции, нужно лишь знать, что лелает та или иная функция, не интересуясь, как именно она выполняет свою задачу. Помните, что чрезмерное использование глобальных переменных (которые доступны в любом месте программы) повышае~ вероятность ошибок и нежелательных побочных эффектов. (Кажаый программист, работавший на языке ВА$1С, хорошо знает эту проблему.) Концепция обособления игирско примвняепкя в языке С++. В частнсспги, кеж- ,'ЩЩЩЦ дая часгпь проараммы, написанной на этом языке, может чвгпко упрввлягпь досгпулсм к нвй из других модулей.
Структурные языки предоставляют широкий спектр возможностей. Они допускают использование вложенных циклов, например м)гхЗе, до-мтзХЗ.в и йок. Часть 1. Основы языка С++: подмножество С В структурированных языках использование оператора яоео либо запрещено, либо нежелательно и нс включается в набор основных средств управлшгия потоком выполнения программы (как это принято в стандарте языка ВЫ!С и в традиционном языке РОКТКАГч). Структурированные языки позволяют размешать несколько инструкций программы в одной строке и нс ограничивают программиста жесткими полями для ввода команд (как это делалось в старых версиях языка РОКТКА(х().
Рассмотрим несколько примеров структурированных и неструктурированных языков (табл. ! .2). Таблица 1.2. Струят((рированные и неструктурированные языки программирования Нес трухтуряре ванные РОР(Тг(АЫ ВАЗ(С СОВО!. Рааса! Ада дача Се с++ С Моди(а-2 Структурированные языки считаются более современными. В настоящее время неструктурированность является признаком устаревших языков программирования, и лишь немногие программисты выбирают их для созлания серьезных приложспий.
~ Новые версии старых язьхее программирования (например Кзиа! Ваэ(с) вкпю(Я~Щ~~ЩД чают эпеменгпы струкгпурираеанесгпи, И все же врожденные недсствгпхи этих языков вряд пи будут до конца исправлены, поскольку структурированность не закладывалась в их основу с самого начала. г г 11 (х< 10! ( рх1псх("Слишком мало, попробуйте снова. 1п"г есапх("Зд", Ьх!г Два оператора, расположенных внутри фигурных скобок, выполняются, если значение персмсннои х меньше 10. Эти два оператора вместе с фигурными скобками образуют блок. Блок — зто логическая единица, поскольку оба оператора обязательно должны быть выполнены.
Блоки позволяют ясно, элегантно и эффективно реализовывать различные алгоритмы. Более того, они помогают программисту лучше выразить природу алгоритма. Глава 1. Обзор языка С Основным структурным элементом языка С является функция. Именно функции служаз. строительными блоками, из которых создается программа. Они позволяют разбивать программу на модули, решающие отдельные задачи. Создав функцию, можно нс беспокоиться о побочных эффектах, которые она вызовет в других частях программы.
Способность создавать отдельные функции чрезвычайна важна при реализации больших проектов, в которых олин фрагмент кода не должен взаимолеиствовать с другими частями программы непредсказуемым образом. Другой способ структурирования и обособления программы, написанной на языке С, — блоки. Блок (соде Ыос(г) — зто группа операторов, логически связанных мсжлу собой, и рассматриваемых как единое целое. В языке С блок можно создать с помощью фигурных скобок, ограничивающих последовательность операторов. Вот типичный пример блока. ~~'-':- С вЂ” язык для программистов Как ии страгшо, це все языки программирования предназначены для программистов. Рассмотрим классические примеры языков, ориентированных ие иа программистов, — СОВО).
и ВАВ)С. Язык СОВО!. был разработан вовсе пе для того, побы облегчить участь программистов, улучшить ясность кола и повысить его надежность, и даже пс для того, чтобы ускорить выполнение программ. Оы был создан, в частности, для того, чтобы люли, ие являюшиеся программистами, могли читать и (по возможности) понимать (хотя это вряд ли) написанные па ием программы.
В свою очередь, язык ВЛб)С был разработан для пользователей, которые решают на компьютере простые залачки. В противоположность этому, язык С был созлаи для программистов. учитывал их интересы и многократно проверялся ца практикс, прежде чем был окопчшелыю реализоаап. В итоге этот язык даст программисзам именно то, чего оии желали: сравнительно исбольшос количесгво ограничений, минимум претензий, блочпыс структуры, изолированные функции и компактцыи набор ключевых слов. Язык С обладает эффекзивиостью ассемблера и структурироваииостыо языков Л!.ОО). или Мог)ц!а-2. Г!оэтому неудивительно, что именно языки С и С++ стали наиболее популярными среди профессиональных программистов высокого уровня.
Тот факт, что язык С часто используют вместо ассемблера, является одной из основных причип сто популярности. Язык ассемблера использует символьное представление фактического двоичного кода, ко~орый непосредственно выполняется компьютером. Каждая операция, выраженная иа языке ассемблера, представляет собой отдельную задачу, выполняемую компьютером.
Хотя язык ассемблера предоставляет программисту наибольшую гибкость, разрабатывать и отлаживать програмл1ы па псм довольно сложно. Кроме того, поскольку язык ассемблера является неструктурированным, код напоминает спагетти — запутанную смесь переходов, вызовов и иидексов. Вследствие этого программы, написанные иа языкс ассемблера, зрудио читать, модифицировать и эксплуатировать. Вероятно, основным недостатком программ иа языке ассемблера является их машииозависимость.
Программа, предназначенная для конкретного центрального процессора, ие может выполняться на компьютерах другого типа. Изначально язык С предназначался для системного программирования. Снпяемная программа (зугдеш ргоягагп) представляет собой час~ь операционной системы или является однои из ее утили~. Рассмотрим некоторые из пих. ° Операционные системы ° Интерпретаторы ° Редакторы ° Компиляторы ° Файловые утилиты ° Оптимизаторы ° Диспетчеры реального врсмсии ° Драйверы По мере роста популярности языка С многие программисты стали применять его для программирования всех задач, используя его машипоиезависимость и эффективность, а кроме того, ои им просто нравился! К моменту появления языка С языки Часть !.
Основы языка С+И подмножество С программирования прошли сложный и трудный путь совершенствования. Разумеется, вновь созданный язык вобрал в себя все лучшее. С появлением языка С++ некоторыс программисты посчитали, что язык С потеряет самостоятельность и сойдет со сцены. Однако этого не произошло. Во-первых, нс все программы должны быть объектно-ориентированными. Например, программное обеспечение встроенных систем по-прежнему создается на языке С. Во-вторых, сушествует огромное множество программ на языке С, которые активно эксплуатируются и нуждаются в модификации. Поскольку язык С является основной языка С++„ он продолжает широко испсльзовап ся, имея блестяшие перспективы. В табл. ).3 перечислены 32 ключевых слова, которые используются при Формировании синтаксиса языка С, станларта С89 и подмножества С языка С++.
Все они, конечно, являются и ключевыми словами языка С++. Всивзе етве васа евьвгп аиес Ьсеан саве сЬак савве ссае1сие сееввХЬ 1 сев евс1веек квеахп вьете вьясой в1весе вевезс осев 1Е Кроме того, многие компиляторы лля более эффективного использования среды программирования вносят в язык С лополнительцые ключевые слова. Например, некоторыс компиляторы предусматривают ключевые слова лля управления памятью процессоров семейства 8086, поллержки многоязычного программирования и доступа к системным прерываниям. Перечислим некоторые из этих расширеш~ых ключевых слов. авгв ьпевзкире етв заз равса1 св ссес1 пеак Ваш компилятор может изменить этот список, стремясь наиболсс эффективно использовать конкретную среду программирования.
Обратите внимание на то, что вес ключевые слова набраны строчными буквами. Язык С/С++ ч)жплвипгелен к регистру (сазе зепяг)те), т.е. прописные и строчные буквы в нем различюотся. Это значит, что слово е1ве является ключевым, а слово кьвк — пот Ключевые слова нельзя использовать в программе лля иных целей, например, в качестве имени переменной или функции. Все программы на языке С состоьп из одной или нескольких функций.
В любом случае программа лолжна солержать Функцию пвзп(), которая при выполнении программы вызывается первой. В хорошо написанном коде функция та1п1) должна содержать, по сушсству„схему работы асей программы. Несмотря на то что имя таьпО нс включено в список ключевых слов, по своей природе оно является именно таковым. Скажем, назвать переменную именем па1п нельзя, так как компилятор сразу выласт сообшение об ошибке Глава Ь Обзор языка С ~1 Структура программы на языке С Таблица КЗ. Ключевые слова подмножества С языка О-)+ весвсе 1ссЬ взревев ис1ас иав1впас тсьс вс1ав11е мЬ1 1 а Общий вид программы на языке С показан в листинге !.!. Функции с именами Еъ(), ..., еи<) определяюзся пользователем. Листинг 1 г.