Автор работы: Пользователь скрыл имя, 27 Января 2012 в 00:57, шпаргалка
Работа содержит ответы на вопросы по дисциплине "Программирование и компьютеры"
тип *имя;
имя = new тип ([размер]);
Освобождение памяти, выделенной с помощью операции new, должно выполняться с использованием операции delete:
delete имя указателя;
Операции над указателями:
new, delete
косвенное обращение (разадресация) - *
присваивание значений указателя
сравнение на равенство или неравенство с другим указателем (или с NULL)
арифметика указателей (учитывает размер типа, адресуемого указателем)
сложение с константой (вычитание)
вычитание указателей одного типа
деление указателей на размер типа
++, -- (инкремент, декремент)
Обычно динамические переменные имеют тип массивов, объектов структур или классов. Динамические переменные типа структур или класса чаще используются в виде самоадресуемых. В этом случае они имеют поля, являющиеся указателями на другой объект типа этой структуры.
Пример.
struct Node
{ AnsiString Name;
int count;
Node
*link;};
Node *head = new Node;
head->Name = “Rose”;
head->count = 15;
head->link = NULL;
typedef Node* Node Ptr;
Node Ptr temp = new Node;
temp->Name = “Tulip”;
temp->count=5;
temp->link = NULL;
head->link=temp;
Односвязный, двусвязный, циклические, мультисписок (каждый узел такого списка входит не в один список, а в множетво списков)
Пример реализации двусвязного списка.
Struct Node
{int data;
Node *prev;
Node *next;};
Node *head = NULL, end_ptr = 0;
void add (Node *head, Node *end_ptr, int d)
{
Node *temp = new Node;
Temp->data = d;
Temp->next = 0;
If (head)
{
end_ptr->next=temp;
temp->prev=end_ptr;
end_ptr = temp;
}
else
{
temp->prev=0;
head=temp;
end_ptr = temp;
}
}
4. Файловый ввод-вывод.
Сущ-ют файловые потоки, с пом-ью кот-ых в С++ осуществляется файловый ввод-вывод: ifstream – чтение, ofstream – запись, fstream – чт/зап. Ifstream in(“test.txt”);in>>v_per;
Кроме того, сущ-ют операции для работы с файлами посредством объявления файловых переменных. Открытие файла – это объявление переменной-объекта, к-ая будет играть роль файла. Как только р-та с файлом закончена, прога должна сообщить ОС, что этот дескриптор не нужен, т.е. закрыть файл, при этом файловую переменную м-но использовать несколько раз. Классификация: способ доступа, способ представления.
fopen
Открывает или создает файл. Возвращает указатель на переменную типа FILE. В качестве параметра используется NULL-terminated строка и способ открытия, тоже как строка. В Хелпе перечислены варианты r - только для чтения. Если попробуете записать в такой файл, вылетит исключение. Вариант w - создает (переписывает заново) файл для записи. Символ a говорит, что файл открыт для обновления.
Другие варианты - r+, w+, a+ говорят о том, что файл открыт для обновления.
fread, fwrite
Параметры у fread и fwrite одинаковы. Первый - указатель на область, получающую данные. Второй - размер порции считываемых данных. Третий - количество этих самых порций. Четвертый - собственно дескриптор потока. У fwrite все, аналогично, только относится к записываемым данным.
feof
Логическая функция EOF, возвращающая true при установлении указателя на символ "конец файла", Все мы знаем циклы while(!feof(file)){ ... }.
fseek, ftell
Управляют текущей позицией дескриптора потока. Функция fseek реляционна. Смещение может быть относительно начала файла, его текущей позиции или конца файла. Параметры этой функции такие - дескриптор потока, смещение, определение типа смещения. Последнее как раз и определяет, от чего смещается указатель и может быть одной из трех констант:
*SEEK_SET Смещает курсор относительно начала файла.
* SEEK_CUR Относительно текущей позиции.
* SEEK_END Относительно конца файла.
Функция ftell с единственным параметром - дескриптором потока, передает приложению текущую позицию указателя.
fflush, fclose
Первая
функция сбрасывает данные из буфера обмена
с файлом в файл, а вторая закрывает его.
6. Объектно-ориентированные приемы программирования. Классы.
ООП позволяет разбить задачу на ряд самостоятельных связанных между собой подзадач, содержащих модели объектов реального мира.
Каждая подзадача содержит коды и данные, относящиеся к объекту, что упрощает решение задачи в целом и позволяет решать задачи большего объема.
Понятие объекта тесно связано с понятием класса. Класс – это дальнейшее развитие понятия структуры. Он позволяет создавать новые типы и определять функции, манипулирующие с этими типами.
Объект
- это представитель
ООП использует механизмы инкапсуляции, полиморфизма и наследования.
Инкапсуляция позволяет создавать объекты - данные, процедуры и функции, манипулирующие с этими данными.
Данные, доступные для использования внутри объекта - private, данные доступные извне - public.
В общем, виде объект можно рассматривать как переменную, определенную программистом.
Полиморфизм позволяет одно имя функции использовать для решения разных задач (общих для класса действий).
В зависимости от данных выполняются те или иные действия.
Наследование позволяет одному объекту наследовать свойства другого объекта, т.е. порожденный класс наследует свойства родительского класса и добавляет собственные свойства.
Классы.
Класс используется для создания объектов. Основная форма имеет вид:
class имя класса
{
закрытые функции и переменные
public:
открытые функции, функции-члены и переменные
}
список объектов;//не является обязательным
Закрытые функции и переменные - члены(members) доступны только для других членов этого класса.
Открытые функции и переменные доступны для любой части программы, в которой находится класс.
Функции, объявленные внутри описания класса называются функциями членами (member functions).
Для определения функций-членов используется форма:
тип имя класса:: имя функции-члена (параметры)
{
тело функции
}
Два двоеточия после имени класса называются операцией расширения области видимости (scope resolution operator).
Определение класса только определяет тип объектов, а сами объекты не задает), мять не выделяется). Для создания объектов имя класса используется как спецификатор типа данных.
После создания объекта к открытым членам класса можно обращаться, используя операцию точка.
Пример.
#include <iostream.h>
class class1 {//объвлен сласс class1
int a; //доступна для функций членов class1
public:
int kwadrat(int b);//функция член класса class1
};
int class1::kwadrat(int b) //определение функции kwadrat()
{
a=b*b;
return a;
}
main()
{
class1 c; //создается объект с типа class1
cout<<"\n"<<c.kwadrat(3)<<"\
return 0;
}
Информация о работе Шпаргалка по "Программированию и компьютерам"