
Литература / Otvety
.docxНиже представлены:
Вопросы.
Ответы мои. Ответы интернета.
Советую заглянуть в конец файла, что бы не было претензий.
Ответы: 1. Объектно-ориентированное программирование – это
2. Перечислите и поясните основные принципы ООП.
Их 3: Инкапсуляция, Полиморфизм и Наследование.
Инкапсуляция – Принцип, который требует от программиста максимально возможное кол-во полей делать приватными, и получать доступ к ним только через специальные методы.
(Это свойство, позволяющее объединить в классе и данные, и методы, работающие с ними и скрыть детали реализации от пользователя.)
Полиморфизм – Принцип требует от программиста все схожие по ф-ям методы – перегружать.
(Свойство классов, позволяющее использовать объекты классов с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.)
Наследование – Принцип требует от программиста не создавать class’ы с одинаковыми по смыслу полями и методами, а вместо этого передавать их от 1 класса к другому.
(Это свойство, позволяющее создать новый класс-потомок на основе уже существующего, при этом все характеристики класса родителя присваиваются классу-потомку.)
3. Опишите принцип работы списков.
Собсно всё взято из инета:
В односвязном списке каждый элемент информации содержит ссылку на следующий элемент списка. Каждый элемент данных обычно представляет собой структуру, которая состоит из информационных полей и указателя связи. Концептуально односвязный список выглядит так, как показано на рис. 22.2.
+---------+ +---------+ +---------+ | данные | | данные | | данные | +---------+ +---------+ +---------+ |указатель|--->|указатель|--->| 0 | +---------+ +---------+ +---------+ |
Рис. 22.2 Односвязный список |
4. Следует избегать или стремиться к использованию списков? Поясните ответ.
Я считаю, что следует избегать, ведь это как-то не экономно, хранить в каждых данных указатель на следующий элемент… Опять же это имхо. Мнения в интернете разбегаются и я думаю вы сами сообразите.
5. Что такое синтаксис языка программирования?
Синтаксис языка программирования – это набор правил построения языковых конструкций.
(Проще говоря, это то как правильно написать программу без лишнего кода и запутанностей.)
6. Что такое класс? Класс – это набор шаблонов программы, который в последствии мы можем заполнить полями и методами.
(Это абстракция описывающая методы, свойства, ещё не существующих объектов (Экземпляров класса).)
7. Что такое экземпляр класса?
Экземпляр класса – это шаблон программы, который мы в последствии можем заполнять и использовать.
(Экземпляр класса — это конкретное представление абстракции, имеющее свои свойства и методы. Созданные объекты на основе одного класса называются экземплярами этого класса.)
8. Как называется принцип ООП, требующий делать поля класса приватными?
В чём по-Вашему его смысл?
Это Инкапсуляция. Смысл (имхо) в том что бы скрыть реализацию написания кода от юзера, и сохранить те данные, которые мы в последующем не собираемся менять.
(Ответов и мнений в интернете очень много, хотите иного – ищите сами.)
9. Как называется принцип ООП, требующий перегружать методы класса? В чём по-Вашему его смысл?
Это Полиморфизм. Смысл (опять – же имхо) в том что нет смысла создавать несколько подпрограмм которые складывают 2+2, создадим лучше одну и будем её использовать (вызывать) там, где нужно и столько сколько нужно.
(Ответов и мнений в интернете очень много, хотите иного – ищите сами.)
10. Как называется принцип ООП, требующий передавать содержание от одного класса к другому? В чём по-Вашему его смысл?
Это Наследование. Смысл (также имхо) в том что бы не создавать ещё один большой класс со своими ТАКИМИ ЖЕ правилами, мы создаем класс – потомок, и передаем все правила и свойства ему от основного класса.
(Ответов и мнений в интернете очень много, хотите иного – ищите сами.)
Думаю, хватит повторять/Учить, иди выпей чайку, Тёма разрешил :з
11. Как можно подробнее опишите принцип работы конструктора и деструктора при наследовании.
/* Тут тупо выучить не получиться, тут нужно думать самому, поэтому я просто объясню принципы конструктора/деструктора как Я это умею, а ниже опять- таки приведу сведенья из инета. Выбирать вам */
Конструктор – это что-то похожее на подпрограмму, но такой не является, т.к. Выполняется сразу после запуска программы, вне зависимости ХОТИТЕ ВЫ ТОГО ИЛИ НЕТ >_< .
Это место где вы храните такую штуку как циклы, создание каких-либо массивов, надписей, генерацию чего-либо, или вообще всего того что создается, а потом просто в отдельных подпрограммах это уже выводите при помощи «cout»
(Конструктор – это особый метод класса, который выполняется автоматически в момент создания объекта класса. То есть, если мы пропишем в нем, какими значениями надо инициализировать поля во время объявления объекта класса, он сработает без “особого приглашения”. Его не надо специально вызывать, как обычный метод класса. ~)
Деструктор — это тоже что-то подобное подпрограмме, но в этот раз мы не создаем а уничтожаем, очистка данных или очищение динамической памяти, например когда конструктор создает, он заполняет память, а деструктор её чистит. Ещё при его создании перед его названием нужно ставить тильдочку ~.
(Деструктор – так же особый метод класса, который срабатывает во время уничтожения объектов класса. Чаще всего его роль заключается в том, чтобы освободить динамическую память, которую выделял конструктор для объекта. Имя его, как и у конструктора, должно соответствовать имени класса. Только перед именем надо добавить символ. ~ )
12. Перечислите недостатки обычных массивов и способы решения каждого из них.
Недостатки: требует больше памяти на указатели, доступ к элементам последовательный, нет возможности изменять размер после его создания. (Допишите если вы что-то вспомнили).
(Всё вверху из инета)
13. Почему рекурсии необходимо передавать параметры?
14. От чего зависит область видимости переменных? Как её контролировать?
Видимость переменных в классах зависит от того какой у них статус Public или Private, в основной программе же это зависит, глобальны ли они или нет, где их задают и где они используются, так же если вы используете переменную, которую создали внутри цикла, например как: for (int i=0;…), то после окончания цикла «i» удаляется. Контролировать… я думаю, что правильность выбора места написания создания переменной и есть контролем.
15. Что такое инкремент и декремент и для чего они нужны?
Инкремент – это увеличение на единицу (++), декремент – это уменьшение на единицу (--). Операции декремента и инкремента с лёгкостью заменяются арифметическими операциями или операциями присваивания.
16. Что такое указатель? Для чего и как они используются?
Указатель – это своего рода ссылки или ярлыки, используются они для того что бы указывать на переменные или функции.
Пример использования: #include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int var = 123; // инициализация переменной var числом 123
int *ptrvar = &var; // указатель на переменную var (присвоили адрес переменной указателю)
cout << "&var = " << &var << endl;// адрес переменной var содержащийся в памяти, извлечённый операцией взятия адреса
cout << "ptrvar = " << ptrvar << endl;// адрес переменной var, является значением указателя ptrvar
cout << "var = " << var << endl; // значение в переменной var
cout << "*ptrvar = " << *ptrvar << endl; // вывод значения содержащегося в переменной var через указатель, операцией разименования указателя
system("pause");
return 0;
}
Всё что нужно:
int *ptrvar; // объявление указателя
ptrvar = &var; // инициализация указателя
Указатель – переменная, значением которой является адрес ячейки памяти. То есть указатель ссылается на блок данных из области памяти, причём на самое его начало. Указатель может ссылаться на переменную или функцию. Для этого нужно знать адрес переменной или функции. Так вот, чтобы узнать адрес конкретной переменной в С++ существует унарная операция взятия адреса &. Такая операция извлекает адрес объявленных переменных, для того, чтобы его присвоить указателю.
17. Как создать динамический массив и зачем это делать?
Вот наглядный пример создания динамического масива (найден в инете): #include <iostream>
using namespace std;
int main() {
int num; // размер массива
cout << "Enter integer value: ";
cin >> num; // получение от пользователя размера массива
int *p_darr = new int[num]; // Выделение памяти для массива
for (int i = 0; i < num; i++) {
// Заполнение массива и вывод значений его элементов
p_darr[i] = i;
cout << "Value of " << i << " element is " << p_darr[i] << endl;
}
}
Зачем это делать:
Динамический массив – это массив размер и память которого определяется во время выполнения программы. Выделения памяти осуществляется оператором new. Так же адрес первого элемента хранится в переменной, объявленной как указатель.
Вообще, как мне кажется это делается для удобства, ведь динамический массив более гибкий чем обычный и позволяет сделать намного больше.
18. Что такое векторы и в каких случаях они нужны, а в каких нет?
Вектор в C++ — это замена стандартному динамическому массиву, память для которого выделяется вручную, с помощью оператора new.
Нужны они (имхо), в тех случаях когда мы точно уверенны сколько элементов у нас должно быть и мы не хотим тратить ресурсы компьютера.
19. Как передавать параметры подпрограммам и зачем это делать?
Наглядный пример:
#include<iostream>
using namespace std;
int pas, ok;
void Proga2(int &pas){ //Прием переменной.
switch (pas){ //Определение.
case 1: cout << "Yes" << endl;
break;
case 2: cout << "No" << endl;
break;
}
}
void Proga1(){
cout << "Enter password:" << endl; //Ввод и считывание нашей переменной.
cin >> pas;
Proga2(pas); //Передача параметра (переменной).
}
void main(){
Proga1(); //Вызов подпрограммы.
}
Делается (имхо) это для того что бы например не писать все действия в одной подпрограмме а написать в несколько, и так же что бы переменную можно было использовать во многих подпрограммах. 20. Что такое язык программирования?
Язык программирования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением. Задачи я не решаю! Считаю что там каждый сам может справиться, ибо в ответах есть вся нужная инф-я. Повторяйте)) P.S. Если вы нашли ошибку, или не правильный ответ, то не нужно ныт в группу или мне в лс что мол «Не правильно сделал, как же так, фу на тебя». Я писал ответы и старался, цените труд. Всем удачи