Sharky's C++


C++ Primer book - text

C++ Primer book - PDF

Thinking in C++ books

 
 Конспекта по ОКИ за 2006/2007

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


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

Уважаеми колеги, прочетете първо Заданието (изискванията) за Курсовия проект. На всеки от вас ще изпратя персонален имейл с конкретното му задание (условието на задачата и на теоретичните въпроси). Събрани условията на всички задачи - тук. Краен срок за предаване на проектите - лично от студента - последното занятие за триместъра - 13.06.2008 г,  По време на сесията няма да се приемат проекти. По изключение при представяне на уважителни причини ще назнача една дата в ликвидационната сесия в началото на септември 2008 г. - на 3.09.2008 г. в 422 аудитория от 8:00 ч (ликвидация по ОКИ). Може да прочетете и за изискванията за проекта по учебния план.

Внимание, ако работите с 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 (от предходни редове или предишна итерация на цикъла за вход).


ОКИ (материалите са за есенния триместър 2008/2009)

Припомням, че е желателно да прегледате 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++.

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

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

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

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

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

Промяна в условията: Контролните са 2, а не 3. Втората контролна ще е на 27/28.11.2008 и ще обединява предишните контролни 2 и 3 от горния план.

За колегите от категория 3 (запознати с езика С++) може да направим контролни 2 и 3 наведнъж предварително – ще се уточним кога при наличие на желаещи!

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

Промяна във формирането на изпитната оценка - няма да има освобождаване от практическата задача! Оценката на изпита ще е с равна тежест от средната оценка от контролните, оценката от практическата задача на изпита и оценката от теорията на изпита (изпитен билет с 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


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

Предлагам да прочетете глава 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 прегледайте примерните задачи, илюстриращи употребата на списъци.


        Последна редакция: 03-01-2009