
Лабораторная работа №1
Вид программ на С
Существует 32 ключевых слова, при помощи которых создаются программы на языке С. Все ключевые слова С записываются строчными буквами. В С прописные и строчные буквы различаются: else – ключевое слово, а ELSE – нет. Ключевое слово не может быть использовано в каких-либо других целях в С-программах. Таким образом, оно не может служить в качестве имени переменной или функции.
Все С-программы содержат одну или более функций. Единственная функция, которая всегда должна присутствовать, называется main() (в программах на С++ это не обязательно), и она является первой функцией, получающей управление. Хотя main() не является частью языка, тем не менее, она трактуется часть. Не следует пытаться использовать main как, например, имя переменной.
Типичный вид С-программ
глобальные объявления возвращаемый_тип main(список параметров) { последовательность операторов } возвращаемый_тип f1(список параметров) { последовательность операторов } . . . возвращаемый_тип fN(список параметров) { последовательность операторов } |
Операторы манипулируют переменными и константами и тем самым образуют выражения. Все они базовые элементы языков С и С++.
Библиотеки и компоновка
Крайне редко программа на С состоит только из операторов написанных программистом, поскольку стандартный С не предоставляет методов выполнения ввода-вывода.
Язык С определяет стандартные библиотеки, предоставляющие функции, выполняющие наиболее типичные задачи.
Для пользования какой-либо библиотекой её нужно подключить. Для этого используются команды препроцессора. Например:
#include <stdio.h>
подключает библиотеку ввода-вывода,
#include <math.h>
библиотеку математических функций.
Библиотека функций ввода-вывода включает, в частности функции вывода на консоль printf() и ввода с консоли scanf().
Функция printf( ) имеет следующий прототип
Int printf(const char *форматная строка, …); Таблица 1
Код %c %d %i %e %E %f %g
%G
%o %s %u %x %X %p %n
%% |
Формат Символ Знаковое десятичное целое число Знаковое десятичное целое число Научная нотация (e – строчная) Научная нотация (E – прописная) Десятичное число с плавающей точкой Использует или %e, или %f, соответствующее более короткому представлению Использует или %E, или %f, соответствующее более короткому представлению Беззнаковое восьмеричное число Строка символов Беззнаковое десятичное число Беззнаковое шестнадцатиричное число (строчные буквы) Беззнаковое шестнадцатиричное число (прописные буквы) Вывод указателя Ассоциированный аргумент – это указатель на целое, в которое записывается число уже выведенных символов Выводит знак % |
Пример (вывод чисел)
#include <stdio.h>
int main(void)
{
double f;
for(f=1.0; f<1.0e+10; f=f*10)
printf("%g ", f);
getchar();
unsigned int num;
for(num=0; num<255; num++) {
printf("%o ", num);
printf("%x ", num);
printf("%X ", num);
}
getchar();
}
Стандартный ввод с консоли, как правило, осуществляется с помощью scanf(). Она читает все стандартные типы данных и автоматически преобразует числа к правильному внутреннему формату. Стандартный вид scanf() следующий:
int scanf(const char * форматная_строка, …);
форматная_строка определяет способ чтения значений в переменные, на которые указывает список аргументов. Форматная строка состоит из трёх типов символов:
-
Спецификаторы формата
-
Специальные символы
-
Стандартные символы
Функция scanf() возвращает число введённых полей. Она возвращает EOF, если обнаруживается преждевременный конец файла.
Спецификаторы формата перечислены в таблице 2.
Таблица 2
Код %c %d %i %e %f %lf %g %o %s %x %p %n %u %[] |
Значение Читает одиночные символы Читает десятичное число Читает десятичное число Читает число с плавающей запятой Читает число с плавающей запятой Читает число с плавающей запятой двойной точности Читает число с плавающей запятой Читает восьмеричное число Читает строку Читает шестнадцатеричное число Читает указатель Получает целочисленное значение, равное числу прочитанных символов Читает беззнаковое целое Сканирует множество символов |
В scanf( ) следует передавать адреса. Это означает, что все аргументы должны быть указателями на переменные. Например, для чтения целого в переменную count надо использовать следующий вызов scanf():
scanf(“%d”, &count);
Библиотека математических функций содержит в частности функции sin(), cos(), tan(), pow(). Первые три функции имеют один аргумент и возвращают значения функций синуса, косинуса и тангенса соответственно, четвёртая функция имеет два аргумента – основание a и показатель степени b и возвращает значение функции ab.
Идентификаторы
Имена, использующиеся для переменных, функций, меток и других определяемых пользователем объектов, называются идентификаторами. Идентификаторы могут состоять как из одного, так и из нескольких символов. Тем не менее в С только первые 31 символ являются значимыми. (В С++ - все символы значимые.) Первым символом должна быть буква или знак подчёркивания, а за ним могут стоять буквы, числа или знак подчеркивания.
Идентификатор не может совпадать с ключевым словом С и не должен иметь тоже имя, что и функция, уже содержащаяся в библиотеке С.
Типы данных в С и С++
Имеется 5 базовых типов данных в С: символьный, целочисленный, вещественный с ординарной точностью, вещественный с двойной точностью и void. Значения типа char используются для хранения ASCII-кодов или любых 8-битных величин. Переменные типа int используются для хранения целых величин. Переменные типа float и double содержат вещественные числа.
Тип void имеет три назначения. Первое – указание о невозвращении значения функцией. Второе – указание о неполучении параметров функцией. Третье – создание нетипизированных указателей.
С поддерживает несколько других типов, включая структуры, объединения, битовые поля, перечисления и типы, определяемые пользователем.
С++ содержит дополнительно типы bool и wchar_t. Тип bool принимает булевы значения true и false. Тип wchar_t – для хранения двухбайтных (широких) символов.
Некоторые производители компиляторов поддерживают дополнительные типы данных - __intn, где n число бит (может принимать значения - 8, 16, 32, 64) которые занимает переменная соответствующего типа.