Загрузка...

Графические Интерфейсы. Лабораторная работа №3.


wm geometry . 200×180 wm title . «Лабораторная работа №3» . config -bg Blue button .img1 -text «Водяные линии» -command [namespace code img1] -width 20 -bg White button .img2 -text «Голубые холмы» -command [namespace code img2] -width 20 -bg White button .img3 -text «Закат» -command [namespace code img3] -width 20 -bg White button .img4 -text Читать далее

ТПР — лабы


Многоканальные системы массового обслуживания СМО 2

Лабораторная 4 по С#- 2 семестр. 2 курс. ВКСС. Программирование.


Лабораторная 4 по С#- 2 семестр. 2 курс. ВКСС. Программирование. Лабораторная работа № 4 Тема:  Структуры и перечисления в С#  Цель работы: Научиться создавать типы данных структура и перечисление. Изучить методы работы со структурами и перечислениями в программе на С#. Лабртаторная 4 по С#

Системное программирование — лабораторные работы


Лабораторные работы по системному программированию: Лабораторная работа №1_СП Лабораторная работа №2_СП Лабораторная работа №3_СП Лабораторная работа №4_СП Лабораторная работа №5_СП Лабораторная работа №6_СП Лабораторная работа №7

Новые средства языка С++. Ссылки


Ссылка — это псевдоним для другой переменной. Они объявляются при помощи символа &. Ссылки должны быть проинициализированы при объявлении, причем только один раз. Тип "ссылка на type" определяется следующим образом: type& имя_перем. int& i, double& var.

Спецификатор inline.


Может быть использован перед определением функции для того, чтобы компилятор помещал ее код непосредственно в место вызова функции. //Программа 3. #include <stdio.h> #include <conio.h>

Динамически распределяемая память


В отличие от статических и автоматических данных, память под которые распределяется компилятором, динамически распределяемая память выделяется программой самостоятельно. Время жизни таких объектов также определяется программой. Память выделяется по мере необходимости и должна освобождаться как только данные, содержащиеся в ней больше не нужны. Доступ к ней осуществляется при помощи указателей.

Объявления указателей и приведение типов


Указатель представляет собой переменную, содержащую адрес другой переменной. Объявление указателя всегда должно устанавливать его на некоторый конкретный тип, даже если этот тип void (что фактически означает указатель на любой тип). Если type есть любой предопределенный или определенный пользователем тип, включая void, то объявление type *ptr;

Операции с указателями


Получить значение объекта, который адресуется указателем, можно при помощи операции * : int * s; //s не определено int b, a = 10; //b не определено s = &a; //s указывает на а b = *s; //b = 10

Преобразования указателей


Указатели одного типа могут быть преобразованы в указатели другого типа при помощи следующего механизма приведения типов: char *str int *ip str = (char*)ip; В более общем виде, приведение (type*) преобразует указатель в тип "указатель на тип type".

Операции new и delete


Операции new и delete выполняют динамическое распределение и отмену распределения памяти, аналогично, но с более высоким приоритетом, нежели стандартные библиотечные функции семейства malloc и free. Упрощенный синтаксис:

Операция new с массивами


Если "имя" это массив, то возвращаемый new указатель указывает на первый элемент массива. При создании с помощью new многомерных массивов следует указывать все размерности массива: mat_ptr = new int[3][10][12]; // так можно mat_ptr = new int[3][][12]; // нельзя …

Инициализаторы с операцией new


Другим преимуществом операции new по сравнению с malloc является возможность инициализации. При отсутствии явных инициализаторов объект, создаваемый new, содержит непредсказуемые данные ("мусор"). Объекты, распределяемые new, за исключением массивов, могут инициализироваться соответствующим выражением в скобках: int_ptr = new int(3);

Проблемы, возникающие при использовании динамически распределяемой памяти


1). Недоступные блоки — блоки памяти, указатели на которые потеряны. 2). Висящие ссылки — указатели на освобожденные блоки памяти. 3). Повторное освобождение динамической памяти. Недоступные блоки возникают после выделения памяти при присваивании указателю какого — либо другого значения или при уничтожении локального указателя после выхода из области видимости.

Указатель на void


Такому указателю можно присвоить значение указателя на любой базовый тип. void *v_ptr; int *int_ptr = new int; v_ptr = int_ptr;

Перегрузка функций


Имена функций могут быть перегружены в пределах одной области видимости. Компилятор отличает одну функцию от другой по сигнатуре. Сигнатура задается числом, порядком следования и типами ее параметров.

Значение формальных параметров по умолчанию


Формальный параметр может иметь значение по умолчанию. Все параметры стоящие справа от него тоже должны иметь значения по умолчанию. Эти значения передаются в функцию, если при вызове данные параметры не указаны.

Использование системы ввода/вывода


Система ввода/вывода – неотъемлемая часть среды программирования С++, и она занимает в языке особое место. В заголовочном файле Iostream.h содержаться следующие объявления одного потока ввода и трех потоков вывода:

Форматирование вывода


Для форматирования вывода можно установить несколько флагов, для этого используются функции-члены flags, setf, unsetf. unsigned v =12345; cout << "Before: " << v << endl; cout.setf(cout.hex); //Модификация потока cout << "After: " << v << endl;

Лабораторная работа 1


Цель работы: Ознакомиться с некоторыми расширениями языка С, позволяющими перейти к объектно-ориентированному программированию С++. 1. Порядок выполнения работы. 1. Ознакомьтесь с теоретическими сведениями. 2. Разберите работу программ 1,2,3. В программе 3 обратите внимание на время выполнения первого и второго цикла.

Классы. Понятие класса.


Класс — это определяемый пользователем тип. Описание класса очень похоже на описание структуры в Си. Рассмотрим реализацию понятия даты с использованием struct для того, чтобы определить представление даты date и множества функций для работы с переменными этого типа:

Лабораторная работа 2


Цель работы: Ознакомиться со структурой класса, его созданием и использованием, описанием членов-данных класса и методов доступа к ним, возможностью инициализации объектов класса с помощью конструкторов и уничтожением их с помощью деструкторов.

Простое и множественное наследование


3.1. Простое наследование. Простое наследование описывает родство между двумя классами: один из которых наследует второму. Класс, нахо дящийся на вершине иерархии, называется базовым классом. Прочие классы называются производными классами. Из одного класса могут выводится многие классы, но даже в этом случае подобный вид взаимосвязи остается простым наследованием. Базовый класс часто называют предком, а производный класс Читать далее

Виртуальные функции


Виртуальная функция — это функция, вызов которой за-висит от типа объекта. В ООП можно писать виртуальные функции так, чтобы объект определял, какую функцию необходимо вызвать, во время выполнения программы. Технику использования виртуальных функций иногда называют полиморфизмом, намекая на то, что объекты имеющие дело с виртуальными функциями кажутся приспосабливающимися к контексту, в котором они используются.

Лабораторная работа 3


Цель работы: Ознакомиться с возможностью наследования свойств класса в производных классах, изучить механизм виртуальных функций и их использование для позднего связывания. 1. Порядок выполнения работы. 1. Ознакомьтесь с теоретической частью. 2. Разберитесь с работой программ 1 — 3.

Дружественные классы


В классе можно объявить другой класс дружественным. Один класс (в котором объвляется друг) дает другому классу (другу) возможность доступа ко всем закрытым членам первого класса. Обычно дружественные классы используются, когда двум классам, не связанным отношением родства, необходим доступ к закрытым или защищенным членам класса.

Дружественные функции


Дружественные функции похожи, но более безопасны, чем дружественные классы. Объявление функции дружественной классу дает ей доступ к закрытым и защищенным членам класса. // Программа 2 Пример объявления дружественной функции #include <iostream.h>