Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Си.doc
Скачиваний:
3
Добавлен:
15.11.2019
Размер:
2.72 Mб
Скачать

Примеры записи операторов присваивания:

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(‘*’);

На экран будут выведены два символа подряд:

**