
- •Информация, её виды. Св-ва инфы. Сп-бы передачи инфы. Кодирование инфы, представление инфы в компе. Измерение объёмов инфы. Формулы Шеннона, Хартли.
- •Классификация операционных с-м и их основные возможности. Ф-ции ос. Понятие объекта и эл-ты упр-ия ос Windows. Основные операции над объектами ос Windows.
- •Технологии обработки инфы в электронных таблицах. Табличный процессор ms Excel: назначение, функциональные возм-ти. Организация вычислений. Примерыиспользования. Объектная модель ms Excel.
- •Алгоритм(ал) и его св-ва. Способы описания алг-мов. Базовые стр-ры алг-мов. Осн этапы построения алг-ма. Структурный подход при конструировании алг-мов.
- •Алгоритмы сортировки одномерных числовых массивов и поиска значения в массиве. Метод деления пополам.
- •Метод итерации. Рекурсия. Некоторые математические рекурсивные алгоритмы. Сведение рекурсивного алгоритма к итерационному и наоборот.
- •Объекты и функции. Ссылки на объекты. Перегрузка конструкторов. Конструктор копий.
- •Перегрузка операций (операторов). Перегрузка бинарных операторов. Оператор-функция «присваивание».
- •Наследование. Управление доступом к базовому классу. Конструкторы, деструкторы и наследование. Виртуальные функции и полиморфизм.
- •Технологии обработки и хранения сложно структурированных данных. Базы данных, системы управлений базами данных (субд). Модели данных. Субд ms Access: назначение, функциональные возможности.
- •Представление графической информации на web-странице. Требования к иллюстрациям в Интернет. Web-оптимизация изображений. Гиперссылки. Навигация в html-документах.
- •Основные службы Интернет. Технологии поиска информации в Интернет. Каталоги, поисковые системы, метапоисковые системы. Электронная почта, клиентское по.
- •Классификация эвм. Понятие об архитектуре, структуре и принципах функц-я компа. Структурная схема простейщего компьютера.
- •Устройство современного персонального компьютера. Корпус и блок питания. Системная плата. Процессор. Эл память. Bios. Интерфейсы.
- •Периферийные устройства компьютера. Сети. Устройства ввода-вывода. Мониторы. Внешняя память. Акустические системы. Принтеры. Локальные сети. Сетевые карты. Модемы.
- •Высказывания, логические операции над высказываниями. Формулы алгебры высказываний. Нормальные и совершенные нормальные формы формул алгебры высказываний.
- •Понятие предиката. Кванторы. Формулы логики предикатов. Свободные и связанные переменные.
- •Основные этапы операционного исследования задач. Модели типовых задач ио.
Алгоритмы сортировки одномерных числовых массивов и поиска значения в массиве. Метод деления пополам.
метод деления пополам (дихотомия, двоичный поиск. Бинарный поиск) он прим к упорядоченному массиву. Алгоритм: находим индекс середины массива m=[(1-n)/2] сравниваем A(m) и x. Возможны случаи:1)A(m)=x, элем найден его №m; 2)A(m)<x-поиск надо вести в правой части массива начиная с A(m+1) по A(n); 3)A(m)>x-поиск надо вести в левой части с A(1) по A(m-1).
Пусть неизвестный корень с уравнения f(x) = 0 отделён, т.е. дан отрезок [a ; b]., которому принадлежит только этот корень. В качестве приближённого значения корня можно взять любую точку x0 € [a; b]. Погрешность |c – x0| < |b – a|. Для уточнения корня с заданной точностью h нужно сужать отрезок, на котором находится корень, пока его длина не станет меньше h. Процесс сужения отрезка называется уточнением корня с заданной точностью. Сужение нужно проводить так, чтобы каждый последующий отрезок принадлежал предыдущему и содержал корень.
Таким образом, корни можно уточнить, последовательно сужая отрезок, деля его пополам и выбирая ту половину, в которой находится корень.
Пусть
корень с уравнения f(x) = 0 отделён на
отрезке[a ; b]. В качестве точки x0, которую
назовём нулевым приближением корня,
выберем середину отрезка: x0 =(a+b)/2. Корень
с будет принадлежать тому из отрезков
[a; x0] или [x0; b], на концах которого функция
принимает значения противоположных
знаков. Пусть f(a)∙f(x0)<0, тогда с €[a; x0].
Чтобы ещё сузить отрезок, делим его
пополам и находим: x1=(a+ x0)/2. Пусть
f(x0)∙f(x1)<0, тогда с€[x1; х0] и т. д., до тех
пор, пока не получится отрезок, длиной
не превосходящий заданного значения
h. Метод деления отрезка пополам удобен
тогда, когда легко вычисляются значения
функции на концах отрезков и точность
вычисления их не меньше требуемой
точности определения корня. При уточнении
приближённого значения корня уравнения
f(x)=0 методом деления отрезка пополам
всегда имеет место сходимость процесса,
т. е. последовательность приближённых
значений корня x0, x1, x2, …, xk, … будет
сходиться к самому корню с. С каждым
делением отрезка пополам его длина
уменьшается в два раза. Точку хk-1 получили
после точек x0, x1, …, xk-2, т. е. после k-го
деления. Поэтому точка х k-1 является
концом отрезка, длина которого
.
На этом отрезке находится корень с и
середина отрезка хk. Следовательно, |c –
xk| <
.
Если k→∞, то
→0.
Отсюда следует, что lim k→∞|c-x k|=0 или lim k→∞x k=с.
Метод итерации. Рекурсия. Некоторые математические рекурсивные алгоритмы. Сведение рекурсивного алгоритма к итерационному и наоборот.
1.реккурентность и рек алг. Агл, кот частично опред через самого себя наз рекурсивным. Рекуррентная формула факториала: n!={1, если n=0 или n=1; (n-1)!*n; If (n=0) Or (n=1) Then fakt=1 Else fakt=fakt(n-1)*n EndIf. Эта рек ф-ция работает так: 1)n=0 или n=1? Нет fakt=fakt(4)*5; 2)снова вызывается fakt для n=4 : fakt=fakt(3)*4; 3)снова вызывается fakt(3): fakt=fakt(2)*3; 4)снова вызывается fakt(2) : fakt=fakt(1)*2;
5) вызывается функция для n=1 : fakt=1; возвращаемся к п.4 и подставляем полученную единицу fakt=1*2=2; возвращ к п.3 и подставляем вычисленный fakt(2): fakt=2*3=6……fakt=24*5=120. Рек прога отличается простотой, наглядностью и компактностью текста. Рек алгоритм показывает что нужно делать, а нерек алг показывает как нужно делать. Примечание: условие полного окончания рек ф-ции или процедуры должно нах в теле самой процедуры или ф-ции. Еще примеры: 1)рек ф-ция nod(a,b)={a, если b=0; nod(b,a), если a<b; nod(a mod b, b), если a>b. 2)рек опр-е n-го числа Фибоначчи: F(n)={1, если n=2 или n=1; F(n-1)+F(n-2), если n>2.
2.метод итерации (Итерация – результат повторного прим какой-либо матем операции. М.и.-метод реш задач прикладного характера. Осн на послед приближении к реш задач путем многократного прим некот аналитич или вычисл процедуры. При этом исх данные для каждого последующего шага явл результатом прим предыд шагов). Привлекательным в итерационных методах является их самоисправляемость и простота реализации на ЭВМ.
Указатели и свободная память в С++. Динамические массивы. Указатели и строки. Динам-ие стр-ры
Указатели — переменные, в которых хранятся адреса. Мы говорим, что указатель указывает на адрес, который он содержит. При объявлении указателя необходимо «взывать, на объект какого типа он указывает. Результатом применения операции разыменования(*) к указателю является значение по адресу, на который он указывает. Именованная же память распределяется во время компиляции. Сделаем мы это с помощью оператора С++ NEW.Эта технология реализуется так: int* pn= new int;( К памяти можно обращатся только через указатель). Сравните с :int higgens; int* pi = &higgens; ;( К памяти можно обращатся и по имени, и через указатель). Общая форма оператора NEW: имяТипа имяУказателя = : new имяТипа дважды имяТипа, т.к.если Вы уже объявили указатель нужного типа, то можете использовать его вместо объявления нового. Освобождение памяти с помощью оператора Delete. int * ps = new int; delete ps; В этом примере очищается область памяти, на которую указывает ps, но сам указатель ps не удаляется. Его можно снова использовать для указания на другую распределенную память. Необходимо всегда уравновешивать использование оператора NEW и оператора DELETE. Чтобы не столкнуться с утечкой памяти.
Основные правила: А. Не используйте оператор delete для освобождения памяти, которую не распределяли с помощью оператора NEW. B.Не используйте оператор delete для освобождения одного и того же блока памяти дважды подряд. C.Используйте оператор delete [ ], если был применен оператор NEW [ ] для распределения массива. D.Используйте оператор delete(без квадратных скобок), если был применен оператор NEW для распределения одного элемента. E.Безопасно примять оператор delete к нулевому указателю (ничего не происходит).
Основные сведения об указателях. 1)Объявление указателей. typeName *_pointerName; double *pn; char *pc; 2)Присвоение значений указателям. &-оператор взятия адреса. Double bubble =3.2; pn = & bubble;//присваивает указателю pn адрес bubble. pc = new char;//присваивает указателю pc адрес только что зарезервированной записи. 3)Разыменование указателей: Разыменование указателей означает обращение к значению, на которое указывает указатель. Чтобы разыменовать указатель, примените к нему операцию разыменования(*). Cout << *pn;//Печатает значение bubble. *pc = ‘s’;// Помещает ’s’ в ячейку памяти ,адресом которой является pc. 4)Различие между указате-лем и значением, на которое он указывает. int * pi =new int;//присваивает адрес указателю pi. *pi=5; //сохраняет значение 5 по этому адресу. 5)Имена массивов. В большинстве контекстов С++ интерпретирует имя массива как эквивалент адреса первого элемента массива. Int tacos[10];// Теперь tacos – тоже самое, что и &tacos[0]. 6)Арифметика указателей. C++ позволяет прибавлять целые числа к указателям. В результате прибавление единицы равносильно прибавлению значения, равного количеству байтов в объекте , на который указывает указатель, к исходному знанию адреса. Еще можно вычитать целые числа из указателя, а также один указатель из другого. int tacos[10]={5,2,8,4,1,2,2,4,6,8}; int *pt = tacos; pt = pt+1; int *pe= &tacos[9]; pe=pe-1; int diff = pe-pt;// diff равен7, разница между tacos[8] и tacos[1].
Создание массива в процессе компиляции наз статическим связыванием. Создание массива в ходе выполнения программы наз динамическим связыванием, а сам массив – динамическим.
Исп-е оператора NEW для создания динамич массивов. int * p_mas = new int 10; высвободить память для массива delete [ ] p_mas;
Строка — последовательность символов, которая заканчивается нулевым символом. Строка может быть представлена строковой константой в кавычках; в этом случае нулевой символ неявно подразумевается. Строку можно хранить в массиве типа char, а также представлять ее указателем на данные типа char, который указывает на эту строку. Функция strlen() возвращает длину строки без учета нулевого символа. Функция strcpy() копирует строку из одной области памяти в другую. При использовании этих функций включайте в программу файл заголовков string или string.h.
Исп-е оператора new при работе со структурами происходит в 2 этапа: создание структуры (описать структуру до main, напр, chel, затем объявить указатель на структуру и выделить с п-ю new ему память *p_st=new chel) и доступ к ее элем. Пример: созд безымянную структуру типа n и присвоить ее адрес подходящему указателю: n * ps = new n; для доступа к ее элементам можно использовать операцию разыменования указателей (->).пример: ps указывает на структуру типа n, то ps->price- элемент указаной структуры.
Функции пользователя в С++. Функции и массивы. Функции и строки. Ссылки. Ссылки в роли параметров функции. Функции и структуры.
Функция - именованная часть программы, к которой можно обращаться из других частей программы. Функции позволяют исп-ть модульное прогр-е. Все переменные объявляются в описаниях функций локальными переменными. Большинство функций имеют список параметров, который обеспечивает значения для связующей информации между функциями.
Функции бывают 2х видов: ф-ии с возвр зн-ями и без них. При работе с ф-ми нужно помнить о 3 аспектах:
Перед ф-ей main объявить прототип ф-ии
За ф-ей main записать реализацию ф-ии
Записать вызов ф-ии, кот не возв-ет рез-т (void) в main сам-ым оператором. Если ф-ия возв-ет рез-т, то она м.б. исп-на в выр-ях и в объекте cout.
Функции и массивы
Если пар-ом ф-ии явл-ся массив, то для неё нужно ук-ть имя массива[] и кол-во эл-ов. На самом деле прога не передает ф-ии содержимое массива, а только сообщает ей, где он нах-ся, что представляют собой его эл-ты )тип и кол-во). Если ф-ии передать массив, то она будет работать с оригиналом. Исп-е адресов массивов в качестве аргументов позволяет экономить время и память, необх для копирования всего массива.
Функции и строки
Если необходимо передать функции в качестве аргумента строку, есть 3 варианта представления строк: массив типа char; строковая константа, заключенная в кавычки (строковый литерал); указатель на значение типа char, кот присвоен адрес начала строки. В прототипе строковой ф-ции в кач-ве типа формального параметра, представл.строку, должен исп-ся тип char. Если вы хотите созд ф-цию, кот возв-ет строку, она сама это сделать не способна, зато она может возвратить адрес строки.
Функции и стр-ры
Структуры ведут себя по отнош к ф-циям как пременные базовых типов данных, принимающих только одно значение, структура объединяет данные в единую сущность, кот обрабатывается как целый модуль. Имя структуры- просто имя структуры, если надо адрес, то следует восп-ся операцией адресации &. Наиб простой путь для создания проги, в кот исп-ся стрк-ры, заключается в том, чтобы рассм-ть эти стр-ры как базовые типы данных, т.е. передавать их в виде аргументов и при необх-ти исп-ть как возвращаемые значения.
5ссылка представляет собой имя, кот явл-ся альтернативным или псевдонимом для ранее объявленной пременной. Осн.назначение ссылок – применение их в кач-ве формальных аргументов ф-ий. Исп-я ссылку в кач-ве аргумента, ф-ция работает с исходными данными, а не с их копиями. Ссылки представляют собой удобную альтернативу указателям при работе крупных структур посредствам ф-ций, они широко исп-ся при работе классов. 6Чаще всего ссылки исп-ся в кач-ве параметров ф-ции, при этом переменной в ф-ции становится псевдонимом переменной из вызывающей проги. Такой метод передачи аргументов наз. передачей по ссылке,он позволяет вызываемой ф-ции получить доступ к переменным в вызывающей ф-ции.
8Встроенная функция - функция, код которой прямо вставляется в том месте, где она вызвана. Как и макросы, определенные через #define, встроенные функции улучшают производительность за счет возможности дополнительной оптимизации ("процедурная интеграция").В отличие от #define макросов, встроенные (inline) функции не подвержены известным ошибкам двойного вычисления, поскольку каждый аргумент встроенной функции вычисляется только один раз. Другими словами, вызов встроенной функции - это то же самое что и вызов обычной функции, только быстрее. Также, в отличие от макросов, типы аргументов встроенных функций проверяются, и выполняются все необходимые преобразования.
Определение класса в С++. Создание объектов класса. Конструкторы и деструкторы. Виды констр. Статич и динамич члены-переменные классов. Массивы объектов.
Класс - определяемый пользователем тип. Каждый класс представляет уникальное множество объектов и операций над ними (методов). Класс предоставляет средства для создания, манипулирования и уничтожения таких объектов.
Конструкторы в языке С++ имеют имена, совпадающие с именем класса. Конструктор может быть определен пользователем, или компилятор сам сгенерирует конструктор по умолчанию. Конструктор может вызываться явно, или неявно. Компилятор сам автоматически вызывает соответствующий конструктор там, где Вы определяете новый объект класса. Конструктор не возвращает никакое значение, и при описании конструктора не используется ключевое слово void. Функцией, обратной конструктору, является деструктор. Эта функция обычно вызывается при удалении объекта. Например, если при создании объекта для него динамически выделялась память, то при удалении объекта ее нужно освободить. Локальные объекты удаляются тогда, когда они выходят из области видимости. Глобальные объекты удаляются при завершении программы. Как и конструктор, деструктор не возвращает никакое значение, но в отличие от конструктора не может быть вызван явно. Конструктор и деструктор не могут быть описаны в закрытой части класса. Конструкторы могут иметь параметры. Для этого просто нужно добавит необходимые параметры в объявление и определение конструктора. Затем, при создании объекта, задайте параметры в качестве аргументов. В отличие от конструктора, деструктор не может иметь параметров. Оно и понятно, поскольку отсутствует механизм передачи параметров удаляемому объекту.
Довольно часто возникает необходимость иметь несколько объектов одного и того же класса, гораздо целесообразнее созд массивы объектов. Массив объектов определяется так же как массив любого другого типа. <type> <name mass>[number] Правда, появляются некоторые дополнительные условия на методы класса. Для созд объектов класса, кот не инициализированы явно, прога всегда исп конструкторы классов, опред по умолчанию. Для данного требуется, чтобы для класса либо вообще явно не было определено никаких конструкторов, либо чтобы конструктор по умолчанию был определен явно.