
- •Види програмного забезпечення. Операційні системи. Види файлів. Прикладне програмне забезпечення.
- •Типи даних. Ціли типи даних та їх особливості.
- •Дані з рухомою крапкою та їх особливості.
- •Ключові слова, які використовуються для визначення даних. Одиночні дані та масиви.
- •Засоби ініціювання даних під час опису. Засоби визначення текстових рядків.
- •Структура програмного тексту. Структуризація програм "Си".
- •Що таке "вираження" мові "Си". Особливості формування результатів виражень.
- •Оператори "for", "while", "do … while".
- •Оператори "if", "else".
- •Оператори "goto" и "switch".
- •Основні відомості про функції в "Си".
- •Препроцесор "Си".
- •Повертання значень функціями.
- •Статичні та регістрові змінні.
- •Рекурсія в "Си".
- •Основні відмінності покажчиків від звичайних зміних. Структура та формат покажчиків.
- •Покажчики на функції. Покажчики і аргументи функцій.
- •Масиви структур. Покажчики на структури.
- •Основні відмінності об'єкту від структури. Переваги об'єктно-оріентованої технології програмування над традиційними технологіями.
- •Основні принципи проектування програм, в разі використання об'єктно-оріентованої технології програмування.
- •Опис класу. Клас - шаблон об'єкту.
- •Конструктори та деструктори. Визначення функцій-членів класів.
- •Об'єкт - екземпляр класу. Ініціалізація покажчиків на об'єкти. Знищення об'єктів.
- •Засоби регулювання доступу до внутриоб'єктних змінних та процедур (загальнодоступні, захищені та власні змінні).
- •Успадкування змінних та процедур. Визначення класів-спадкоємців. Деяки особливості успадкування.
- •Використання однакових імен процедур для реалізації різних алгоритмів, в залежності від типів вхідних даних та результату аналізу.
- •Перевантаження операцій.
- •Загальні принципи проектування windows-програм.
- •Програмування подій.
Покажчики на функції. Покажчики і аргументи функцій.
В языке Си допускаются указатели не только на данные, но и на функции. Они позволяют, например, создать функцию, строящую таблицу значений любой другой функции (с заданным видом списка параметров); при этом конкретный вызов этой другой функции осуществляется через указатель на функцию.
Рассмотрим методику работы с указателями на функции.
1. Как и любой объект языка Си, указатель на функции необходимо декларировать. Формат объявления указателя на функции следующий:
тип (*переменная-указатель)(список параметров);
т.е. декларируется указатель, который можно устанавливать на функции, возвращающие результат указанного типа и которые имеют указанный список параметров. Наличие первых круглых скобок обязательно, так как без них – это декларация функции, которая возвращает указатель.
Например, объявление вида:
double (*p_f )(char, double);
говорит о том, что декларируется указатель p_f, который можно устанавливать на функции, возвращающие результат типа double и имеющие два параметра: первый – символьного типа, а второй – вещественного типа.
2. Идентификатор функции считается константным указателем, поэтому для того, чтобы установить переменную-указатель на конкретную функцию, достаточно ей присвоить ее идентификатор:
переменная-указатель = ID_функции;
В случае необходимости функцию можно использовать для изменения передаваемых ей аргументов. В этом случае в качестве аргумента необходимо в вызываемую функцию передавать не значение переменной, а ее адрес.
При передаче по адресу в стек заносятся копии адресов аргументов, а функция осуществляет доступ к ячейкам памяти по этим адресам и может изменить исходные значения аргументов. Для обращения к значению аргумента-оригинала используется операция «*».
Пример функции, в которой меняются местами значения x и y:
void zam(int *x, int *y)
{
int t = *x;
*x = *y;
*y = t;
}
Покажчики та багатовимірні масиви. Ініціалізація масивів покажчиків.
Указатели, как и переменные любого другого типа, могут объединяться в массивы. Объявление массива указателей на целые числа имеет вид:
int *b[10], y;
Теперь каждому из элементов массива можно присвоить адрес целочисленной переменной y, например: b[1]=&y;
Чтобы теперь найти значение переменной y через данный элемент массива а, необходимо записать *b[1].
Описання покажчиків. Описання та використання покажчиків на функції.
См. вопрос 19
Що таке "породжені типи даних"?
Порожденные типы данных – структуры и объекты.
Структури і функції. Призначення структур.
Структуры – это объединенные в единое целое множество элементов данных.
Структура – это составной объект языка Си, представляющий собой совокупность логически связанных данных различных типов, объединенных в группу под одним идентификатором. Данные, входящие в эту группу, называют полями.
Опис структури. Шаблони та екземпляри структур. Коли відбувається розподілення пам'яті під структри
Определение объектов типа структуры производится за два шага:
– декларация структурного типа данных, не приводящая к выделению участка памяти;
– определение структурных переменных объявленного структурного типа с выделением для них памяти.
Структурный тип данных задается в виде шаблона, общий формат описания которого следующий:
struct ID структурного типа
{
описание полей
};
Атрибут «ID структурного типа», т.е. ее идентификатор является необязательным и может отсутствовать.
Описание полей производится обычным способом: указываются типы и идентификаторы.
Пример определения структурного типа:
Необходимо создать шаблон, описывающий информацию о студенте: номер группы, ФИО и средний балл. Один из возможных вариантов:
struct Stud_type {
char Number[10];
char Fio[40];
double S_b;
};
Само описание структуры не приводит к выделению под нее места в ОП. Теперь необходимо создать нужное количество переменных с приведенной структурой и сделать это можно двумя способами.
Способ 1. В любом месте программы для декларации структурных переменных, массивов, функций и т.д., используется объявленный в шаблоне структурный тип, например:
struct Stud_type student; - структурная переменная;
Stud_type Stud[100]; - массив структур;
int Fun(Stud_type W); - прототип функции с параметром структурного типа,
(Слово struct в первом примере является необязательным, и в остальных примерах оно опущено).
Способ 2: в шаблоне структуры между закрывающейся фигурной скобкой и символом «;» указывают через запятые идентификаторы структурных данных.
Для нашего примера, используя, можно записать:
struct Stud_type {
char Number[10], Fio[40];
double S_b;
} student, Stud[100];
Если дальше в программе не понадобится вводить новые данные объявленного структурного типа, имя типа «Stud_type» можно не указывать.