- •Алфавит языка
- •Идентификаторы
- •Структура программы
- •Переменные
- •Константы
- •Типы данных
- •Выражения и операции
- •Арифметические операции.
- •Выражения и операции
- •Операции отношения.
- •Логические операции.
- •Структура программы
- •Форматированный ввод с клавиатуры.
- •Scanf(“форматная_строка”, список_аргументов);
- •Форматированный вывод на экран.
- •Printf(“форматная_строка”, список_аргументов);
- •Операция присваивания.
- •Условный оператор if
- •If (выражение) оператор1; else оператор2;
- •If (выражение) оператор;
- •Оператор выбора (переключатель)
- •Операторы циклов
- •Цикл с предусловием while
- •Операторы циклов
- •Цикл с постусловием do-while
- •Операторы циклов
- •Цикл с параметром for
- •Массивы
- •Массивы
- •Одномерные массивы
- •Массивы
- •Массивы
- •Двумерные массивы
- •Массивы
- •Двумерные массивы
- •Операции над элементами двумерного массива
- •Функции
- •Функции
- •Ввод – вывод строк
- •Ввод – вывод строк
- •Структуры
- •Структуры
- •Функции работы с файлами
- •Указатели
- •Операции над указателями
- •Динамическое выделение памяти
Структуры
Структура - это структурированный тип данных, представляющий собой поименованную совокупность разнотипных элементов. Тип структура обычно используется при разработке информационных систем, баз данных.
Формат описания структурного типа:
struct имя_типа
{определения_элементов};
В конце обязательно ставится точка с запятой (это оператор).
Например, если требуется объединить информацию о сотруднике какого-либо предприятия, может подойти следующая структура:
struct sotrudnik
{ int nom;
char fio[25];
float zarplata;};
Элементы такой структуры (номер, фамилия, зарплата) называются полями. Каждое поле имеет имя и тип.
После этого sotrudnik становится именем структурного типа, который может быть назначен некоторым переменным:
struct sotrudnik sot1, sot2;
Здесь sot1 и sot2 — переменные структурного типа.
Допускаются и другие варианты описания структурных переменных. Можно вообще не задавать имя типа, а описывать сразу переменные:
struct
{ int nom;
char fio[25];
float zarplata;} sot1, sot2;
Поля структуры являются отдельными переменными, над ними допустимы все операции, определенные для данного типа.
Обращение к элементам (полям) структурной величины производится с помощью уточненного имени:
имя_структуры.имя_элемента
Примеры:
sotl.fam; sot1.zarplata;
Значения элементов структуры могут определяться вводом, присваиванием, инициализацией. Пример инициализации в описании:
student sot1={300, "Кротов", 3500};
Если список инициализаций будет короче, то оставшиеся поля структурной переменной заполняются нулями.
Поля структуры могут сами иметь структурный тип.
Например, в структуре Person, содержащей сведения – ФИО, дата рождения, сделать дату рождения внутренней структурой date по отношению к структуре Person. Тогда шаблон такой конструкции будет выглядеть так:
struct date {int day, month, year;};
struct Person
{char fio[40];
struct date f1;
};
Объявляем переменную:
struct Person a;
Тогда обращение к полям структурной переменной a будет выглядеть следующим образом:
a . fio a. f1 . day a . f1 . month a . f1 . year
Массивы структур в ЯП Си (объявление, обращение к элементам и их полям, примеры).
Структуры
Структура - это структурированный тип данных, представляющий собой поименованную совокупность разнотипных элементов. Тип структура обычно используется при разработке информационных систем, баз данных.
Формат описания структурного типа:
struct имя_типа
{определения_элементов};
В конце обязательно ставится точка с запятой (это оператор).
Например, если требуется объединить информацию о сотруднике какого-либо предприятия, может подойти следующая структура:
struct sotrudnik
{ int nom;
char fio[25];
float zarplata;};
Элементы такой структуры (номер, фамилия, зарплата) называются полями. Каждое поле имеет имя и тип.
После этого sotrudnik становится именем структурного типа, который может быть назначен некоторым переменным:
struct sotrudnik sot1, sot2;
Здесь sot1 и sot2 — переменные структурного типа.
Допускаются и другие варианты описания структурных переменных. Можно вообще не задавать имя типа, а описывать сразу переменные:
struct
{ int nom;
char fio[25];
float zarplata;} sot1, sot2;
Поля структуры являются отдельными переменными, над ними допустимы все операции, определенные для данного типа.
Обращение к элементам (полям) структурной величины производится с помощью уточненного имени:
имя_структуры.имя_элемента
Примеры:
sotl.fam; sot1.zarplata;
Допускается использование массивов структур. Это позволяет создавать программы, оперирующие с простейшими базами данных.
Пример:
Сформировать массив структур, содержащих информацию о студентах (фамилия, оценка по математике). Вывести на экран весь список и вычислить средний балл в группе по математике.
#include<stdio.h>
void main()
{struct student /*описание структурного типа*/
{char fam[20];
int oc;};
struct student a[10]; /*объявление массива структур*/
int i,n=4;float sum=0,sred;
for(i=0;i<n;i++) /*заполнение массива структур данными*/
{printf("введите фамилию\n");scanf("%s",&a[i].fam); /*обращение к полям структуры*/
printf("введите оценку\n");scanf("%d",&a[i].oc);}
puts("список студентов:");
for(i=0;i<n;i++)/*вывод массива структур на экран*/
printf("%20s%4d\n",a[i].fam,a[i].oc);
for(i=0;i<n;i++)sum+=a[i].oc; /*поиск суммы оценок*/
sred=sum/n;printf("средний балл=%f\n",sred);
}
Работа с файлами на диске в ЯП Си (объявление указателя, режим доступа к элементам, открытие, закрытие, средства ввода вывода,).
Файл – это набор данных, размещенный на внешнем носителе и рассматриваемый в процессе обработки как единое целое. В файлах размещаются данные, предназначенные для длительного хранения. Файл хранится во внешней памяти на внешнем носителе, и по мере необходимости данные из файла вызываются в оперативную память для обработки. Любой файл рассматривается как байтовая последовательность, отсутствует понятие типа файла. Последний байт файла имеет значение EOF.
Каждому файлу в программе присваивается внутреннее логическое имя, используемое в дальнейшем при обращении к нему. Логическое имя (идентификатор файла) – это указатель на файл, т.е. на область памяти, где содержится вся необходимая информация о файле.
Формат объявления указателя на файл следующий:
FILE *имя указателя;
Открытие файла
Прежде чем начать работать с файлом, т.е. получить возможность чтения или записи информации в файл, его нужно открыть для доступа.
Для этого обычно используется функция
имя файловой переменной= fopen(“путь и имя файла”, “режим”);
Пример:
FILE *f;
f = fopen (" d:\\urok\\file1.dat ", "w");
Обратный слеш «\», как специальный символ в строке записывается дважды.
При успешном открытии функция fopen возвращает указатель на файл. При ошибке возвращается NULL. (Данная ситуация обычно возникает, когда неверно указывается путь к открываемому файлу, например, если указать путь, запрещенный для записи.)
Режим доступа к файлу:
w – файл открывается для записи (write); если файла с заданным именем нет, то он будет создан; если же такой файл уже существует, то перед открытием прежняя информация уничтожается;
r – файл открывается для чтения (read); если такого файла нет, то возникает ошибка;
a – файл открывается для добавления (append) новой информации в конец;
r+ (w+) – файл открывается для редактирования данных, т.е. возможны и запись, и чтение информации;
t – файл открывается в текстовом режиме;
b – файл открывается в двоичном режиме;
Последние два режима используются совместно с рассмотренными выше. Возможны следующие комбинации режимов доступа: “w+b”, “wb+”, “rw+”, “w+t”, “rt+”, а также некоторые другие комбинации.
Каждый открытый файл имеет маркер или указатель чтения-записи данных. При открытии файла этот указатель устанавливается на начало данных.
