- •И.А. Васюткина основы алгоритмизации и программирования.
 - •Содержание
 - •1.Обзор языКа программирования с
 - •2.Этапы создания программы
 - •3.Структура программы на языке си
 - •3.1. Внутренняя структура программы
 - •3.2. Пример программы на си
 - •4.Базовые элементы языка си
 - •5.Данные в программе на си
 - •5.1. Константы
 - •5.2. Базовые стандартные типы переменных
 - •6.2. Операции отношения
 - •6.3. Логические операции
 - •6.4. Операции с разрядами
 - •6.5. Операции сдвига
 - •6.6. Операция условия ?:
 - •6.7. Преобразование типов
 - •6.8. Операции приведения
 - •6.9. Дополнительные операции присваивания
 - •7.Операторы языка си
 - •Оператор может быть простым и составным. Позволяет пропустить оператор или блок операторов, если условие ложно.
 - •1.Схема выполнения оператора
 - •8. Оператор множественного выбора
 - •9. Операторы цикла while
 - •8. Операторы безусловных переходов
 - •8.Стандартные функции ввода и вывода
 - •8.1. Функция вывода данных на экран printf ()
 - •8.2. Модификаторы спецификаций преобразования
 - •8.3. Функция ввода данных с клавиатуры sсanf()
 - •8.4. Функции ввода/вывода одного символа getchar(), putchar()
 - •8.5. Функции небуфиризированного ввода с клавиатуры
 - •8.7. Форматирование вывода
 - •Заключительная программа
 - •9. Массивы
 - •9.1. Одномерные массивы
 - •Стандартные алгоритмы работы с одномерными массивами
 - •Инициализация одномерных массивов
 - •9.2. Многомерные массивы
 - •Инициализация многомерных массивов
 - •9.2.2 Стандартные алгоритмы работы с двумерными массивами
 - •10. Функции
 - •10.1.Cоздание и использование пользовательских функций
 - •10.2.Параметры функции
 - •10.3.Возвращение значения функцией
 - •10.4.Inline-функции
 - •10.5.Значение формальных параметров функции по умолчанию
 - •10.6.Перегрузка функций
 - •11. Классы памяти и область действия
 - •11.1.Глобальные переменные
 - •Extern - внешние переменные
 - •Статистические внешние переменные - static
 - •11.2.Локальные переменные
 - •Внутренняя статическая переменная
 - •Регистровая переменная
 - •Автоматические переменные
 - •11.3.Доступ к функциям в многомодульной программе
 - •12. Препроцессор языка си
 - •12.1. Подстановка имен
 - •12.2.Включение файлов
 - •12.3.Условная компиляция
 - •13. Указатели
 - •13.1.Операция косвенной адресации *
 - •13.2. Описание указателей
 - •13.3.Использование указателей для связи функций
 - •13.4.Указатели на одномерные массивы
 - •13.5.Указатели на многомерные массивы
 - •13.6.Операции над указателями
 - •13.7.Передача массива в качестве параметра в функцию
 - •13.8.Указатель на void *
 - •14. Символьные строки и функции над строками
 - •14.1.Массивы символьных строк
 - •14.2.Массивы указателей
 - •14.3.Указатель как возвращаемое значение функции Передача указателя как параметра функции
 - •14.4.Функции, работающие со строками Функции, определеные в заголовочном файле stdio.H
 - •14.5. Стандартные библиотечные функции Функции, определеные в заголовочном файле string.H
 - •14.6. Преобразование символьных строк
 - •Функции, определеные в заголовочном файле ctype.H.
 - •15. Ссылки
 - •16. Параметры командной строки
 - •17. Производные типы данных
 - •17.1.Структуры
 - •Массивы структур
 - •Вложенные структуры
 - •17.1.3 Указатели на структуры
 - •Операции над структурами
 - •Передача структуры в функцию
 - •17.2.Объединения
 - •17.3. Синоним имени типа
 - •17.4.Определение именнованных констант
 - •17.5.Перечисления
 - •17.6.Битовые поля
 - •18. Динамическое выделение памяти
 - •2. Функция void* calloc(n,size type);
 - •18.2.Операция new с массивами
 - •18.3.Инициализаторы с операцией new
 - •18.4.Ошибки при использовании динамичской памяти
 - •19. Файл
 - •19.1.Открытие файла fopen()
 - •19.2.Закрытие файла fclose()
 - •19.3.Функции ввода/вывода одного символа fgetc(), fputc()
 - •19.4.Функции форматированного ввода/вывода в файл
 - •Int fprintf(file *stream,”управл.Cтрока”,arg1,…)
 - •Int fscanf(file *stream,”управл.Cтрока”,&arg1,…)
 - •19.5. Функции ввода/вывода строки символов в файл
 - •19.6.Функции управления указателем в файле
 - •Int fseek(file *stream, смещение, start)
 - •19.7.Ввод/вывод записей фиксированной длины
 - •20. Динамические структуры данных
 - •20.1.Однонаправленные связные списки
 - •Вставка узла
 - •Удаление узла из списка
 - •20.2.Бинарные деревья
 - •21. Размещение данных в памяти
 - •22.Модели памяти
 - •Список литературы
 
6.9. Дополнительные операции присваивания
+ = (величина, стоящая справа, прибавляется к величине, расположенной слева)
n + = 13 тоже, что и n=n+13
- = (от величины, стоящей слева, отнимается величина, расположенная справа)
den - = 20 den = den-20
* = (величина слева умножается на величину справа)
n*=2 n = n*2
/ = делит переменную л.ч. на величину п.ч.
% = дает остаток от деления переменной л.ч. на величину п.ч.
<<=; >>=; | =; & =; ^ =; ~=;
7.Операторы языка си
Основу программы на Си составляют выражения, а не операторы. Большинство операторов в программе являются выражениями с ‘;’. Это позволяет создавать эффективные программы.
Оператор является законченной конструкцией языка Си. Операторы служат основными конструкциями при построении программы. Выражение состоит из операций и операндов (операнд – то, над чем выполняется операция, простейшее выражение может состоять из одного операнда). Оператор служит командой компьютеру. Операторы бывают простые и составные. Простые операторы оканчиваются ‘;’ .
Простые операторы:
1. Пустой оператор ‘;’
2. Оператор описания int x, y;
3. Оператор присвоения count = 0.0;
4. Оператор выражение (управляющий оператор)
sum = sum+count;
var = (var + 10)/4;
5. Оператор вызова функции
printf("Привет \n");
6. Оператор следоаания ‘,’
x=7, y=10;
Составные операторы или блоки:
Это группа операторов, заключенных в фигурные скобки {...}.
7. Оператор ветвления if ... else.
Оператор может быть простым и составным. Позволяет пропустить оператор или блок операторов, если условие ложно.
if(условное выражение) или if(условное выражение) {
оператор; операторы;
}
1.Схема выполнения оператора
	
								
 тело программы
If истина
if(условное выражение) или if(условное выражение) {
оператор1; операторы;
else оператор2; }
else {
операторы; }
Схема выполнения оператора
if истина тело программы
ложь
else
С помощью оператора ветвления можно организовать множественный выбор, если составить сложную конструкцию.
if(условное выражение1)
оператор1;
else if(условное выражение2)
оператор2;
else if(условное выражение3)
оператор3;
else оператор4;
Слово else всегда относится к ближайшему if, иначе нужно ставить скобки.
if(условное выражение1) {
if(условное выражение2)
оператор1;
}
else оператор2;
// Пример задачи на использование оператора
#include <stdio.h>
#define LIMIT 12600
#define MAX 25200
#define NORMA 60
#define PEOPLE 20
void main(void)
{
float kwh; //количество киловат
float bill; // плата
int p,house;
printf("Укажите количество израсходованных кВт/ч.\n);
scanf("%f",&kwh);
printf("Укажите количество человек в семье.\n);
scanf("%d",&p);
house=NORMA+PEOPLE*p;
if(kwh<=house)
bill=kwh*LIMIT;
else
bill= house*LIMIT + (kwh-house)*MAX;
printf("Плата за %f составляет %f.\n",kwh,bill);
}
8. Оператор множественного выбора
Оператор if...else осуществляет выбор между двумя (условиями) вариантами. Но иногда нужно сделать выбор из нескольких вариантов. Это можно сделать с помощью if-else if-else. Иногда удобнее применить оператор switch.
switch (целое выражение)
{
case конст1:
оператор;
case конст2:
оператор;
default:
оператор;
}
В начале вычисляется выражение в скобках за ключевым словом. Затем просматривается список меток case 'a': пока не будет найдена, соответствующая этому значению. Если нет такой метки, то будет выполнен default. Метка default может отсутствовать, тогда оператор switch ничего не выполнит и программа перейдет на следующий оператор. Оператор break служит для выхода из оператора switch и перехода к следующему оператору. Метки в операторе switch должны быть константами целого типа, включая chаr. Могут следовать несколько меток подряд.
//пример программы на множественный выбор
#include <stdio.h>
void main(void)
{
int x, y;
char c;
printf("Введите 2 целых числа и знак операции");
scanf(“ %d %d %c”, &x, &y, &c);
switch (c) {
case '+': printf("x + y = %3d\n”, x+y);
break;
case '-': printf("x - y = %3d\n”, x-y);
break;
case '*': printf("x * y = %3d\n”, x*y);
break;
case '/': printf("x / y = %3d\n”, x/y);
break;
default:
printf("Такой операции нет!\n);
}
}
