- •Часть 1
- •40 01 02 – 02 Информационные системы и технологии (в экономике)
- •Общие сведения Сведения об эумк
- •Методические рекомендации по изучению дисциплины
- •Рабочая учебная программа
- •Протокол согласования учебной программы по изучаемой учебной дисциплине с другими дисциплинами специальности
- •Содержание дисциплины
- •1. Название тем лекционных занятий, их содержание, объем в часах
- •3. Перечень тем лабораторных занятий, их содержание и объем в часах
- •Теоретический раздел
- •Тема № 1. Введение в программирование
- •Происхождение языка с.
- •Основные характеристики алгоритмического языка с
- •Область применения
- •Системы программирования
- •Исходные и объектные модули, процессы компиляции и связывания
- •Алфавит языка
- •Лексемы (cTokens)
- •Тема № 2. Выражения и операции языка Унарные операции
- •Бинарные операции
- •Условная трехместная операция
- •Операция явного преобразования типа
- •Приоритет операций. Порядок вычисления выражений.
- •Организация ввода-вывода информации
- •Тема № 3. Управляющие структуры. Ветвления и циклы
- •Операторы преобразования данных – это операторы присваивания и произвольные выражения, завершенные символом «;».
- •Операторы управления работой программы называют управляющими конструкциями программы.
- •Тема № 4. Организация данных. Массивы и указатели Массивы
- •Инициализация массивов
- •Указатели
- •Функции для выделения и освобождения памяти
- •Тема № 5. Функции. Символьные строки и функции над ними Определение функций
- •Описание функций
- •Вызов функции
- •Передача параметров
- •Указатели на функции
- •Массивы указателей на функции
- •Главная функция. Передача аргументов главной функции
- •Рекурсивные программы
- •Стандартные функции ввода-вывода строк
- •Стандартные функции обработки строк
- •Тема № 6. Классы памяти и препроцессор языка Си Локальные и глобальные переменные
- •Автоматические (локальные) переменные
- •Внешние (глобальные) переменные
- •Статические переменные
- •Регистровые переменные
- •Область видимости и функции
- •Препроцессор и его директивы
- •Тема № 7. Структуры Декларация структур
- •Инициализация структур
- •Доступ к элементам структур
- •Элементы-массивы
- •Массивы структур
- •Указатели на структуры
- •Доступ к элементам структуры, определенной через указатель
- •Структуры и функции
- •Объединения
- •Битовые поля
- •Практический раздел Виртуальные лабораторные работы
- •Лабораторная работа №1
- •Лабораторная работа №2
- •Контрольные работы
- •Содержание пояснительной записки.
- •Задание для контрольной работы №1
- •Задание для контрольной работы №2
- •Варианты индивидуальных заданий
- •Теоретические вопросы
- •Пример оформления титульного листа для виртуальных лабораторных работ
- •Пример оформления титульного листа для контрольных
Тема № 6. Классы памяти и препроцессор языка Си Локальные и глобальные переменные
Одна из сильных сторон языка С заключается в возможности управления мелкими деталями программы. Примером подобного управления служат классы памяти – они дают возможность определить, с какими функциями связаны какие переменные и как долго переменная сохраняется в программе.
Каждая из переменных программы имеет определенный тип. Кроме того, каждая переменная имеет определенный класс памяти. Для описания классов памяти существует 4 ключевых слова: extern (внешний) - глобальный, auto (автоматический) - локальный, static (статический) и register (регистровый).
В отличие от локальных, глобальные переменные определяются вне тела какой-либо функции и «видны» сразу нескольким функциям. Исходный текст программы можно хранить в нескольких файлах. Эти части каждый раз транслировать вместе нет никакой необходимости. Ранее скомпилированные программы можно загружать из библиотек.
Рассмотрим пример.
#include <stdio.h>
#include <conio.h>
int conclusion();
char Answer; // Глобальная переменная
//-----------------------------------------------
void main()
{
printf ("\nWhether you can swim?? ('Y/N')");
do {
Answer = getche();
} while(!conclusion());
}
//-----------------------------------------------
int conclusion()
{
int retcode;
switch(Answer)
{
case 'Y':
case 'y': retcode = 1;
printf ("\nOk!\n");
break;
case 'N':
case 'n': retcode = 1;
printf ("\nBad!\n");
break;
default: retcode = 0;
printf ("\nThe answer is not identified! Repeat, please!\n");
}
return retcode;
}
В этом случае переменная Answer является внешней переменной и может быть использована в любой из функций.
Объявленные внутри функции переменные считаются принадлежащими к классу auto, если не указано иначе.
Формальные аргументы для функций принадлежат к классу auto, но можно задать для них класс register.
Класс памяти переменной определяется местом ее описания и ключевым словом, если оно используется. Класс памяти определяет три условия:
1. От него зависит, какие функции имеют доступ к переменной. Если фрагмент кода может использовать определенную переменную, говорят, что переменная видима в данном разделе. Доступность переменной различным частям программы задает ее область видимости.
2. В каком количестве мест одна и та же переменная может объявляться. Это свойство называется связыванием переменной.
3. Длительность существования переменной в памяти – продолжительность хранения.
Переменная может иметь одну из трех областей видимости (действия):
1. В пределах файла (модуля) - доступна от точки определения до конца файла, содержащего определение. Например, переменная Answer из предыдущего примера.
2. В пределах блока - доступна от точки определения, до конца блока, содержащего определение. Использовавшиеся до сих пор локальные переменные, включая формальные аргументы функций, имеют область видимости в пределах блока.
3. В пределах прототипа функции - применима к именам переменных, используемым в прототипах функций, например
double Oper (double Argument);
Переменная может связываться:
1. внешним образом (может использоваться в любом месте программы, включающей несколько модулей (файлов);
2. внутренним образом (может использоваться в любом месте единственного файла);
3. не связываться (используется только в блоке, где она описана).
Переменная может иметь продолжительность хранения:
1. статическую (существует на протяжении выполнения программы)
2. автоматическую (гарантированно существует лишь во время выполнения того блока, в котором она описана). Она создается в момент начала выполнения блока и ликвидируется по завершению его работы.
Внешние переменные (подобно Answer) имеют статическую продолжительность хранения.
