- •Базовые понятия информатики. Понятие «Информатика» и «Информация»
- •Информация
- •Информационные технологии
- •Понятие алгоритма. Свойства и классы алгоритмов. Формы представления алгоритмов
- •Понятие алгоритма. Базовые алгоритмические структуры
- •Представление данных в памяти персонального компьютера.
- •Принципы обработки программных кодов
- •Компиляторы
- •Интерпретатор
- •Язык с. История развития. Основные свойства языка
- •Отличительные особенности языкаC
- •Элементы языка c
- •Константы
- •Базовые типы данных
- •Директива #include
- •Использование void
- •Инструкция return
- •Описание переменных
- •Обработка данных. Операторы
- •Арифметические операторы
- •Приоритет операторов и порядок вычислений
- •Используемые алгоритмы обработки данных
- •Аккумуляторы
- •Преобразования типов данных
- •Декларации и дефиниции функций
- •Формальные и фактические параметры. Вызов функций
- •Возврат функцией значений
- •Переменные в функциях
- •Автоматические (локальные) переменные
- •Внешние (глобальные) переменные
- •Статические переменные
- •Передача параметров по значению
- •Передача параметров по ссылке
- •Значения параметров по умолчанию
- •Перегрузка функций
- •Рекурсия
- •Встроенные функции
- •Обработка символьных данных
- •Функция puts()
- •Функция putchar()
- •Функция printf()
- •Выбор правильных средств вывода информации
- •Функция gets()
- •Функция getchar()
- •Функция scanf()
- •Выбор соответствующих средств ввода данных
- •Управляющие структуры Структуры выбора (if / else)
- •Структуры выбора (switch/case/default)
- •Структуры повторения (циклы)
- •Использование цикла for
- •Использование цикла do...While (постусловие)
- •Использование цикла while (предусловие)
- •Операторы передачи управления Оператор безусловного перехода goto
- •Оператор break
- •Оператор continue
- •Препроцессор языка Си
- •Массивы Объявление переменной массива
- •Использование индексной переменной
- •Инициализация массива при объявлении
- •Передача массивов в функции
- •Использование констант при объявлении массивов
- •Символьные строки
- •Массивы строк
- •Алгоритмы сортировки массива
- •Поиск заданного элемента в массиве
- •Указатели
- •Объявление указателя
- •Указатели на массивы
- •Операции над указателями
- •Указатели на строку
- •Указатели на функцию
- •Функции, возвращающие указатель
- •Указатели на многомерные массивы
- •Массивы указателей
- •Динамическое распределение памяти
- •Структуры данных
- •Реализация одних структур на базе других
- •Очередь
- •Операции над очередями
- •Операции над стеками
- •Ссылочные реализации структур данных
- •Операции над списками
Используемые алгоритмы обработки данных
Некоторые часто используемые алгоритмы обработки данных содержат арифметические операторы. Многие из них применяются настолько часто, что программисты даже не думают о них как об алгоритмах. Два наиболее важных из них называются «счетчиком» и «аккумулятором».
Счетчики
Счетчик — это переменная, которая увеличивает свое значение на единицу каждый раз, когда происходит определенное событие. Алгоритм счетчика таков:
variable = variable + 1
Компьютер сначала вычислит значение в правой части, а потом присвоит полученное значение переменной в левой части. Таким образом, одна и та же переменная никогда не будет иметь два значения одновременно. С точки зрения компьютера, смысл выражения можно передать так:
Новое значение переменной равно старому значению плюс 1
Давайте проследим за работой алгоритма счетчика. У нас есть переменная count, которой присвоено начальное значение, равное нулю:
intcount;
count=0;
Теперь вступает в действие алгоритм
count = count + 1;
Компьютер выполняет эту инструкцию так:
count = 0 + 1
К начальному значению переменной count, которое равно 0, добавлен литерал, имеющий значение 1. В результате вычислений получено значение 1, которое теперь присваивается переменной count. Значение переменной изменяется с 0 на1. Затем та же процедура повторяется снова:
count = count + 1;
С каждым новым выполнением этой операции, значение переменной count возрастает на единицу (инкремент). Разумеется, можно присвоить переменной любое начальное значение и увеличивать его на любое отличное от единицы число.
Чтобы считать в сторону уменьшения, достаточно слегка изменить алгоритм:
variable = variable – 1
Теперь при каждом выполнении операции значение переменной будет уменьшаться на единицу (декремент).
Счетчики используют настолько часто, что в языке Си существуют специальные операторы инкремента и декремента переменной. Оператор ++variable увеличивает значение переменной на единицу еще до выполнения соответствующей инструкции. Оператор выполняет то же действие, что и инструкция
variable = variable + 1;
Использование оператора инкремента позволяет увеличить значение переменной без введения в текст программы отдельной инструкции присваивания.
Необходимо помнить, что оператор инкремента реально изменяет значение переменной. Проверьте, понимаете ли вы разницу между оператором инкремента ++count и выражением, приведенным в следующей строке:
printf("Второе значение переменной
countравно %d\n",count+1);
Выражение count+1 не изменяет значения, присвоенного переменной count. В результате выполнения этой инструкции значение переменной, увеличенное на единицу, только отображается на экране, но не заносится в память.
Оператор инкремента можно использовать так же, как и выражение, значение которого будет присвоено переменной, стоящей в левой части инструкции присваивания. Например, следующая инструкция увеличивает значение переменной count, а затем присваивает полученное значение переменной number:
number = ++count;
те же операции можно было выполнить и так:
count=count+ 1;
number=count;
Оператор ++ можно использовать с именем переменной как инструкцию:
++number;
Если же знаки ++ помещены справа от имени переменной,
variable++;
то приращение значения переменной произойдет после завершения соответствующей инструкции.
Оператор декремента работает аналогичным образом, но уменьшает значение переменной на единицу. Синтаксис использования оператора таков:
--variable
уменьшает значение переменной на 1 до выполнения инструкции
variable—
уменьшает значение переменной на 1 после выполнения инструкции.