- •Алгоритмы и свойства алгоритмов.
- •Блок-схема.
- •Основные управляющие конструкции.
- •Арифметические операции.
- •Приоритет и порядок вычислений
- •Преобразование типов при выполнении операций.
- •Операции увеличения и уменьшения.
- •Математические библиотечные функции.
- •Операции отношений.
- •Логические операторы.
- •Приоритеты логических операций.
- •2Ая лекция.
- •Операторы цикла.
- •Операторы BreakиContinue.
- •Указатели.
- •Объявление указателей.
- •Классы памяти.
- •Инициализация указателей.
- •Указатель на неопределенный тип.
- •Выражения с указателями.
- •Операции с указателями.
- •Указатели и массивы.
- •Удаление памяти.
- •Указатели многомерных массивов.
- •Свободные массивы.
- •Функции.
- •Передача массива в виде параметра.
- •Классы памяти.
- •Макрофункции.
- •Вложенные структуры.
- •Работа с файлами.
- •Работа с бинарными файлами.
Макрофункции.
Применяются там, где требуется произвести несложные вычисления, и хороши тем, что выполняются с любым типом данных.
Пример:
#include <stdio.h>
#define square(x) x*x
Void main(){
Int y=5;
Printf(“квадрат %d”, square(y));
Printf(“квадрат y+z %”, square(y+z));
Перегрузка функций.
В языке C++ предусмотрена перегрузка функций. Т.е. функция с одним именем описана для разных типов параметров. Позволяет определять несколько функций с одним и тем же именем, возвращая одно и то же значение
Указатели на функции.
В языке C++ сама функция не может быть значением переменной, но можно определить указатель на функцию. Код функции в ПК занимает определенную физическую память, в ней есть точка входа, т.е. определенный адрес ячейки, которая используется для входа в функцию и ее выполнения.
Аргументы функции main.
Функция mainтоже имеет аргументы.
Рекурсия – способ вызова, при которой функция обращается сама к себе. Важным моментом при составлении рекурсивной программы является организация выхода. Пример:
Void up(int );
Int main (){
Up(1);
}
Void up (int n){
Printf(“уровень вверх”, n);
If(n<4)up(n+1);
}
Функция факториал:
Long factorial (int value){
Long result=1;
If (value!=0){
Result= factorial(value-1);
If (result>MAXLONG/(value+1)){
Printf(“очень большое число”);
Exit(1);
Result*=value;
}
Return result;}
ГЕНЕРАТОР СЛУЧАЙНЫХ ЧИСЕЛ
int n=(double)rand()/(RAND_MAX+1)*(max-min)+min;
Структуры.
Задается с помощью слова struct.
Для перечня книг будет выглядеть так:
Struct book{
char title [100];
char outhor[100];
intyear;
}
Данная конструкция это шаблон представления данных, а не сам объект. Чтобы оперировать данной структурой, нужно объявить переменную данного типа:
Structbooklib;
Lib.title
Lib.year- доступ к полям структуры. Если используется указатель, то доступ к структуре осуществляется оператором стрелка.Lib-> title.
Puts(“введите название книги”);
scanf(“%s”,lib.title);
puts(“введите автора книги”);
scanf(“%s”,lib.author);
puts(“введите год выпуска”);
scanf(“%d”, &lib.year)
массив структур задается также как и обычный.
Struct book lib[100];
Int main(){
Int cnt_book=0,ch;
Do {puts(“название книги”)
Scanf(“%s”, lib[cnt_book]title);
Puts(“автор книги”);
Scanf(“%s”, lib[cnt_book]author);
Puts(“год выпуска”);
Scanf(“%d”, &lib[cnt_book]year);
Cnt_book++;
}
While (cnt_book<=100)||(Scanf(“%d”, &ch)==1)
Структуры можно автоматически инициализировать при их объявлении.
Structbooklib={“Евгений Онегин”, “Пушкин А.С.”, 1995}
Вложенные структуры.
Struct tag.fio{
Char last[100];
Char first[100];
Char otch[100];
}
Struct tag.people{
Struct tag_fio fio;
Char job[100];
}
Int main(){
Struct people man=
{{“Иванов”, “Иван”, “Иванович”},
”Электрик”}; printf(“ФИО %s%s%s” , man.fio.last, man.fio.first, man.fio.otch, man.fio.job);
Структуры как и обычные данные можно передавать функциям в качестве аргумента:
Struct tag_people{
Char name[100];
Char job[100];
Int old;};
Void sho_struct(
Int main(){
Struct tag_people
Show_struct(person);
Return 0;
}
Void show_struct(struct tag_people man){
Printf(“Имя %s \n”, man.name);
Printf(“проф %s \n” man.job);
Printf(“Возраст %d”, man.old);}
Функциям в качестве аргумента можно передавать и массивы структур.
Void show_struct(struct people mons[], int size);
#define n 2
Struct tag_people person[n]={
Char name[100];
Char job[100];
Int old;};
Void show(struct tag_people mons[], int size);
Main(){
Struct tag_people
{“иванов”, “электрик”, 30},
{“петров”, “Бухгалтер”, 45},};
Show (person, n);}
Void show (struct tag_people
Объединение.
Это тип данных позволяющий хранить различные типы данных в одной и той же области памяти.
Union var_i;
Float var_f;
Charvar_ch;}
Используется для экономии памяти, но крайне редко используется. В один и тот же момент времени можно использовать только 1 тип из всех. Соответственно нужно ввести счетчик.
Structtag_var{
Uniontag-valuevalue;
Short type_var;}
Main(){
Struct tag_var[3];
Var[0].tag_var=0;
Var[0].value.var_i=i0;
Var[1].type_var=1;
Var[1].value.var_f=2.2;
Var[2].type_var=2;
Перечисляемый тип задается Enum.
Enum tug_type{VK_INT, VK_FLOAT, VK_CHAR}
Enumtag_typevar;