
- •37.Фактические и формальные параметры
- •14. Структура программы на языке с
- •42.Массивы структур
- •4 Объектно-ориентированные особенности языка
- •[Править]Описание функций в теле класса
- •[Править]Константные функции-члены
- •[Править]Наследование
- •[Править]Полиморфизм
- •30 Динамические массивы:
- •1.Структурное программирование
- •2Нисходящее проектирование
- •3.Концепция модульного программирования
- •4. Объектно-ориентированное программирование (ооп)
- •5.Case-системы
- •9 Операции отношения и логические операции
5.Case-системы
Представление о CASE - комплексах связано в нашем сознании с чем-то, не имеющим отношения к обычному программированию. В Америке из-за сильнейшей конкуренции CASE-средства используются подавляющим большинством фирм - разработчиков программного обеспечения.
Мощный толчок CASE-средства получили в пору внедрения объектно-ориентированной технологии разработки ПО, когда старого, проверенного временем метода проектирования "сверху вниз" стало явно недостаточно. К тому же появились технологии объектного моделирования Booch, OMT, UML, сами по себе весьма сложные для привязки к языкам программирования, чтобы оперировать ими вручную.
Сегодня лидирующей в мире CASE-системой считается Rational Rose корпорации Rational Software. Система Rational Rose нацелена на создание модулей с использованием языка Unified Modeling Language (UML). Кстати, UML стал стандартным языком объектно-ориентированной разработки не без подачи Rational Software, которая не только выпускает программные продукты, где используются UML, но и активно принимает участие в организации Object Management Group (OMG), занятой созданием и обновлением спецификаций языка UML, технологии распределенных вычислений CORBA и т.д.
В компании Rational работают три создателя и евангелиста объектно-ориентированной разработки и языка UML. Это Гради Буч, Айвар Джекобсон и Джим Рамбаух. Последняя версия CASE-системы компании Rational Software Rational Rose 98 успешно применяется для создания коммерческого ПО и поддерживает популярные языки программирования Java, Си++, Смолток, Ада, Visual Basic, Power Builder и Forte. Кроме того, пакет Rose 98 способен генерировать описания на языках Interface Definition Language (IDL) для приложений CORBA и Data Definition Language (DDL) для приложений доступа к базам данных, в том числе и Oracle 8. Разумеется, поддержка того или иного языка программирования зависит от того, о какой редакции пакета Rational Rose 98 идет речь.
К примеру, нельзя требовать многого от самого простого варианта пакета - Rose 98 Modeler Edition. Зато Rose 98 Enterprise Edition оснащен от души. Нельзя не отметить, что система Rose - признанный лидер среди средств визуального моделирования, и, используя ее, можно интерактивно разрабатывать архитектуру создаваемого приложения, генерировать его исходные тексты и параллельно работать над документированием разрабатываемой системы. С помощью Rational Rose можно создавать новые модели на базе обратного разбора двоичных com модулей или исходные тексты прикладных программ и библиотек классов.
Преимущества от применения Rational Rose 98 значительны:
Сокращение цикла разработки приложения.
Увеличение продуктивности работы программистов.
Улучшение потребительских качеств создаваемых программ за счет ориентации на пользователей и бизнес.
Способность вести большие проекты и группы проектов.
Возможность повторного использования уже созданного ПО за счет упора на разбор их архитектуры и компонентов.
Язык UML служит универсальным "мостиком" между разработчиками из разных отделов.
6.Dev-C++ Довольно удобная среда, занимает очень мало места на жестком диске(также можно использовать как подручную среду, например на флешке). Про нее можно сказать - ничего лишнего. Все предельно ясно и просто, самый подходящий вариант для начинающих. Но было бы неправильно не сказать, что у нее есть некоторые неприятные баги.
7 рифметические операции и их особенности в языке С. В языке С к арифметическим операциям относятся следующие операции:
- вычитание или унарный минус;
+ сложение;
* умножение;
/ деление;
% деление по модулю;
++ увеличение на единицу;
-- уменьшение на единицу;
Операции сложения, вычитания, умножения и деления действуют так же, как в большинстве алгоритмических языков программирования. операции выполняются так: сначала вычисляется значение левого выражения (операнда), затем вычисляется значение выражения, стоящего справа от знака действия. Далее, в том случае, когда операнды имеют общий тип данных, этот же тип имеет и результат. Поэтому, если применяется деление "/" к целым числам, например, 11/3, то результат тоже будет целым, то есть в данном случае 3. А выражение 1/2 в этом случае будет равно нулю. Операция "%" деление по модулю дает остаток от целочисленного деления. Она может применяться к целочисленным переменным. Теперь решим небольую задачу.
Легко увидеть, что значение x не изменилось при втором обращении к функции printf. При этом значение y увеличилось на 1. На самом же деле значене x тоже увеличилось на 1. Однако же только после выхода из функции printf. В чем же состоит различие в использовании операторов ++x c префиксной формой увеличения x и x++ с постфиксной формой увеличения x? В выражении x++ значение переменной x сначала используется и только вслед за этим оно увеличивается на 1. Напротив в выражении ++x переменная x сначала увеличивается на 1, а уж только потом ее значение используется в вычислениях. В завершение урока укажем на старшинство следующих операций:
++ и -- ;
- унарный минус;
*, /, %;
+, - .
8. Поразрядные (побитовые) операции в языке С. Поразрядные (побитовые) операции можно производить с любыми целочисленными переменными и константами. Эти действия не применимы к переменным типа float, double или long double. Результаты побитовых операций будут иметь целочисленное значение. К поразрядным операциям относятся следующие операции:
& ( или and ),
| ( или OR ),
^ ( или XOR ),
- ( или NOT ),
сдвиг влево,
сдвиг вправо.
В случае побитной операции сравниваются значения каждой пары битов. Тем самым обеспечивается доступ к битам. Эти операции находят применение в драйверах устройств, программах, связанных с принтером, модемом и другими устройствами. Когда выполняются логические операции над выражениями, то в итоге Вы получаете либо 0, либо 1. Однако в случае поразрядных операций так же выполняются логические действия, но они не имеют результатом обязательно только либо 0, либо 1. Рассмотрим примеры. 1). Пусть ch=ch & 127; Тогда, если ch='A', т.е. 11000001 и число 127 есть 01111111 В итоге будет 01000001 Если соответствующие разряды одинаковы, то в результате имеем 1, иначе имеем 0. Так работает операция "and" или логическое умножение. 2). Пусть ch=ch | 128; Тогда, если ch='A', т.е. 11000001 и число 128 есть 10000000
В итоге будет 11000001 Поразрядные операции удобны для организации хранения в сжатом виде информации о состоянии некоторых переключателей: включен/выключен (on/off). В одном байте можно хранить 8 таких флагов. 3). Пусть ch является хранилищем таких флагов. Проверить, находится ли флаг в третьем бите в состоянии On, можно следующим образом: if (ch & 4) printf("Третий бит содержит 1, состояние On"); Эта проверка основывается на двоичном представлении числа 4: 00000 100 Операции сдвига (влево или вправо) применимы только к целочисленным переменным. При этих операциях сдвигаются все биты левого операнда на число позиций, опеределенных выражением вправа от знака операции сдвига. Операции сдвига обозначаются двойными знаками: << - сдвиг влево и >> - сдвиг вправо. 4). Пусть x = 9, что в двоичном представлении имеет вид: 0000 1001 Тогда x=9<<3 есть код: 01001000; x=9>>3 есть код: 00000001; x=9>>5 есть код: 00000000; Легко заметить, что операция сдвига ведет к потере старших или младщих разрядов. Применение сдвигов << и >> к одной и той же величине может изменить значение этой переменной из-за потери разрядов. 5). Пусть беззнаковая величина unsigned char x=255; Выполним сдвиг влево на 3 разряда и затем так же сдвиг вправо на 3 разряда. Получим: x=255<<3 в двоичном коде будет иметь вид: 11111000; x=11111000>>3 в двоичном коде будет иметь вид: 00011111. 3. Операции [] и { } в языке С. В языке С круглые и квадратные скобки так же рассматриваются как операции. Причем они имеют самый наивысший приоритет. Поразрядные операции порождают еще несколько сложных операций присваивания: |=, &=, ^=, <<=, >>=.
Поразрядные операции и сдвиги
Эти операции применяются к целочисленным данным. Последние рассматриваются просто как набор отдельных битов.
При поразрядных операциях каждый бит одного операнда комбинируется (в зависимости от операции) с одноименным битом другого, давая бит результата. При единственной одноместной поразрядной операции — отрицании (~) — биты результата являются инверсией соответствующих битов ее операнда.
При сдвиге влево биты первого операнда перемещаются влево (в сторону старших битов) на заданное вторым операндом число позиций. Старшие биты, оказавшиеся за пределами разрядной сетки, теряются; справа результат дополняется нулями.
Результат сдвига вправо зависит от того, является ли операнд знаковым или без знаковым. Биты операнда перемещаются вправо на заданное число позиций. Младшие биты теряются. Если операнд — целое со знаком, производится расширение знакового бита (старшего), т. е. освободившиеся позиции принимают значение 0 в случае положительного числа и 1 — в случае отрицательного. При без знаковом операнде старшие биты заполняются нулями.
Сдвиг влево эквивалентен умножению на соответствующую степень двойки, сдвиг вправо — делению. Например,
aNumber = aNumber <<4;
умножает aNumber на 16.
Инкремент и декремент
Операции инкремента (++) и декремента (--) соответственно увеличивают или уменьшают свой операнд (обязательно переменную) на единицу. Они изменяют значение самой переменной, т. е. являются скрытыми присваиваниями. Иногда эти операции применяют в качестве самостоятельного оператора:
i++; или ++i;
И то и другое эквивалентно
i = i + 1;
Но эти операции могут использоваться и в выражениях:
sum - sum + х * --i;
Инкремент и декремент реализуются в двух формах: префиксной (++i) и постфиксной (i--). Префиксные операции выполняются перед тем, как будет производиться оценка всего выражения. Все постфиксные операции выполняются уже после оценки выражения, в которое они входят.
Рассматривая какой-либо трёхмерный объект, мы всегда определяем его положение и размеры относительно некоторой привычной, и удобной в настоящий момент системы координат, связанной с реальным миром. Такая исходная система координат в компьютерной графике называется мировой системой координат.