|
Программирование >> Арифметические и логические операции
арифметические, логические операции Автором языка C++ является Бъерн Страуструп, сотрудник известной фирмы AT&T. C++ (а точнее, его предшественник, С with classes) был создан под влиянием Simula (надо сказать, что этот язык программирования появился еще в 1967 году). Собственно, к тому моменту (когда появлялся C++), С уже заработал себе популярность; обычно, его очень уважают за возможность использовать возможности конкретной архитектуры, при этом все еще используя язык относительно высокого уровня. Правда, обычно, именно за это его и не любят. Конечно же, при этом терялись (или извращались) некоторые положения построения программ; например, в С фактически отсутствует возможность создавать модульные программы. Нет, их конечно же создают, но при помощи некоторых костылей в виде использования директив препроцессора - такой модульности, как, например в Modula-2 или Ada, в С нет. Кстати сказать, этого нет до сих пор и в C++. С самого начала подчеркивалось то, что C++ - развитие языка Си, возможно, некоторый его диалект. Об этом говорит тот факт, что первым компилятором (существующим до сих пор) являлся cfront, который занимался тем, что переводил исходный текст на C++ в исходный текст на Си. Это мнение бытует до сих пор и, надо сказать, до сих пор оно является небезосновательным; тем не менее, С и C++ - разные языки программирования. Основное отличие C++, когда он только появлялся, была явная поддержка объектно-ориентированного подхода к программированию. Надо понимать, что программировать с использованием ООП и ООА можно где угодно, даже если инструментарий явно его не поддерживает; в качестве примера можно взять библиотеку пользовательского интер- фейса GTK+, которая написана на чистом С и использованием принципов объектно-ориентированного дизайна . Введение в язык программирования средств для поддержки ООП означает то, что на стадии компиляции (а не на стадии выполнения программы) будет производится проверка совместимости типов, наличия методов и т.п. В принципе, это достаточно удобно. Опять же, точно так же как и С не является в чистом виде языком программирования высокого уровня (из-за того, что позволяет выполнить слишком много трюков), C++, строго говоря, не является объектно-ориентированным языком программирования. Мешают этому такие его особенности, как наличие виртуальных функций (потому что при разговоре о полиморфизме никто никогда не оговаривает того, что некоторые методы будут участвовать в нем, а некоторые - нет), присутствие до сих пор функции main() и т.п. Кроме того, в C++ нет таких сущностей, как, например, метаклассы (хотя они, наверное, не так уж сильно и нужны) и интерфейсы (вместо них используется множественное наследование). Тем не менее, C++ на текущий момент один из самых популярных (если не самый популярный) язык программирования. Почему? Да потому что все эти уродства позволяют в итоге написать программу с использованием объектно-ориентированных подходов (а программы, которые этого требуют, обычно очень большие) и при этом достаточно быструю . Этому способствует именно наличие виртуальных функций (т.е., то, что программист сам разделяет еще во время проектирования, где ему понадобится полиморфизм, а где будет достаточно объединить некоторые функции в группу по некоторому признаку), обязательное наличие оптимизатора и прочее. Все это позволяет при грамотном использовании все-таки написать работающую программу. Правда, достаточно часто встречаются примеры неграмотного использования, в результате чего выбор C+ + для реализации проекта превращается в пытку для программистов и руководства. На текущий момент на язык программирования C++ существует стандарт, в который включена, помимо прочего, стандартная библиотека шаблонов. О шаблонах разговор особый, формально они тоже являются костылями для того, чтобы сделать, так сказать, полиморфизм на стадии компиляции (и в этом качестве очень полезны), а вот библиотека - бесспорно правильное со всех сторон новшество. Наличие, наконец-то, стандартных способов переносимо (имеется в виду, с компилятора на компилятор) отсортировать список (кроме написания всех соответствующих подпрограмм и структур данных самостоятельно) очень сильно облегчило жизнь программиста. Правда, до сих пор очень много людей плохо себе представляют как устроена STL и как ей пользоваться (кроме std::cin и std::cout). Часть 1. Введение в язык программирования С++ Важной вехой в развитии программирования явилось создание и широкое распространение языка С++. Этот язык, сохранив средства ставшего общепризнанным стандартом для написания системных и прикладных программ языка С (процедурно-ориентированный язык), ввел в практику программирования возможности нового технологического подхода к разработке программного обеспечения, получившего название объектно-ориентированное программирование . Язык программирования C++ - это C*, расширенный введением классов, inline-функций, перегруженных операций, перегруженных имен функций, константных типов, ссылок, операций управления свободной памятью, проверки параметров функций. Внедрение в практику написания программ объектно-ориентированной парадигмы дает развитие новых областей информатики, значительное повышение уровня технологичности создаваемых программных средств, сокращение затрат на разработку и сопровождение программ, их повторное использование, вовлечение в процесс расширения интеллектуальных возможностей ЭВМ. Объектный подход информационного моделирования предметных областей все более успешно применяется в качестве основы для структуризации их информационных отражений и, в частности, баз знаний. С++ является языком программирования общего назначения. Именно этот язык хорошо известен своей эффективностью, экономичностью, и переносимостью. Указанные преимущества С++ обеспечивают хорошее качество разработки почти любого вида программного продукта. Использование С++ в качестве инструментального языка позволяет получать быстрые и компактные программы. Во многих случаях программы, написанные на С++, сравнимы по скорости с программами, написанными на языке ассемблера. Перечислим некоторые существенные особенности языка С++: ♦ С++ обеспечивает полный набор операторов структурного программирования; ♦ С++ предлагает необычно большой набор операций; ♦ Многие операции С++ соответствуют машинным командам и поэтому допускают прямую трансляцию в машинный код; ♦ Разнообразие операций позволяет выбирать их различные наборы для минимизации результирующего кода; ♦ С++ поддерживает указатели на переменные и функции; ♦ Указатель на объект программы соответствует машинному адресу этого объекта; ♦ Посредством разумного использования указателей можно создавать эффективно выполняемые программы, т.к. указатели позволяют ссылаться на объекты тем же самым путем, как это делает ЭВМ; ♦ С++ поддерживает арифметику указателей, и тем самым позволяет осуществлять непосредственный доступ и манипуляции с адресами памяти. Глава 2. Лексика Есть шесть классов лексем: идентификаторы, ключевые слова, константы, строки, операторы и прочие разделители. Символы пробела, табуляции и новой строки, а также комментарии (собирательно - белые места ), как описано ниже, игнорируются, за исключением тех случаев, когда они служат разделителями лексем. Некое пустое место необходимо для разделения идентификаторов, ключевых слов и констант, которые в противном случае окажутся соприкасающимися. Если входной поток разобран на лексемы до данного символа, принимается, что следующая лексема содержит наиболее длинную строку символов из тех, что могут составить лексему. Комментарии Символы /* задают начало комментария, заканчивающегося символами */. Комментарии не могут быть вложенными. Символы начинают комментарий, который заканчивается в конце строки, на которой они появились. Идентификаторы (имена) Идентификатор - последовательность букв и цифр произвольной длины; первый символ обязан быть буквой; подчерксчитается за букву; буквы в верхнем и нижнем регистрах являются различными. Ключевые слова Следующие идентификаторы зарезервированы для использова-
Идентификаторы signed и volatile зарезервированы для применения в будущем. Константы Есть несколько видов констант. Ниже приводится краткая сводка аппаратных характеристик, которые влияют на их размеры. Целые константы Целая константа, состоящая из последовательности цифр, считается восьмеричной, если она начинается с 0 (цифры ноль), и десятичной в противном случае. Цифры 8 и 9 не являются восьмеричными цифрами. Последовательность цифр, которой предшествует 0х или 0Х, воспринимается как шестнадцатеричное целое. В шестнадцатеричные цифры входят буквы от а или А до f или F, имеющие значения от 10 до 15. Десятичная константа, значение которой превышает наибольшее машинное целое со знаком, считается длинной (long); восьмеричная и шестнадцатеричная константа, значение которой превышает наиболь-
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.004
При копировании материалов приветствуются ссылки. |