- •Предисловие
- •Алфавит языка
- •Служебные слова
- •Константы
- •Комментарии
- •Переменные
- •Int I,j,k; //переменные I, j, k – целого типа
- •Математические функции
- •Выражения
- •Выражения целого типа
- •Примеры записи выражений целого типа:
- •Примеры вычислений выражений целого типа:
- •Выражения вещественного типа
- •Примеры записи выражений вещественного типа
- •Примеры вычислений выражений вещественного типа:
- •Операторы присваивания
- •Примеры записи операторов присваивания:
- •Ввод и вывод данных
- •Стандартный ввод-вывод
- •Посимвольный ввод-вывод
- •Ввод-вывод строк
- •Форматированный вывод
- •Форматированный ввод
- •Scanf(“формат”, аргументы);
- •Int age, rost;
- •Vasja Pupkin
- •Vasja Pupkin
- •Структура программы
- •Void main()
- •Int main()
- •Int age, rost;
- •Директивы препроцессора
- •Включение файлов
- •Int main()
- •Int age, rost;
- •Int main()
- •Int age, rost;
- •Подстановка имен
- •Макросы
- •Структуры данных
- •Массивы
- •Int vect[5];
- •Int vect[count];
- •Vect[0] vect[1] vect[2] vect[3] vect[4]
- •Int main()
- •Int temp;
- •Int matr[row][col];
- •Алгоритм и его свойства
- •Схемы алгоритмов
- •Пример записи алгоритма:
- •Базовые структуры
- •Цепочка
- •Ветвления
- •Альтернатива
- •If (условие)
- •Вариант 2 – с использованием операции конъюнкции
- •Int main()
- •Int c, y1, y2, kl, day, month, year;
- •Часто встречающиеся ошибки программирования:
- •Int main()
- •Переключатель
- •Int main()
- •Int month;
- •Часто встречающиеся ошибки программирования:
- •Бесконечные циклы
- •Циклы с предусловием
- •Int main()
- •Программа
- •Int main()
- •Программа
- •Int main()
- •Часто встречающиеся ошибки программирования:
- •Циклы с постусловием
- •Int main()
- •Int main()
- •Программа
- •Int main()
- •Int main()
- •Int main()
- •Int month;
- •Циклы с параметром
- •Действия цикла:
- •Int main()
- •Int top, bottom;
- •Int main()
- •Int num, sum, factor;
- •Int main()
- •Int main()
- •If (number % 3)
- •Int main()
- •Int main()
- •Int I, m, vector_min, vector_max, temp;
- •Int vector[n];
- •Int main()
- •Int vector_min, vector_max, temp;
- •Int vector[n];
- •Функции
- •Int summa(int a, int b)
- •Int summa(int a, int b)
- •Void swap(int a, int b)
- •Int temp;
- •Int top, bottom, temp;
- •Рекурсия
- •5 * 4 * Factorial(3)
- •5 * 4 * 3 * Factorial(2)
- •5 * 4 * 3 * 2 * Factorial(1)
- •Void quick_sort(int left, int right, int vector[])
- •Int I, last;
- •Void swap(int I, int j, int vector[])
- •Int temp;
- •Особенности рекурсии:
- •Адреса и указатели
- •Операции над указателями
- •Указатели и массивы
- •Int mass[5];
- •Int trio[5][2][3];
- •Указатели и функции
- •Int main()
- •Указатели и строки
- •Функции для работы со строками
- •Vtorokursnik
- •Vtorokursnik
- •Itoa(I, str, 16);
- •Текстовые файлы
- •Int vector[k];
- •Vector_1:
- •Vector_2:
- •Int ocenka;
- •Imja: Vasilij
- •Imja: Ivan
- •Int ocenka;
- •Бинарные файлы
Примеры записи операторов присваивания:
1.
int a=1;
int b=2;
int c=3;
float x=2.0;
a+= ++a / b++ % (c-= ceil(sqrt(x))); a=2 b=3 c=1
b+= (a | c++) - ++a % (int) floor(sqrt(x)); a=3 b=6 c=2
c|= --b % a--; a=2 b=5 c=2
2.
int a=3;
int b=2;
int c=1;
c+= --a / b++ + a % b; a=2 b=3 c=2
b|= ++a / (c+= b++, b+= a % c); a=3 b=7 c=5
a%= --a - ++b; a=2 b=5 c=8
3.
int a=0;
int b=0;
int c=0;
c+= b++; a=0 b=1 c=0
b+= ++c % ('A' / '1' + 'A' % '1' % 5); a=0 b=2 c=1
a-= ++b - c++; a=-2 b=3 c=2
Ввод и вывод данных
Программы на алгоритмических языках обычно составляются таким образом, чтобы они могли быть использованы при различных наборах входных данных. При этом входные данные не задаются в программе именованными константами или операторами присваивания, а помещаются отдельно от программы, например, в виде файла на внешнем носителе или входного потока с клавиатуры. В самой же программе предусматривается возможность ввода требуемых значений с устройств ввода (клавиатуры, магнитного диска) в оперативную память компьютера и вывода результатов вычислений из памяти на внешние носители информации (экран терминала, магнитный диск, принтер).
Под вводом данных понимаются операции передачи данных с внешних устройств ввода в оперативную память компьютера, а под выводом – из оперативной памяти на внешние устройства хранения информации.
Операции ввода и вывода данных в Си выполняются функциями стандартной библиотеки ввода-вывода, вызываемой директивой препроцессора:
#include <stdio.h>
Программист может использовать функции, входящие в эту библиотеку, или разработать собственные средства ввода-вывода и включить их в библиотеку. Благодаря такому подходу, разработчики компиляторов с языка Си могут делать их достаточно малыми и не зависящими от особенностей конкретных устройств ввода-вывода или приложений языка, поскольку учет этих особенностей возлагается на эти функции. Поэтому каждый компилятор Си снабжается пакетом таких функций, называемым стандартной библиотекой ввода-вывода.
В дальнейшем будем рассматривать функции ввода-вывода, входящие в любой компилятор Си. Эти функции можно разбить на два больших класса. К первому относится небольшое число примитивных функций ввода-вывода, называемых функциями системного уровня. На их основе строятся функции более высокого уровня, называемого стандартным или файловым уровнем.
Стандартный ввод-вывод
Функции ввода-вывода стандартного уровня считывают данные со стандартного устройства ввода – клавиатуры и выводят данные на стандартное устройство вывода – экран терминала.
Стандартный ввод-вывод может быть посимвольным, строковым и форматированным.
Посимвольный ввод-вывод
Стандартный посимвольный ввод предназначен для чтения очередного введенного с клавиатуры символа и осуществляется функцией getch() (get character – получить символ). Эта функция не имеет аргументов, однако скобки обязательны:
char d;
d=getch();
Этот оператор присваивает переменной символьного типа d значение очередного символа, введенного с клавиатуры. При выполнении функции getch() компьютер приостанавливает выполнение программы и ожидает ввода символа. После ввода символа (нажатия на одну из символьных клавиш) его значение присваивается в данном случае переменной d, и программа продолжает работу, при этом сам символ на экране не появляется.
Таким образом, функция getch() в Си полностью соответствует функции readkey в Паскале.
Стандартный посимвольный вывод предназначен для вывода на экран терминала одного символа и осуществляется функцией putch(аргумент) (put character – выдать символ). Эта функция имеет только один аргумент – переменную символьного типа или символьную константу, которую необходимо вывести на экран:
char d;
d=’*’;
putch(d);
putch(‘*’);
На экран будут выведены два символа подряд:
**