- •1.2. Правила записи программ на языке с
- •1.3 Правила формального описания синтаксиса языка программирования
- •1.5.3. Описание данных в языке с
- •1.5.4 Правила записи констант различных типов
- •1.5.5. Символьные строки
- •Глава 2. Понятие функции
- •2.1. Стандартная функция printf
- •2.2. Стандартная функция scanf
- •Перед каждым аргументом, не являющимся строкой (адресом) ставится знак & и трактуется как вычисление адреса.
- •2.3. Стандартные математические функции
- •2.4. Простейшие функции, определяемые программистом
- •3.5. Дополнительные арифметические операции
- •3.6. Дополнительные операции присваивания
- •3.7. Битовые операции
- •3.8. Операторы отношения
- •Глава 4. Структурное программирование и язык с
- •4.2. Операторы языка с
- •4.3. Оператор цикла while
- •4.4. Оператор цикла do – while (цикл с постусловием)
- •4.5. Условный оператор и условная операция
- •4.6. Оператор цикла for (цикл с известным числом повторений)
- •4.7. Запись алгоритмов при помощи диаграмм Несси-Шнейдермана
- •4.8. Оператор прерывания цикла
- •4.9. Оператор продолжения цикла (continue)
- •4.10. Множественный выбор
- •Глава 5. Типовые приемы в программировании
- •5.1. Использование счетчиков
- •5.2. Вычисление суммы и произведения.
- •5.3. Вычисление минимума и максимума последовательностей.
- •5.4. Использование флагов
- •Глава 6. Простейшая графика
- •6.1.Графические режимы
- •6.2. Идеология bgi и WinBgi
- •6.3.Основные графические функции
- •6.3.1. Управление графическими режимами
- •6.3.2. Графические примитивы
- •6.3.3. Установки и их проверка
- •6.3.4. Работа с текстом
- •Глава 7. Модульное программирование
- •7.2. Библиотеки функций
- •Глава 8. Массивы
- •8.1. Описание массива
- •8.2. Ввод – вывод массивов
- •8.3. Инициализация массива
- •8.6. Двумерные массивы
- •8.6.1. Инициализация двумерного массива
- •8.7. Многомерные массивы
- •Глава 9. Работа с файлами
- •9.1. Открытие и закрытие файлов
- •Глава 10. Структуры языка с
- •10.1. Описание структур
- •10.2. Трактовка имени структуры
- •10.2.1. Доступ к полям структуры
- •10.3. Инициализация структур
- •10.4. Структуры и функции
- •10.5. Поля бит в структурах
- •10.6. Объединение
- •Глава 11. Дополнительные сведения о функциях
- •11.1. Области видимости.
- •Глава 12. Анимация
- •Глава 13. Рекурсия
- •13.1. Понятие рекурсии
- •13.2. Вычисление факториала
- •13.3. Числа Фибоначчи
- •13.4. Замена итерационных алгоритмов рекурсивными
- •13.5. Применение рекурсии в графике
3.6. Дополнительные операции присваивания
a=a+n; это a+=n
+=
-=
/=
*=
3.7. Битовые операции
~ - побитовое отрицание
& - побитовое И
^ - побитовое исключающее ИЛИ
| - побитовое ИЛИ
Оп1 |
Оп2 |
~оп1 |
Оп1&Оп2 |
|
|
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
char a,b;
a=9;
b=a|26; //9-0001001 26-00011010 00001011
//Операция применяется к каждой паре битов
С помощью побитового I обнулим
a=45;
b=a&0x0f;
Также выполняют операции побитового сдвига: << -влево >>-вправо
a<<2 //все его биты будут сдвинуты влево, лишняя часть теряется, а недостающие биты замещаются нулями
С операциями побитового сдвига также имеются дополнительные операции присваивания. Это не только относится к операциям сдвига, но и ко всем побитовым операциям.
3.8. Операторы отношения
>
<
>=
<=
! - не равно
= = - проверка на равенство
В языке С любое значение, не равное нулю считается истиной. Обычно оно целого типа, но не обязательно. Ложью является ноль. Таким образом, значением операции отношения является целое число, которое равно нулю, если записанное выражение неверно и отлично от нуля, если это правда. Отличное обычно 1, но не всегда так.
1<x<10
Операция выполняется слева направо, приоритет одинаковый, сначала буде выполнена 1 часть. х=5, первая часть будет истина. И вторая часть тоже 1. Надо записать так:
(1<x)&&(x<10)
3.9. Логические операции
Для выполнения сложных условия используется:
&& - логическое И
|| - логическое ИЛИ
! – логическое НЕ
3.10. Операции определения размера данных
В некоторых случаях бывает необходимо узнать, сколько в памяти занимают те или иные данные:
БНФ
операция_определения_размера_данных = “sizeof(“тип”)” |(“sizeof”(“значение”)
int a;
int b;
b=size of (“b”);
Результат операции – целое число количество байтов, занимаемых типов или значений.
3.11. Приоритеты операций (дома)
Программист может в случае сомнений или для изменения порядка вычисления использовать скобки.
Глава 4. Структурное программирование и язык с
4.1. Понятие структурного программирования
В связи с усложнением программных проектов и увеличением числа ошибок, программисты всерьез задумались о способах облегчения программирования. Рост ошибок происходит не линейно, а по взрывному.
Одним из принципов структурного подхода является принцип пошаговой декомпозиции (разделяй и властвуй). Это подразумевает выделение в задаче подзадач, а в каждой из этих подзадач еще можно выделить подзадачи.
С помощью переходов можно организовать последовательные циклы, вложенные и неструктурированные (значительно затрудняют понимание программы и внесение изменений.
В 70-х годах были сформулированы принципы структурного программирования. Одним из ярчайших проявлений является отказ от отсутствия от переходов GOTO.
Можно сформулировать, что в структурном программировании доказано, что любой алгоритм вычислительной сложности может быть организован с помощью 3 структур:
следование (выполнение операторов последовательно в том порядке , в котором они записаны)
ветвление (структура выбора; в зависимости от условия выбирается одна или другая ветвь программирования)
повторения (повторяющиеся действия или циклы)
при условии механизма вызова функции без применения перехода GOTO