Sharky's C++


C++ Primer book - text

C++ Primer book - PDF

Thinking in C++ books

 
 Конспекта по ОКИ за 2010

Уважаеми колеги, тук ще намирате информация и материали за упражненията по ОКИ и Курсов Проект 1 на I курс Информатика Редовно обучение и по АСД на II курс Информатика Задочно обучение


Курсов Проект 1 (пролетен триместър 2010/2011)

Уважаеми колеги, прочетете първо Заданието (изискванията) за Курсовия проект. На всеки от вас ще изпратя персонален имейл с конкретното му задание (условието на задачата и на теоретичните въпроси). Събрани условията на всички задачи - тук. Краен срок за предаване на проектите - лично от студента - последното занятие за триместъра - 08.06.2011 г.
За непредалите Курсов Проект 1 - определям възможност за предаване на 01.07.2011 г. (петък), 422 ауд. 10:00 до 11:00 часа (тогава имам изпит със задочниците). Протокола в момента е в Учебен отдел, така че и да искам, не мога да Ви изпитам и нанеса оценки. Ще го взема на 1 юли от Учебен отдел.
По изключение при представяне на уважителни причини ще назнача една дата в ликвидационната сесия в началото на септември 2011 г. - когато има ликвидация по ОКИ. Може да прочетете и за изискванията за проекта по учебния план.

Внимание, ако работите с Microsoft Visual Studio C++ 6.0 - има документиран проблем в cin.getline() функцията, водещ до пропускане на знака за края на нов ред и некоректно прочитане на следващият оператор за вход. Едно възможно разрешение на проблема е да използвате следният трик: cin.getline(buf, 2); cin.getline(a[k].uch, 20); вместо cin >> a[k].uch; - тук променливата buf  с от тип char[3], a uch e от тип char[21]. При този заобиколен начин, извикването на cin.getline(buf, 2) изчиства непрочетените знаци за нов ред от предходния cin (от предходни редове или предишна итерация на цикъла за вход).

По-добър вариант се оказва
cin.clear(); //clear the error bits for the cin input stream
cin.sync(); //synchronize the input buffer, discarding any leftover characters in the buffer


ОКИ (материалите са за есенния триместър 2011/2012

Припомням, че е желателно да прегледате 2-ра, 3-та и 4-та (при желание и 5-та и 6-та) глава от книгата на М.Тодорова I част!
 

Задачи за преглед Решение *
Преобразуване от 10-чна в двоична бройна система 10to2.cpp
Преобразуване от 10-чна в произволна (до основа 36) бройна система 10ton.cpp
Простите числа от 1 до 1000 (итеративен алгоритъм, неефективен, пълна проверка за делене на всички предходни числа) simplenums.cpp
Задача, комбинираща избор от три алтернативи, безкрайна сума, произведение и трик с по-голямо четно число Suma.cpp
Намиране на броя дни в месеца от невисокосна година Days.cpp
Заплати на служител и данък при надхвърлена сума

zaplati.cpp

    * Ако файлът ви се отваря на един ред (без нови редове) в браузъра, необходимо е да го свалите с Save Target As или Save Link As и после да го отворите с текстов редактор или със среда за програмиране на C++.

Задачите, предвидени за разглеждане по учебен план на упражненията, ще намерите тук. Разгледайте ги!

Нещата, показвани на проектора първите 2 седмици тук.

Предлагам на Вашето внимание следният начин на работа по време на упражненията по ОКИ:

  1. За колеги, незапознати с програмиране: самостоятелно четене на книги и учебници, задаване на въпроси в час, индивидуални консултации в час.
  2. За колеги, запознати с програмиране на Паскал и други езици, различни от С/С++: четене на книги и учебници, индивидуално обясняване на разликите между езика, който знаят и С/С++.
  3. За колеги, запознати с програмиране на С/С++: може да минете на по-сложен проект, за който да ви помагам и напътствам.  Може да четете и материала за триместри 2 и 3 (дисциплините Програмиране и ООП, както и АСД от втори курс – те са пак на С++) и аз да ви обяснявам проблемните неща.

Предлагам следният примерен график за контролните и тяхното съдържание:

  1. Преобразуване на бройни системи – ще съдържа 3 числа за преобразуване от една в друга бройна система (примерно от двоична към шестнадесетична, десетична към двоична, шестнадесетична към десетична). Примерна дата: втора или трета учебна седмица.
  2. Програма на С++ с цикъл и едномерен масив, както и if/else, мин./макс. елемент. Примерна дата: последните 2-3 упражнения за триместъра

Практическата задача на изпита е от рода на тази за втората контролна работа.

При средна оценка равна или по-висока от 5.50 от контролните - има освобождаване от практическата задача на изпита! Оценката на изпита ще е с равна тежест от средната оценка от контролните, оценката от практическата задача на изпита и оценката от теорията на изпита (изпитен билет с 10 въпроса от конспекта)! Уточняваме, че средната оценка е валидна при всички компоненти, различни от 2.00 (пояснявам - задача 6, контролни 6 и теория 2 = крайна оценка 2.00, а не 4.70)!

Полезни адреси: уроци по С++ от uroci.net http://uroci.net/uroci/31/C++.html,  този материал, въпреки че е на английски, съдържа много картинки как да се работи от начинаещи с компилатора и средата на Microsoft Visual C++ 6.0 (която за нашите учебни програми е предостатъчна и е лека и малка – на 1 CD). В компютърните зали на ФМИ има и Visual C++ 2005 или 2008, освен 6.0: http://elvis.rowan.edu/~kay/cpp/vc6_tutorial/.

Тези от Вас, които мразят Майкрософт (да напомня, че лиценз за домашно ползване от студенти на Visual C++ 6.0 имаме – всеки, който иска, може да си запише диска от администраторите в кабинет 530) – мога да препоръчам DevC++ - безплатен компилатор (за сведение неговата среда е написана на Delphi, но ползва GNU GCC компилатор MingW) - http://www.bloodshed.net/devcpp.html


АСД (зимен триместър 2011/2012, Информатика Задочно обучение)

Предлагам да прочетете глава 15 и глава 19 от учебника на Магдалина Тодорова „Програмиране на С++” - част II (основно 19.7, но е важно цялата глава 19-та да усвоите - много от свойствата на нормалните потоци са свойства и на файловете, които също са потоци).

Използвайте учебника на Магдалина Тодорова и файла Files ATD.doc в него съм извадил интересни задачи с потоци и файлове. Припомнете си и от миналата година по ООП за шаблоните – templates (глава 14 от учебника). Доцент Донева много държи задачата да е решена по  принцип с шаблони - така се постига универсалност на динамичната структура данни (на практика шаблона се прилага върху типа данни на елемента-данни на структурата - например стекът може да се ползва за всякакви други прости типове, без да се пренаписва). Такава примерна задача за стек с използване на шаблони съм приложил във файла stek-template.doc. Вижте и stack.cpp. Spisak.cpp и list.cpp са примери за списъци (едносвързан)  с шаблони, a double_linked_list.cpp e двойносвързан списък с шаблони! Прилагам и opashka ot nizove.doc с пример за опашка, без шаблони, а queue.cpp е с шаблони!

Прочетете и в глава 14.15  - обяснено е много добре за стек от цели  числа, а в 14.17 са описани шаблоните на класовете, които изискваме на изпита, а зад. 130 е същият клас за стек с използване на шаблони!

В гл. 14.17 (зад. 130) е подробно обяснено, като описанието на стековете и по-подробно развитие на задача 130 има в началото на глава 15-та. Разгледайте внимателно и зад. 131 и 132, за да получите представа за какво се използват тези стекове и да натрупате опит.

В 15.2 е обяснена опашка от цели числа, както и опашка с използване на шаблони.  Вижте зад. 133.  И прегледайте и останалите задачи за опашки в гл. 15.2.

В 15.3 се разглеждат списъците, като има много подробно обяснение на всяка член-функция и операция. В 15.3.3 прегледайте примерните задачи, илюстриращи употребата на списъци.


        Последна редакция: 19-Dec-2011