
- •Основы программирования язык “с” Минск – 2005
- •§1 Введение в программирование
- •Void main()
- •Void main()
- •Void main()
- •2 Распечатать свою фамилию следующим образом
- •3. Распечатать прямоугольник следующим образом
- •1.1 Простые программы: печать стоки текста Понятие переменной.
- •Volatile while
- •1.2 Целый тип данных
- •1.3 Числа с плавающей точкой
- •Void main({
- •1.4 Символьный тип
- •Void main()
- •§2 Управляющий структуры
- •2.1 Структура выбора if (если) и if/else(если - иначе)
- •Void main()
- •Void main()
- •2.2 Структуры повторенийfor(цикл)
- •Void main()
- •Void main()
- •2.3 Структура повторения while (пока)
- •Void main()
- •Void main()
- •Void main(){
- •Void main()
- •Void main()
- •2.4 Структура многомерного выбора switch
- •Void main()
- •Void main()
- •2.5 Операторы continue и break
- •Void main()
- •Void main()
- •2.6 Контрольные вопросы:
- •§3 Функция
- •Int printf(“const char * string”,…); %[флаг][ширина][точность][модификатор типа] тип_формата
- •Int scanf(const char * format, ……); возвращаемое значение – число считанных полей
- •3.1 Определение функции:
- •3.2 Классы памяти.
- •3.3 Указатели
- •Void main()
- •Void fff(int,int,int*,int*,int*,double*);
- •Void main()
- •Void fff(int a,int b,int*p1,int*p2,int*p3,double*p4)
- •Генерация случайных чисел.
- •Void main()
- •Void main()
- •Void main()
- •Void main(){
- •Void main()
- •3.6 Переменные перечисляемого типа
- •Int rollDice();
- •Void main()
- •Int sum,myPoint;
- •Int rollDice(){
- •Int die1,die2,workSum;
- •Void main()
- •§4 Массивы
- •4.1 Одномерные массивы
- •Int array[10];
- •4.2 Примеры использования массивов
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •4.3 Сортировки массивов
- •Void main()
- •Void main()
- •Void main()
- •Void main(){
- •Int arr1[maxsize],arr2[maxsize],buf;
- •Void main()
- •4.4 Передача массивов функции
- •4.5 Двумерные массивы
- •Void main()
- •Int I,j,temp;
- •Void main()
- •4.6 Контрольные вопросы:
- •§5 Символьная строка
- •5.1 Объявление символьной строки
- •Void main()
- •Void main()
- •Int srav(char *,char *);
- •Void main()
- •Int srav(char *X,char *y)
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •5.3 Массив строк
- •Void main()
- •Void main()
- •Void main()
- •§6 Динамическое распределение памяти
- •6.1 Функция malloc()
- •Void * malloc(unsigned size)
- •Void free(free *ptr)
- •Void main(){
- •Void main(){
- •Void vvod_mas(int*,int);
- •Void sort_vozr(int*,int);
- •Void main()
- •Vvod_mas(ptr1,n1);
- •Vvod_mas(ptr2,n2);
- •Void sort_vozr(int*X,int n)
- •Void vvod_mas(int*X,int n)
- •6.2 Функция сalloc()
- •Void * сalloc(unsigned num ,unsigned size)
- •6.3 Функция realloc()
- •Void * realloc(void *ptr ,unsigned size)
- •§7 Структура
- •7.1 Объявление структуры
- •Void main()
- •7.2 Объединения
- •§8 Файлы и потоки
- •8.1 Объявления файла
- •Int feof(file *);
- •8.2 Работа с текстовым файлом
- •Int fprintf(file *, const char format, …);
- •Void main()
- •Int account;
- •Int fputs(const char *, file *);
- •Int fscanf( file *, const char *format, …..);
- •Void main()
- •Void main()
- •Int account;
- •Void main()
- •Int fseek(file *,long ,int );
- •Void main()
- •Void main()
- •Void main()
- •Void show_file(file *k1)
- •Void dobav_file(file *k1)
- •Void fill_file(file *k1)
- •Создание файла произвольного доступа.
- •8.3 Работа с бинарным файлом
- •Void main()
- •Void main()
- •Void print_file(file *);
- •Void main(){
- •If(feof(k1)){
- •If(feof(k2)){
- •Void print_file(file *k){
- •8.4 Kонтрольные вопросы
- •Какие операции определены со строками?
3.2 Классы памяти.
В языках программирования C/C++ имеются четыре спецификации класса памяти: auto, register, extern и static. Спецификация класса памяти переменной помогает определить его класс памяти и область действия. Класс памяти переменной определяет его время жизни или время существования этой переменной, связанная с понятием блока программы. Одни переменные живут не долго, другие неоднократно создаются и уничтожаются, а третьи существуют на протяжении всей программы. Область действия (область видимости) переменной – это область программы в которой на данную переменную можно сослаться, т.е. на некоторые переменные сослаться в любом месте программы, тогда как на другие только в определенных частях программы.
Автоматическая переменная (auto) – это всегда локальная переменная, и память для выделяется в оперативной памяти автоматически при входе в блок и освобождается тоже автоматически при выходе из блока. К переменным типа auto доступ из внешнего блока невозможен.
Регистровая переменная (register) – это автоматическая переменная, только ключевое слово register – лишь указывает компилятору, что эту переменную необходимо поместить в регистр, а не в оперативную память, что приводит к уменьшению затраты времени при решении задачи. Регистровой переменной могут быть переменные целого типа. Если вы объявите переменную как register, то нет уверенности в том, что она будет помещена в регистре, т.к. не может быть места в регистре. Некоторые новые компиляторы сами способны распознавать часто используемую переменную и помещать ее в регистр.
К классу extern относятся автоматически имена функций и глобальные переменные. Но есть различие между классом памяти и областью определения, к примеру, если есть блок, где объявлена локальная переменная под тем же именем, что и глобальная, то в этом блоке нет доступа к глобальной переменной.
static – локальные переменные объявленные ключевым словом static известны только в той функции, где они определены, но в отличии от локальных переменных объявленных, как auto переменные static сохраняют свое значение в течении всего времени выполнения программы, причем при каждом последующем вызове функции сохраняет предыдущее значение которое оно имела при предыдущем вызове. Переменные объявленные как static автоматически получают нулевые значения.
Рассмотрим следующий пример:
#include<stdio.h>
void a();
void b();
void c();
int x=1;
void main(){
int x=5;
printf("Локальная переменная х при входе в функцию main() %d\n",x);
{
int x=7;
printf("Локальная переменная x в блоке{}, который находиться в функции main() %d\n",x);
}
printf("Локальная переменная х внутри функции main() %d\n",x);
a();
b();
c();
a();
b();
c();
printf("Локальная переменная х при выходе из функции main() %d\n",x);
}
void a(){
int x=25;
printf("Локальная переменная х при входе в функцию a() %d\n",x);
x++;
printf("Локальная переменная х при выходе из функции a() %d\n",x);
}
void b(){
static int x=50;
printf("Локальная переменная х при входе в функцию b() %d\n",x);
x++;
printf("b() %d\n",x);
}
void c(){
printf("Глобальная переменная х при входе в функцию c() %d\n",x);
x*=10;
printf("Глобальная переменная х при выходе из функции c() %d\n",x);
}
Локальная переменная х при входе в функцию main() 5
Локальная переменная х в блоке{}, который находиться в функции main() 7
Локальная переменная х внутри функции main() 5
Локальная переменная х при входе в функцию а() 25
Локальная переменная х при выходе из функции a() 26
Локальная переменная х при входе в функцию b() 50
Локальная переменная х при выходе из функции b() 51
Глобальная переменная х при входе в функцию c() 1
Глобальная переменная х при выходе из функции с() 10
Локальная переменная х при входе в функцию а() 25
Локальная переменная х при выходе из функции a() 26
Локальная переменная х при входе в функцию b() 51
Локальная переменная х при выходе из функции b() 52
Глобальная переменная х при входе в функцию c() 10
Глобальная переменная х при выходе из функции с() 100
Локальная переменная х при выходе в функции main() 5