Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИИ Программирование и основы алгоритмизации...doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
1.5 Mб
Скачать

Введение

По учебному плану дисциплине «Технологии программирования» предшествует дисциплина «Информатика». Предполагается, что при прохождении дисциплины «Информатика» студенты изучат вводную часть языка С – числовые типы, операции – арифметические, логические, отношения, математические функции, а также основы структурного и модульного программирования. Поэтому изучение дисциплины «Технологии программирования» начинается с указазателей и операций над указателями. Далее рассматриваются наиболее актуальные вопросы построения и использования функций. Затем рассмотрено выделение и освобождение динамической памяти в С и С++, формирование числовых одномерных массивов и матриц в динамической памяти. Следующий раздел посвящен изучению символьных и строковых данных, приведены примеры библиотечных функций для работы с такими данными. Затем рассмотрена работа с файлами – в языке С на верхнем и нижнем уровне, и в языке С++. Далее подробно изложены классические сортировки числовых массивов. Здесь же продемонстрировано применение принципа наименьших привилегий. Затем зассмотрен линейный поиск в неотсортированном массиве и бинарный поиск в отсортированном массиве. Последующий лекционный материал посвящен типам – структурам, объединениям, перечислениям. Рассмотрены динамические структуры данных – стеки, очереди, списки, деревья. Достаточно подробно рассмотрены классы, перегрузка операций. Даны необходимые пояснения к использованию в лабораторных работах класса формы в среде Builder. Продемонстрированы особенности классов для динамически создаваемых объектов. В заключение даны основные понятия наследования классов, механизма управления объектами иерархии классов.

Указатели. Операции над указателями Операции адресации и разыменования.

int x=3;

Этим объявлением в статической оперативной памяти выделяется ячейка под целую переменную с именем x, в которую затем заносится число 3. В этом случае говорят, что x прямо ссылается на переменную со значением 3. Например, в операторе

cout<<x<<endl;// вывод числа 3 на экран.

int* xptr; xptr=&x;

Объявлен указатель xptr на целое число. В статической оперативной памяти под указатель выделяется 4 байта. В операторе xptr=&x; указателю xptr присваивается адрес переменной x, в которой находится число 3.

Имя xptr – это имя указателя, или имя переменной, значением которой является адрес.

Операция & - это операция адресации (унарная операция), которая возвращает адрес своего операнда (здесь - переменной x).

Для доступа к данным (в данном случае к числу 3) через указатель xptr к последнему применяют унарную операцию косвенной адресации, или разыменования - *, которая возвращает значение объекта, на которую указывает её операнд (здесь - указатель xptr). В этом случае говорят, что xptr косвенно ссылается на переменную со значением 3. Например,

cout<<*xptr<<endl; //вывод числа 3 на экран.

Операции адресации & и разыменования * дополняют друг друга:

cout<<&x<<endl //0xfff4

<<xptr<<endl; //0xfff4

cout<<&*xptr<<endl //0xfff4

<<*&xptr<<endl; //0xfff4

В этих операторах на экран выводится адрес переменной x в виде шестнадцатеричного числа 0xfff4.

Примечание. Указатель на void, например, void* p, т.е. p, не может быть разыменован (*p – неверно).