https://wiki.cdot.senecacollege.ca/w/api.php?action=feedcontributions&user=Brad+Stuart&feedformat=atomCDOT Wiki - User contributions [en]2024-03-28T11:33:02ZUser contributionsMediaWiki 1.30.0https://wiki.cdot.senecacollege.ca/w/index.php?title=Weekly_Schedule_20132_-_OOP344&diff=97353Weekly Schedule 20132 - OOP3442013-07-23T16:25:46Z<p>Brad Stuart: /* blog posts 10 */</p>
<hr />
<div>{{OOP344 Index | 20132}}<br />
<br />
Under Construction!<br />
<br />
== Week 1 - May 5 ==<br />
<br />
=== This Week 1 ===<br />
<br />
* Introduction to Open Source development.<br />
* Collaboration Tools:<br />
** Wiki<br />
** Blog<br />
** IRC<br />
** Code Repository<br />
**: Git, Svn, ....<br />
** Big Blue Button<br />
* Etherpad<br />
** [http://etherpad.proximity.on.ca:9001 Seneca Etherpad]<br />
** http://primarypad.com/<br />
* Object Orientation Review<br />
* C Review<br />
*: pointers<br />
*: pointers and arrays<br />
<br />
=== To Do 1===<br />
==== Due May 7th (Tuesday) 18:00 ====<br />
# Create an account on [https://github.com github]<br />
## Make sure your account name is presentable. This name will stay with you forever.<br />
## Make sure your information on github is complete (real name, email, etc...) <br />
# Send ONE email to [mailto:fardad.soleimanloo@senecacollege.ca?subject=344Github20132 me] containing your git hub id<br />
#: subject of the email should be '''''344Github20132'''''<br />
#: '''''email content'''''<br />
#: name: Your Name (exactly as it appears on your Seneca student card)<br />
#: nickname: Your Nick name<br />
#: Git hub ID: your Github id <br />
==== Due by May 13th, 23:59 ====<br />
# Create a [http://en.wikipedia.org/wiki/Blog blog] (anywhere you like)<br />
# Join the IRC by [http://www.wikihow.com/Register-a-User-Name-on-Freenode registering your nickname on freenode] server and joining the #seneca-oop344 channel for 344 related dialog<br />
#: Additional channels of interest: #seneca to interact with all Seneca students participating in opensource projects, and #seneca-social for Social (off-topic) dialog.<br />
# Read [http://git-scm.com/book Pro-git book]<br />
#: Chapter One and Chapter Two<br />
# Create an account on this wiki: send an email to [mailto:cdot-wiki-admin@senecac.on.ca?subject=Wiki+account+request cdot-wiki-admin@senecac.on.ca] and ask for an account, an email will be sent back to you with your userid and a temporary password; make sure you have the following included in your email.<br />
#* Email subject: Wiki Account Request<br />
#* The subject you are enrolled in: "OOP344"<br />
#* Your Seneca user id<br />
#* Send this email from your Seneca Account only<br />
# Learn how to do basic editing in a wiki<br />
<br />
=== Resources 1 ===<br />
* Git<br />
** [http://git-scm.com/book Pro-git book]<br />
** [[GIT for OOP344 Projects]]<br />
** Great 15 minutes tutorial that will give you basic understanding of Git<br />
**: [http://try.github.com/levels/1/challenges/1 Try GitHub]<br />
** [http://www.sourcetreeapp.com Git GUI Client for Mac ] <br />
** [http://windows.github.com/ Github Client for Windows] <br />
** [https://help.github.com/articles/generating-ssh-keys Generating SSH keys for github]<br />
* Wiki<br />
* [http://www.wikihow.com/Register-a-User-Name-on-Freenode How to register your IRC nickname on freenode]<br />
* [http://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients Compare IRC clients]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:How_to_edit_a_page How To edit Wiki pages]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet How To edit Wiki Cheatsheet]<br />
* Blogs<br />
** [http://wordpress.com/ Wordpress]<br />
** [http://www.blogger.com/ Blogger]<br />
** [https://www.tumblr.com/ Tumblr]<br />
* IRC Clients:<br />
** [http://www.silverex.org/download/ XChat 2 (Windows)]<br />
** [http://colloquy.info/downloads.html Colloquy Colloguy (Mac)] <br />
** [https://addons.mozilla.org/en-US/firefox/addon/chatzilla/ ChatZilla (Multi-platform)]<br />
** [http://clicksandwhistles.com/download.php Clicks & Whistles (Windows)]<br />
* How to Install <br />
** [http://wiki.tryphon.eu/how_to_install_xchat XChat]<br />
== Week 2 - May 12==<br />
=== This Week 2===<br />
* Git review - [http://rogerdudler.github.io/git-guide/ Git_Guide]<br />
*: [http://git-scm.com/docs/git-clone clone], [http://git-scm.com/docs/git-pull pull], [http://git-scm.com/docs/git-push push]<br />
*: [http://git-scm.com/docs/git-add add], [http://git-scm.com/docs/git-commit commit], [http://git-scm.com/docs/git-branch branch]<br />
* Operators<br />
*: review<br />
*: Logical<br />
*: Arithmetic<br />
*: Lazy evaluation<br />
*: operators in C <br />
* pointers (continued)<br />
*: arrays<br />
*: arithmetic<br />
*: void<br />
*: functions<br />
* Default Args<br />
<br />
=== To Do 2===<br />
=== Resources 2===<br />
<br />
* Single resource that will give you all the knowledge you need about pointers, including information given in the last two classes. WARNING! Reading online tutorials is NOT a substitute to visiting in-class lectures.<br />
*: [http://www.cplusplus.com/doc/tutorial/pointers/ Everything you always wanted to know about pointers, but were afraid to ask]<br />
<br />
* Type Casing in C++.<br />
*: [https://www.youtube.com/watch?v=oa_fWKQACAo Casting in C++ (YouTube Video)]<br />
*: [http://www.cplusplus.com/doc/tutorial/typecasting/ Type casting in detail (Documentation)]<br />
<br />
* Void Type<br />
*: [http://msdn.microsoft.com/en-us/library/ebh2k5sc.aspx Pointers to Type Void (MSDN link)]<br />
<br />
* Function Pointers<br />
*: [https://www.youtube.com/watch?v=ZBJoGKVnZYI C++ Function Pointers].<br />
*: [http://www.learncpp.com/cpp-tutorial/78-function-pointers/ C++ Function Pointers in detail].<br />
<br />
=== blog posts 2===<br />
<br />
* [http://www.admix-dev.tumblr.com/post/50621074633/oliver-steele-created-a-great-image-explaining-how Easy picture explanation of how the Git works]<br />
*: Easy and detailed explanation of Git transfer procedures using schema.<br />
* [http://admix-dev.tumblr.com/post/50350903940/adding-auto-completion-to-the-git-commands-mac-os Adding auto-completion to the git commands on Mac OS X]<br />
*: Short guide how to set up auto-completion for the '''git''' commands on your Mac (using '''Tab''' to complete commands).<br />
<br />
== Week 3 - May 19==<br />
=== This Week 3===<br />
* Real Signature of main()<br />
* Pre-Processor directives<br />
*: define (macros)<br />
*: include<br />
* [http://msdn.microsoft.com/en-us/library/05w82thz(v=vs.80).aspx typedefs]<br />
* Variable Argument list [http://admixdev.com/2013/06/05/59/ example]<br />
* [http://www.cplusplus.com/doc/tutorial/namespaces/ Namespaces]<br />
* friends<br />
<br />
=== To Do 3===<br />
* program: int AscToInt(const char *num);<br />
* program: char* nstrcat(char* name, ...) //Basically strcat with >= 1 arguments<br />
<br />
=== Resources 3===<br />
<br />
* C++ Command Line Arguments<br />
*: [https://www.youtube.com/watch?v=rAVIm-g8alQ Basic Tutorial].<br />
<br />
* Variable Arguments Handling<br />
*: [http://www.cplusplus.com/reference/cstdarg/ <stdarg.h> types & macros].<br />
<br />
=== Blog posts 3===<br />
* <u>'''AscToInt Solutions'''</u><br />
<br />
:[http://lisyonok85.wordpress.com/?p=7 SecA Artem's Solution]<br />
<br />
:[http://dongdli.wordpress.com/2013/05/21/codes-of-the-function-int-asctoint-const-char-num/ Codes from SECTION_B DONG LI]<br />
<br />
:[http://malliso1.wordpress.com/2013/05/21/converting-a-string-of-numbers-to-an-integer/ Converting a string of numbers to an integer.]<br />
<br />
:[http://matthewtorrance.blogspot.ca/2013/05/asctoint.html AscToInt Function]<br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/21/the-ascii-conversion-challenge/ SecA Drew Terrance Kerr]<br />
<br />
:[http://ssuduruk.blogspot.ca/2013/05/asctointconst-char-num.html SecA Chiyoung Choi]<br />
<br />
:[http://admix-dev.tumblr.com/post/51005560090/conversion-char-into-int SecB Oleksandr Snurnikov, (ascToInt() function) ]<br />
<br />
:[http://happyivyli.blogspot.ca/2013/05/solution-of-int-asctointconst-char-num.html SecB Na Li]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/blog-post.html SecA Herman Hum]<br />
<br />
:[http://shahzyn.blogspot.ca/2013/05/ascii-to-int.html SecA Shehzin Arshad]<br />
<br />
:[http://joshem31.wordpress.com/2013/05/21/my-first-challenge-my-first-asctoint-function/ SecA Jose Ramirez]<br />
<br />
:[http://mattmaceachern.blogspot.ca/2013/05/blog-post.html SecA Matt MacEachern]<br />
<br />
:[http://jungmin-ji.tumblr.com/post/51031179606/simple-char-to-int SecA Jungmin Ji]<br />
<br />
:[http://namniak.blogspot.ca/2013/05/asctoint.html Vadim Namniak's Solution]<br />
<br />
:[http://zhunxue1912.wordpress.com/2013/05/21/int-asctointconst-char-num/ Zhun Xue]<br />
<br />
:[http://brackethunter.blogspot.ca/2013/05/asctoint-11-now-with-range-checking-and.html Brad Stuart's Improved Solution]<br />
<br />
:[http://markieta.blogspot.ca/2013/05/asctoint.html Christopher Markieta]<br />
<br />
:[http://haydeezpluto.wordpress.com/2013/05/26/ascii-to-integer-conversion/ Amal Khandelwal]<br />
<br />
:[http://tthaninayagam.blogspot.ca/2013/05/asctoint.html SecB Thanushaa Thaninayagam]<br />
<br />
:[http://chisa-takata.tumblr.com/ SecA Chisa Takata]<br />
<br />
:[http://dimpleamin204.blogspot.ca/ SecA Dimple Amin]<br />
<br />
:[http://ksidhucode.blogspot.ca/2013/05/asctoint_30.html SecB Kevin Sidhu]<br />
<br />
* <u>'''nstrcat Solutions'''</u><br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/22/concatenating-an-arbitrary-number-of-strings/ SecA Drew Terrance Kerr]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/const-char-nstrcatchar-des.html SecA Herman Hum]<br />
<br />
:[http://admix-dev.tumblr.com/post/51133316724/const-char-nstrcat-char-to-strcat-with-1 SecB Oleksandr Snurnikov]<br />
:*[https://github.com/admix/admixSoft/blob/master/OOP344/nstrcat.cpp direct link to the source code on the github]<br />
<br />
:[http://brackethunter.blogspot.ca/2013/05/frustrationnstrcatdes.html Brad Stuart]<br />
<br />
:[http://mattmaceachern.blogspot.ca/2013/05/nstrcatcpp-no-fail-safe-yet-to-be-added.html SecA Matt MacEachern]<br />
<br />
:[http://dongdli.wordpress.com/2013/05/27/code-of-nstrcat-a-function-to-concatinate-unknow-amount-of-strings/ SECTION_B DONG LI]<br />
<br />
:[http://ksidhucode.blogspot.ca/2013/05/nstrcat.html SecB Kevin Sidhu]<br />
<br />
:[http://nstrcat.blogspot.ca/ SecB Prabhleen Bhupal]<br />
<br />
:[http://kazilemannor.wordpress.com/2013/06/05/to-do3-char-nstrcat/ SecB Zhenyang Chen]<br />
<br />
:[http://haydeezpluto.wordpress.com/2013/06/07/variable-argument-list-string-concatenation-3/ Amal Khandelwal]<br />
<br />
== Week 4 - May 26==<br />
=== This Week 4 ===<br />
* Project introduction<br />
* [http://lisyonok85.wordpress.com/2013/05/29/project/ Project Diagram (as drawn in class)]<br />
*: bio, cio<br />
* Declaration modifiers <br />
*: auto<br />
*: [http://www.learncpp.com/cpp-tutorial/811-static-member-variables/ static]<br />
*: [http://www.learncpp.com/cpp-tutorial/42-global-variables/ extern]<br />
** const<br />
**: [http://www.cprogramming.com/reference/pointers/const_pointers.html pointers]<br />
**: methods<br />
* [http://faculty.cs.niu.edu/~mcmahon/CS241/Notes/compile.html compilation process]<br />
* [http://www.cplusplus.com/doc/tutorial/preprocessor/ pre-processor directives]<br />
*: [http://en.wikipedia.org/wiki/Include_guard Include safe guards]<br />
<br />
=== To Do 4===<br />
<br />
=== Resources 4===<br />
=== blog posts 4===<br />
*[http://brackethunter.blogspot.ca/2013/06/moveboxcpp.html SecB Brad Stuart - Movebox.cpp]<br />
<br />
== Week 5 - June 2==<br />
=== This Week 5===<br />
* Const<br />
*: variable declaration <br />
*: Pointers<br />
*: References <br />
*: Methods<br />
* Statics<br />
*: variables [http://stackoverflow.com/questions/3698043/static-variables-in-c crowd source explanation]<br />
*: [http://www.learncpp.com/cpp-tutorial/812-static-member-functions/ Methods]<br />
* [http://www.learncpp.com/cpp-tutorial/122-virtual-functions/ Virtuals] <br />
*: Review<br />
*: Pure Virtual [http://www.learncpp.com/cpp-tutorial/126-pure-virtual-functions-abstract-base-classes-and-interface-classes/ Pure Virtual & Abstract Base Classes]<br />
*: Abstract Base Classes<br />
<br />
=== To Do 5===<br />
=== Resources 5===<br />
=== blog posts 5===<br />
== Week 6 - June 9==<br />
=== This Week 6===<br />
* Tuesday class, cancelled (makeup session and more during study break)<br />
* conui review and Initial repo settings<br />
* class member access operator review<br />
*: arrow and dot<br />
* literals<br />
* sizeof() <br />
* operators (more in detail)<br />
<br />
=== To Do 6===<br />
# Add your information to [[Teams' List 20132 - OOP344 | Teams1 List]] - '''''Due NOW!'''''<br />
# After adding your information to the [[Teams' List 20132 - OOP344 | Teams1 List]], click on your team name and update your '''''Team Page''''' to match your team requirements. - '''''Due NOW!'''''<br />
# Add your your information to [[Student List 20132 - OOP344 | The Student List Page]]. '''''Due NOW!'''''<br />
# complete your task in [[Project R0.1 20132- OOP344 | Release R0.1]] - '''''Due Monday 17th, 23:59'''''<br />
<br />
=== Resources 6===<br />
=== blog posts 6===<br />
== Week 7 - June 16==<br />
=== This Week 7===<br />
<br />
=== To Do 7===<br />
# Add resize to IntArr<br />
<br />
=== Resources 7===<br />
=== blog posts ===<br />
*[http://dtkerroop344.wordpress.com/2013/06/18/simple-linked-list/ A simple linked list]<br />
*[http://matthewtorrance.blogspot.ca/2013/06/queue-add-and-remove.html Queue: Add & Remove]<br />
<br />
== Week 8 - June 23 (Study Break)==<br />
=== This Week 8===<br />
* makeup session and more (June, Tuesday 25th)<br />
*: 9:00 to ???<br />
*: please make sure you are rested and ready for a long day of study, new materials and reviews<br />
<br />
=== To Do 8===<br />
=== Resources 8===<br />
=== blog posts 8===<br />
<br />
== Week 9 - June 30==<br />
=== This Week 9===<br />
* New keywords <br />
*: inline<br />
*: auto<br />
*: nullptr<br />
* Enum Review<br />
* Introduction to Recursion<br />
* Dyanimic Lists<br />
* Doubly Linked Lists<br />
* [http://www.cplusplus.com/doc/tutorial/exceptions/ Intro to Exceptions]<br />
<br />
=== To Do 9===<br />
* Complete Doubly Linked List Implementation<br />
* Blog about it<br />
=== Resources 9===<br />
=== blog posts 9===<br />
<br />
*[http://kazilemannor.wordpress.com/2013/07/05/dll/ SecB Zhenyang Chen - DLL]<br />
*[http://brackethunter.blogspot.ca/2013/07/dllist-with-ui.html Brad Stuart - DLList with UI]<br />
*[http://markieta.blogspot.ca/2013/07/doubly-linked-list-insertbefore.html Christopher Markieta - insertBefore]<br />
<br />
== Week 10 - July 7==<br />
=== This Week 10===<br />
* Exceptions [http://www.tutorialspoint.com/cplusplus/cpp_exceptions_handling.htm tutorial: try catch]<br />
*: Exception classes and objects<br />
*: Throw<br />
*: Try<br />
*: Catch<br />
* Function Stack Review<br />
* Glance at Standard Template Library<br />
* [http://www.cplusplus.com/doc/tutorial/templates/ Templates] <br />
*: Templated classes and functions<br />
*: Default template parameters<br />
*: Templating Techniques (Inheritance with templates, mix-ins)<br />
* Multiple Inheritance<br />
*: Multiple Class Inheritance<br />
*: Glance at Interfaces<br />
*: Diamond Inheritance Issues (Template solutions)<br />
<br />
=== To Do 10===<br />
* Split up work with teammates for A2, complete skeletons of classes (Due July 12)<br />
* Complete Template Exercise and blog about it<br />
<br />
=== Resources 10===<br />
=== blog posts 10===<br />
* Stuck on "Templates Homework" (need help please) [http://admixdev.com/2013/07/13/multi-inheritance-struggle/ My Blog post] - Alexander Snurnikov<br />
Check my blog post, after word ATTENTION. Also, you doubled our code in two of your classes - Artem - '''//Thank you:) - Alex'''<br />
<br />
* Working version of Templates homework, please feel free to [http://lisyonok85.wordpress.com/?p=14 check this out and comment] - Artem Luzyanin<br />
<br />
* Templates excercise[http://template-inheritance.blogspot.ca/ Template Blog Post]- Prabhleen Bhupal<br />
<br />
* [http://brackethunter.blogspot.ca/2013/07/int-to-bin-v01.html Int to Bin attempt] - Brad Stuart (I can't find the base code for the templates stuff, so I created this one for making an array of whatevers)<br />
<br />
== Week 11 - July 14==<br />
=== This Week 11===<br />
*Static Variable review<br />
*The compilation process [http://stackoverflow.com/questions/6264249/how-does-the-compilation-linking-process-work compilation steps]<br />
*:Compilation order<br />
*:The linker<br />
*:Common Linker Errors<br />
*Multiple Inheritance Cont<br />
*:Virtual Inheritance<br />
*Advanced Template Use<br />
*:Template functions cont<br />
*:Template definition in CPPs<br />
*Const review [http://duramecho.com/ComputerInformation/WhyHowCppConst.html why & how?!]<br />
*New Keywords<br />
*:Volatile<br />
*:Union<br />
*Arrays<br />
*:Basic arrays review<br />
*:Homogeneous Arrays<br />
*Standard Template Library<br />
*:std::string class<br />
*[http://www.cplusplus.com/doc/tutorial/typecasting/ Constrained Casting]<br />
*:static_cast<br />
*:reinterpret_cast<br />
*:const_cast<br />
*:dynamic_cast<br />
*Bit-wise Introduction<br />
<br />
=== To Do 11===<br />
*A2 0.4 Milestone - Due July 19th<br />
*No code exercise this week... INSTEAD: Blog about how you feel about the world of programming, where you want to go with your career, what professional options you are considering, etc!<br />
=== Resources 11===<br />
=== blog posts 11===<br />
* [http://admixdev.com/2013/07/23/how-i-feel-about-the-world-of-programming/ About the World of programming and future at all] - Alexander Snurnikov<br />
* [http://lisyonok85.wordpress.com/2013/07/23/pro-gro-min-whaaa/ The world of art and me] -Artem Luzyanin<br />
* [http://brackethunter.blogspot.ca/2013/07/programming-from-pet-basic-to-php.html/ An old man laments] -Brad Stuart<br />
<br />
== Week 12 - July 21==<br />
=== This Week 12===<br />
=== To Do 12===<br />
=== Resources 12===<br />
=== blog posts 12===<br />
== Week 13 - July 28==<br />
=== This Week 13===<br />
=== To Do 13===<br />
=== Resources 13===<br />
=== blog posts 13===<br />
== Week 14 - August 4==<br />
=== This Week 14===<br />
=== To Do 14===<br />
=== Resources 14===<br />
=== blog posts 14===<br />
== Week 15 - August 11 (Exam Week)==<br />
=== This Week 15===<br />
=== To Do 15===<br />
=== Resources 15===<br />
=== blog posts 15===</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Weekly_Schedule_20132_-_OOP344&diff=97344Weekly Schedule 20132 - OOP3442013-07-23T14:22:07Z<p>Brad Stuart: /* blog posts 11 */</p>
<hr />
<div>{{OOP344 Index | 20132}}<br />
<br />
Under Construction!<br />
<br />
== Week 1 - May 5 ==<br />
<br />
=== This Week 1 ===<br />
<br />
* Introduction to Open Source development.<br />
* Collaboration Tools:<br />
** Wiki<br />
** Blog<br />
** IRC<br />
** Code Repository<br />
**: Git, Svn, ....<br />
** Big Blue Button<br />
* Etherpad<br />
** [http://etherpad.proximity.on.ca:9001 Seneca Etherpad]<br />
** http://primarypad.com/<br />
* Object Orientation Review<br />
* C Review<br />
*: pointers<br />
*: pointers and arrays<br />
<br />
=== To Do 1===<br />
==== Due May 7th (Tuesday) 18:00 ====<br />
# Create an account on [https://github.com github]<br />
## Make sure your account name is presentable. This name will stay with you forever.<br />
## Make sure your information on github is complete (real name, email, etc...) <br />
# Send ONE email to [mailto:fardad.soleimanloo@senecacollege.ca?subject=344Github20132 me] containing your git hub id<br />
#: subject of the email should be '''''344Github20132'''''<br />
#: '''''email content'''''<br />
#: name: Your Name (exactly as it appears on your Seneca student card)<br />
#: nickname: Your Nick name<br />
#: Git hub ID: your Github id <br />
==== Due by May 13th, 23:59 ====<br />
# Create a [http://en.wikipedia.org/wiki/Blog blog] (anywhere you like)<br />
# Join the IRC by [http://www.wikihow.com/Register-a-User-Name-on-Freenode registering your nickname on freenode] server and joining the #seneca-oop344 channel for 344 related dialog<br />
#: Additional channels of interest: #seneca to interact with all Seneca students participating in opensource projects, and #seneca-social for Social (off-topic) dialog.<br />
# Read [http://git-scm.com/book Pro-git book]<br />
#: Chapter One and Chapter Two<br />
# Create an account on this wiki: send an email to [mailto:cdot-wiki-admin@senecac.on.ca?subject=Wiki+account+request cdot-wiki-admin@senecac.on.ca] and ask for an account, an email will be sent back to you with your userid and a temporary password; make sure you have the following included in your email.<br />
#* Email subject: Wiki Account Request<br />
#* The subject you are enrolled in: "OOP344"<br />
#* Your Seneca user id<br />
#* Send this email from your Seneca Account only<br />
# Learn how to do basic editing in a wiki<br />
<br />
=== Resources 1 ===<br />
* Git<br />
** [http://git-scm.com/book Pro-git book]<br />
** [[GIT for OOP344 Projects]]<br />
** Great 15 minutes tutorial that will give you basic understanding of Git<br />
**: [http://try.github.com/levels/1/challenges/1 Try GitHub]<br />
** [http://www.sourcetreeapp.com Git GUI Client for Mac ] <br />
** [http://windows.github.com/ Github Client for Windows] <br />
** [https://help.github.com/articles/generating-ssh-keys Generating SSH keys for github]<br />
* Wiki<br />
* [http://www.wikihow.com/Register-a-User-Name-on-Freenode How to register your IRC nickname on freenode]<br />
* [http://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients Compare IRC clients]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:How_to_edit_a_page How To edit Wiki pages]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet How To edit Wiki Cheatsheet]<br />
* Blogs<br />
** [http://wordpress.com/ Wordpress]<br />
** [http://www.blogger.com/ Blogger]<br />
** [https://www.tumblr.com/ Tumblr]<br />
* IRC Clients:<br />
** [http://www.silverex.org/download/ XChat 2 (Windows)]<br />
** [http://colloquy.info/downloads.html Colloquy Colloguy (Mac)] <br />
** [https://addons.mozilla.org/en-US/firefox/addon/chatzilla/ ChatZilla (Multi-platform)]<br />
** [http://clicksandwhistles.com/download.php Clicks & Whistles (Windows)]<br />
* How to Install <br />
** [http://wiki.tryphon.eu/how_to_install_xchat XChat]<br />
== Week 2 - May 12==<br />
=== This Week 2===<br />
* Git review - [http://rogerdudler.github.io/git-guide/ Git_Guide]<br />
*: [http://git-scm.com/docs/git-clone clone], [http://git-scm.com/docs/git-pull pull], [http://git-scm.com/docs/git-push push]<br />
*: [http://git-scm.com/docs/git-add add], [http://git-scm.com/docs/git-commit commit], [http://git-scm.com/docs/git-branch branch]<br />
* Operators<br />
*: review<br />
*: Logical<br />
*: Arithmetic<br />
*: Lazy evaluation<br />
*: operators in C <br />
* pointers (continued)<br />
*: arrays<br />
*: arithmetic<br />
*: void<br />
*: functions<br />
* Default Args<br />
<br />
=== To Do 2===<br />
=== Resources 2===<br />
<br />
* Single resource that will give you all the knowledge you need about pointers, including information given in the last two classes. WARNING! Reading online tutorials is NOT a substitute to visiting in-class lectures.<br />
*: [http://www.cplusplus.com/doc/tutorial/pointers/ Everything you always wanted to know about pointers, but were afraid to ask]<br />
<br />
* Type Casing in C++.<br />
*: [https://www.youtube.com/watch?v=oa_fWKQACAo Casting in C++ (YouTube Video)]<br />
*: [http://www.cplusplus.com/doc/tutorial/typecasting/ Type casting in detail (Documentation)]<br />
<br />
* Void Type<br />
*: [http://msdn.microsoft.com/en-us/library/ebh2k5sc.aspx Pointers to Type Void (MSDN link)]<br />
<br />
* Function Pointers<br />
*: [https://www.youtube.com/watch?v=ZBJoGKVnZYI C++ Function Pointers].<br />
*: [http://www.learncpp.com/cpp-tutorial/78-function-pointers/ C++ Function Pointers in detail].<br />
<br />
=== blog posts 2===<br />
<br />
* [http://www.admix-dev.tumblr.com/post/50621074633/oliver-steele-created-a-great-image-explaining-how Easy picture explanation of how the Git works]<br />
*: Easy and detailed explanation of Git transfer procedures using schema.<br />
* [http://admix-dev.tumblr.com/post/50350903940/adding-auto-completion-to-the-git-commands-mac-os Adding auto-completion to the git commands on Mac OS X]<br />
*: Short guide how to set up auto-completion for the '''git''' commands on your Mac (using '''Tab''' to complete commands).<br />
<br />
== Week 3 - May 19==<br />
=== This Week 3===<br />
* Real Signature of main()<br />
* Pre-Processor directives<br />
*: define (macros)<br />
*: include<br />
* [http://msdn.microsoft.com/en-us/library/05w82thz(v=vs.80).aspx typedefs]<br />
* Variable Argument list [http://admixdev.com/2013/06/05/59/ example]<br />
* [http://www.cplusplus.com/doc/tutorial/namespaces/ Namespaces]<br />
* friends<br />
<br />
=== To Do 3===<br />
* program: int AscToInt(const char *num);<br />
* program: char* nstrcat(char* name, ...) //Basically strcat with >= 1 arguments<br />
<br />
=== Resources 3===<br />
<br />
* C++ Command Line Arguments<br />
*: [https://www.youtube.com/watch?v=rAVIm-g8alQ Basic Tutorial].<br />
<br />
* Variable Arguments Handling<br />
*: [http://www.cplusplus.com/reference/cstdarg/ <stdarg.h> types & macros].<br />
<br />
=== Blog posts 3===<br />
* <u>'''AscToInt Solutions'''</u><br />
<br />
:[http://lisyonok85.wordpress.com/?p=7 SecA Artem's Solution]<br />
<br />
:[http://dongdli.wordpress.com/2013/05/21/codes-of-the-function-int-asctoint-const-char-num/ Codes from SECTION_B DONG LI]<br />
<br />
:[http://malliso1.wordpress.com/2013/05/21/converting-a-string-of-numbers-to-an-integer/ Converting a string of numbers to an integer.]<br />
<br />
:[http://matthewtorrance.blogspot.ca/2013/05/asctoint.html AscToInt Function]<br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/21/the-ascii-conversion-challenge/ SecA Drew Terrance Kerr]<br />
<br />
:[http://ssuduruk.blogspot.ca/2013/05/asctointconst-char-num.html SecA Chiyoung Choi]<br />
<br />
:[http://admix-dev.tumblr.com/post/51005560090/conversion-char-into-int SecB Oleksandr Snurnikov, (ascToInt() function) ]<br />
<br />
:[http://happyivyli.blogspot.ca/2013/05/solution-of-int-asctointconst-char-num.html SecB Na Li]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/blog-post.html SecA Herman Hum]<br />
<br />
:[http://shahzyn.blogspot.ca/2013/05/ascii-to-int.html SecA Shehzin Arshad]<br />
<br />
:[http://joshem31.wordpress.com/2013/05/21/my-first-challenge-my-first-asctoint-function/ SecA Jose Ramirez]<br />
<br />
:[http://mattmaceachern.blogspot.ca/2013/05/blog-post.html SecA Matt MacEachern]<br />
<br />
:[http://jungmin-ji.tumblr.com/post/51031179606/simple-char-to-int SecA Jungmin Ji]<br />
<br />
:[http://namniak.blogspot.ca/2013/05/asctoint.html Vadim Namniak's Solution]<br />
<br />
:[http://zhunxue1912.wordpress.com/2013/05/21/int-asctointconst-char-num/ Zhun Xue]<br />
<br />
:[http://brackethunter.blogspot.ca/2013/05/asctoint-11-now-with-range-checking-and.html Brad Stuart's Improved Solution]<br />
<br />
:[http://markieta.blogspot.ca/2013/05/asctoint.html Christopher Markieta]<br />
<br />
:[http://haydeezpluto.wordpress.com/2013/05/26/ascii-to-integer-conversion/ Amal Khandelwal]<br />
<br />
:[http://tthaninayagam.blogspot.ca/2013/05/asctoint.html SecB Thanushaa Thaninayagam]<br />
<br />
:[http://chisa-takata.tumblr.com/ SecA Chisa Takata]<br />
<br />
:[http://dimpleamin204.blogspot.ca/ SecA Dimple Amin]<br />
<br />
:[http://ksidhucode.blogspot.ca/2013/05/asctoint_30.html SecB Kevin Sidhu]<br />
<br />
* <u>'''nstrcat Solutions'''</u><br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/22/concatenating-an-arbitrary-number-of-strings/ SecA Drew Terrance Kerr]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/const-char-nstrcatchar-des.html SecA Herman Hum]<br />
<br />
:[http://admix-dev.tumblr.com/post/51133316724/const-char-nstrcat-char-to-strcat-with-1 SecB Oleksandr Snurnikov]<br />
:*[https://github.com/admix/admixSoft/blob/master/OOP344/nstrcat.cpp direct link to the source code on the github]<br />
<br />
:[http://brackethunter.blogspot.ca/2013/05/frustrationnstrcatdes.html Brad Stuart]<br />
<br />
:[http://mattmaceachern.blogspot.ca/2013/05/nstrcatcpp-no-fail-safe-yet-to-be-added.html SecA Matt MacEachern]<br />
<br />
:[http://dongdli.wordpress.com/2013/05/27/code-of-nstrcat-a-function-to-concatinate-unknow-amount-of-strings/ SECTION_B DONG LI]<br />
<br />
:[http://ksidhucode.blogspot.ca/2013/05/nstrcat.html SecB Kevin Sidhu]<br />
<br />
:[http://nstrcat.blogspot.ca/ SecB Prabhleen Bhupal]<br />
<br />
:[http://kazilemannor.wordpress.com/2013/06/05/to-do3-char-nstrcat/ SecB Zhenyang Chen]<br />
<br />
:[http://haydeezpluto.wordpress.com/2013/06/07/variable-argument-list-string-concatenation-3/ Amal Khandelwal]<br />
<br />
== Week 4 - May 26==<br />
=== This Week 4 ===<br />
* Project introduction<br />
* [http://lisyonok85.wordpress.com/2013/05/29/project/ Project Diagram (as drawn in class)]<br />
*: bio, cio<br />
* Declaration modifiers <br />
*: auto<br />
*: [http://www.learncpp.com/cpp-tutorial/811-static-member-variables/ static]<br />
*: [http://www.learncpp.com/cpp-tutorial/42-global-variables/ extern]<br />
** const<br />
**: [http://www.cprogramming.com/reference/pointers/const_pointers.html pointers]<br />
**: methods<br />
* [http://faculty.cs.niu.edu/~mcmahon/CS241/Notes/compile.html compilation process]<br />
* [http://www.cplusplus.com/doc/tutorial/preprocessor/ pre-processor directives]<br />
*: [http://en.wikipedia.org/wiki/Include_guard Include safe guards]<br />
<br />
=== To Do 4===<br />
<br />
=== Resources 4===<br />
=== blog posts 4===<br />
*[http://brackethunter.blogspot.ca/2013/06/moveboxcpp.html SecB Brad Stuart - Movebox.cpp]<br />
<br />
== Week 5 - June 2==<br />
=== This Week 5===<br />
* Const<br />
*: variable declaration <br />
*: Pointers<br />
*: References <br />
*: Methods<br />
* Statics<br />
*: variables [http://stackoverflow.com/questions/3698043/static-variables-in-c crowd source explanation]<br />
*: [http://www.learncpp.com/cpp-tutorial/812-static-member-functions/ Methods]<br />
* [http://www.learncpp.com/cpp-tutorial/122-virtual-functions/ Virtuals] <br />
*: Review<br />
*: Pure Virtual [http://www.learncpp.com/cpp-tutorial/126-pure-virtual-functions-abstract-base-classes-and-interface-classes/ Pure Virtual & Abstract Base Classes]<br />
*: Abstract Base Classes<br />
<br />
=== To Do 5===<br />
=== Resources 5===<br />
=== blog posts 5===<br />
== Week 6 - June 9==<br />
=== This Week 6===<br />
* Tuesday class, cancelled (makeup session and more during study break)<br />
* conui review and Initial repo settings<br />
* class member access operator review<br />
*: arrow and dot<br />
* literals<br />
* sizeof() <br />
* operators (more in detail)<br />
<br />
=== To Do 6===<br />
# Add your information to [[Teams' List 20132 - OOP344 | Teams1 List]] - '''''Due NOW!'''''<br />
# After adding your information to the [[Teams' List 20132 - OOP344 | Teams1 List]], click on your team name and update your '''''Team Page''''' to match your team requirements. - '''''Due NOW!'''''<br />
# Add your your information to [[Student List 20132 - OOP344 | The Student List Page]]. '''''Due NOW!'''''<br />
# complete your task in [[Project R0.1 20132- OOP344 | Release R0.1]] - '''''Due Monday 17th, 23:59'''''<br />
<br />
=== Resources 6===<br />
=== blog posts 6===<br />
== Week 7 - June 16==<br />
=== This Week 7===<br />
<br />
=== To Do 7===<br />
# Add resize to IntArr<br />
<br />
=== Resources 7===<br />
=== blog posts ===<br />
*[http://dtkerroop344.wordpress.com/2013/06/18/simple-linked-list/ A simple linked list]<br />
*[http://matthewtorrance.blogspot.ca/2013/06/queue-add-and-remove.html Queue: Add & Remove]<br />
<br />
== Week 8 - June 23 (Study Break)==<br />
=== This Week 8===<br />
* makeup session and more (June, Tuesday 25th)<br />
*: 9:00 to ???<br />
*: please make sure you are rested and ready for a long day of study, new materials and reviews<br />
<br />
=== To Do 8===<br />
=== Resources 8===<br />
=== blog posts 8===<br />
<br />
== Week 9 - June 30==<br />
=== This Week 9===<br />
* New keywords <br />
*: inline<br />
*: auto<br />
*: nullptr<br />
* Enum Review<br />
* Introduction to Recursion<br />
* Dyanimic Lists<br />
* Doubly Linked Lists<br />
* [http://www.cplusplus.com/doc/tutorial/exceptions/ Intro to Exceptions]<br />
<br />
=== To Do 9===<br />
* Complete Doubly Linked List Implementation<br />
* Blog about it<br />
=== Resources 9===<br />
=== blog posts 9===<br />
<br />
*[http://kazilemannor.wordpress.com/2013/07/05/dll/ SecB Zhenyang Chen - DLL]<br />
*[http://brackethunter.blogspot.ca/2013/07/dllist-with-ui.html Brad Stuart - DLList with UI]<br />
*[http://markieta.blogspot.ca/2013/07/doubly-linked-list-insertbefore.html Christopher Markieta - insertBefore]<br />
<br />
== Week 10 - July 7==<br />
=== This Week 10===<br />
* Exceptions [http://www.tutorialspoint.com/cplusplus/cpp_exceptions_handling.htm tutorial: try catch]<br />
*: Exception classes and objects<br />
*: Throw<br />
*: Try<br />
*: Catch<br />
* Function Stack Review<br />
* Glance at Standard Template Library<br />
* [http://www.cplusplus.com/doc/tutorial/templates/ Templates] <br />
*: Templated classes and functions<br />
*: Default template parameters<br />
*: Templating Techniques (Inheritance with templates, mix-ins)<br />
* Multiple Inheritance<br />
*: Multiple Class Inheritance<br />
*: Glance at Interfaces<br />
*: Diamond Inheritance Issues (Template solutions)<br />
<br />
=== To Do 10===<br />
* Split up work with teammates for A2, complete skeletons of classes (Due July 12)<br />
* Complete Template Exercise and blog about it<br />
<br />
=== Resources 10===<br />
=== blog posts 10===<br />
* Stuck on "Templates Homework" (need help please) [http://admixdev.com/2013/07/13/multi-inheritance-struggle/ My Blog post] - Alexander Snurnikov<br />
Check my blog post, after word ATTENTION. Also, you doubled our code in two of your classes - Artem - '''//Thank you:) - Alex'''<br />
<br />
* Working version of Templates homework, please feel free to [http://lisyonok85.wordpress.com/?p=14 check this out and comment] - Artem Luzyanin<br />
<br />
* Templates excercise[http://template-inheritance.blogspot.ca/ Template Blog Post]- Prabhleen Bhupal<br />
<br />
== Week 11 - July 14==<br />
=== This Week 11===<br />
*Static Variable review<br />
*The compilation process [http://stackoverflow.com/questions/6264249/how-does-the-compilation-linking-process-work compilation steps]<br />
*:Compilation order<br />
*:The linker<br />
*:Common Linker Errors<br />
*Multiple Inheritance Cont<br />
*:Virtual Inheritance<br />
*Advanced Template Use<br />
*:Template functions cont<br />
*:Template definition in CPPs<br />
*Const review [http://duramecho.com/ComputerInformation/WhyHowCppConst.html why & how?!]<br />
*New Keywords<br />
*:Volatile<br />
*:Union<br />
*Arrays<br />
*:Basic arrays review<br />
*:Homogeneous Arrays<br />
*Standard Template Library<br />
*:std::string class<br />
*[http://www.cplusplus.com/doc/tutorial/typecasting/ Constrained Casting]<br />
*:static_cast<br />
*:reinterpret_cast<br />
*:const_cast<br />
*:dynamic_cast<br />
*Bit-wise Introduction<br />
<br />
=== To Do 11===<br />
*A2 0.4 Milestone - Due July 19th<br />
*No code exercise this week... INSTEAD: Blog about how you feel about the world of programming, where you want to go with your career, what professional options you are considering, etc!<br />
=== Resources 11===<br />
=== blog posts 11===<br />
* [http://admixdev.com/2013/07/23/how-i-feel-about-the-world-of-programming/ About the World of programming and future at all] - Alexander Snurnikov<br />
* [http://lisyonok85.wordpress.com/2013/07/23/pro-gro-min-whaaa/ The world of art and me] -Artem Luzyanin<br />
* [http://brackethunter.blogspot.ca/2013/07/programming-from-pet-basic-to-php.html/ An old man laments] -Brad Stuart<br />
<br />
== Week 12 - July 21==<br />
=== This Week 12===<br />
=== To Do 12===<br />
=== Resources 12===<br />
=== blog posts 12===<br />
== Week 13 - July 28==<br />
=== This Week 13===<br />
=== To Do 13===<br />
=== Resources 13===<br />
=== blog posts 13===<br />
== Week 14 - August 4==<br />
=== This Week 14===<br />
=== To Do 14===<br />
=== Resources 14===<br />
=== blog posts 14===<br />
== Week 15 - August 11 (Exam Week)==<br />
=== This Week 15===<br />
=== To Do 15===<br />
=== Resources 15===<br />
=== blog posts 15===</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Weekly_Schedule_20132_-_OOP344&diff=97156Weekly Schedule 20132 - OOP3442013-07-08T00:29:30Z<p>Brad Stuart: /* blog posts 9 */</p>
<hr />
<div>{{OOP344 Index | 20132}}<br />
<br />
Under Construction!<br />
<br />
== Week 1 - May 5 ==<br />
<br />
=== This Week 1 ===<br />
<br />
* Introduction to Open Source development.<br />
* Collaboration Tools:<br />
** Wiki<br />
** Blog<br />
** IRC<br />
** Code Repository<br />
**: Git, Svn, ....<br />
** Big Blue Button<br />
* Etherpad<br />
** [http://etherpad.proximity.on.ca:9001 Seneca Etherpad]<br />
** http://primarypad.com/<br />
* Object Orientation Review<br />
* C Review<br />
*: pointers<br />
*: pointers and arrays<br />
<br />
=== To Do 1===<br />
==== Due May 7th (Tuesday) 18:00 ====<br />
# Create an account on [https://github.com github]<br />
## Make sure your account name is presentable. This name will stay with you forever.<br />
## Make sure your information on github is complete (real name, email, etc...) <br />
# Send ONE email to [mailto:fardad.soleimanloo@senecacollege.ca?subject=344Github20132 me] containing your git hub id<br />
#: subject of the email should be '''''344Github20132'''''<br />
#: '''''email content'''''<br />
#: name: Your Name (exactly as it appears on your Seneca student card)<br />
#: nickname: Your Nick name<br />
#: Git hub ID: your Github id <br />
==== Due by May 13th, 23:59 ====<br />
# Create a [http://en.wikipedia.org/wiki/Blog blog] (anywhere you like)<br />
# Join the IRC by [http://www.wikihow.com/Register-a-User-Name-on-Freenode registering your nickname on freenode] server and joining the #seneca-oop344 channel for 344 related dialog<br />
#: Additional channels of interest: #seneca to interact with all Seneca students participating in opensource projects, and #seneca-social for Social (off-topic) dialog.<br />
# Read [http://git-scm.com/book Pro-git book]<br />
#: Chapter One and Chapter Two<br />
# Create an account on this wiki: send an email to [mailto:cdot-wiki-admin@senecac.on.ca?subject=Wiki+account+request cdot-wiki-admin@senecac.on.ca] and ask for an account, an email will be sent back to you with your userid and a temporary password; make sure you have the following included in your email.<br />
#* Email subject: Wiki Account Request<br />
#* The subject you are enrolled in: "OOP344"<br />
#* Your Seneca user id<br />
#* Send this email from your Seneca Account only<br />
# Learn how to do basic editing in a wiki<br />
<br />
=== Resources 1 ===<br />
* Git<br />
** [http://git-scm.com/book Pro-git book]<br />
** [[GIT for OOP344 Projects]]<br />
** Great 15 minutes tutorial that will give you basic understanding of Git<br />
**: [http://try.github.com/levels/1/challenges/1 Try GitHub]<br />
** [http://www.sourcetreeapp.com Git GUI Client for Mac ] <br />
** [http://windows.github.com/ Github Client for Windows] <br />
** [https://help.github.com/articles/generating-ssh-keys Generating SSH keys for github]<br />
* Wiki<br />
* [http://www.wikihow.com/Register-a-User-Name-on-Freenode How to register your IRC nickname on freenode]<br />
* [http://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients Compare IRC clients]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:How_to_edit_a_page How To edit Wiki pages]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet How To edit Wiki Cheatsheet]<br />
* Blogs<br />
** [http://wordpress.com/ Wordpress]<br />
** [http://www.blogger.com/ Blogger]<br />
** [https://www.tumblr.com/ Tumblr]<br />
* IRC Clients:<br />
** [http://www.silverex.org/download/ XChat 2 (Windows)]<br />
** [http://colloquy.info/downloads.html Colloquy Colloguy (Mac)] <br />
** [https://addons.mozilla.org/en-US/firefox/addon/chatzilla/ ChatZilla (Multi-platform)]<br />
** [http://clicksandwhistles.com/download.php Clicks & Whistles (Windows)]<br />
* How to Install <br />
** [http://wiki.tryphon.eu/how_to_install_xchat XChat]<br />
== Week 2 - May 12==<br />
=== This Week 2===<br />
* Git review - [http://rogerdudler.github.io/git-guide/ Git_Guide]<br />
*: [http://git-scm.com/docs/git-clone clone], [http://git-scm.com/docs/git-pull pull], [http://git-scm.com/docs/git-push push]<br />
*: [http://git-scm.com/docs/git-add add], [http://git-scm.com/docs/git-commit commit], [http://git-scm.com/docs/git-branch branch]<br />
* Operators<br />
*: review<br />
*: Logical<br />
*: Arithmetic<br />
*: Lazy evaluation<br />
*: operators in C <br />
* pointers (continued)<br />
*: arrays<br />
*: arithmetic<br />
*: void<br />
*: functions<br />
* Default Args<br />
<br />
=== To Do 2===<br />
=== Resources 2===<br />
<br />
* Single resource that will give you all the knowledge you need about pointers, including information given in the last two classes. WARNING! Reading online tutorials is NOT a substitute to visiting in-class lectures.<br />
*: [http://www.cplusplus.com/doc/tutorial/pointers/ Everything you always wanted to know about pointers, but were afraid to ask]<br />
<br />
* Type Casing in C++.<br />
*: [https://www.youtube.com/watch?v=oa_fWKQACAo Casting in C++ (YouTube Video)]<br />
*: [http://www.cplusplus.com/doc/tutorial/typecasting/ Type casting in detail (Documentation)]<br />
<br />
* Void Type<br />
*: [http://msdn.microsoft.com/en-us/library/ebh2k5sc.aspx Pointers to Type Void (MSDN link)]<br />
<br />
* Function Pointers<br />
*: [https://www.youtube.com/watch?v=ZBJoGKVnZYI C++ Function Pointers].<br />
*: [http://www.learncpp.com/cpp-tutorial/78-function-pointers/ C++ Function Pointers in detail].<br />
<br />
=== blog posts 2===<br />
<br />
* [http://www.admix-dev.tumblr.com/post/50621074633/oliver-steele-created-a-great-image-explaining-how Easy picture explanation of how the Git works]<br />
*: Easy and detailed explanation of Git transfer procedures using schema.<br />
* [http://admix-dev.tumblr.com/post/50350903940/adding-auto-completion-to-the-git-commands-mac-os Adding auto-completion to the git commands on Mac OS X]<br />
*: Short guide how to set up auto-completion for the '''git''' commands on your Mac (using '''Tab''' to complete commands).<br />
<br />
== Week 3 - May 19==<br />
=== This Week 3===<br />
* Real Signature of main()<br />
* Pre-Processor directives<br />
*: define (macros)<br />
*: include<br />
* [http://msdn.microsoft.com/en-us/library/05w82thz(v=vs.80).aspx typedefs]<br />
* Variable Argument list [http://admixdev.com/2013/06/05/59/ example]<br />
* [http://www.cplusplus.com/doc/tutorial/namespaces/ Namespaces]<br />
* friends<br />
<br />
=== To Do 3===<br />
* program: int AscToInt(const char *num);<br />
* program: char* nstrcat(char* name, ...) //Basically strcat with >= 1 arguments<br />
<br />
=== Resources 3===<br />
<br />
* C++ Command Line Arguments<br />
*: [https://www.youtube.com/watch?v=rAVIm-g8alQ Basic Tutorial].<br />
<br />
* Variable Arguments Handling<br />
*: [http://www.cplusplus.com/reference/cstdarg/ <stdarg.h> types & macros].<br />
<br />
=== Blog posts 3===<br />
* <u>'''AscToInt Solutions'''</u><br />
<br />
:[http://lisyonok85.wordpress.com/?p=7 SecA Artem's Solution]<br />
<br />
:[http://dongdli.wordpress.com/2013/05/21/codes-of-the-function-int-asctoint-const-char-num/ Codes from SECTION_B DONG LI]<br />
<br />
:[http://malliso1.wordpress.com/2013/05/21/converting-a-string-of-numbers-to-an-integer/ Converting a string of numbers to an integer.]<br />
<br />
:[http://matthewtorrance.blogspot.ca/2013/05/asctoint.html AscToInt Function]<br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/21/the-ascii-conversion-challenge/ SecA Drew Terrance Kerr]<br />
<br />
:[http://ssuduruk.blogspot.ca/2013/05/asctointconst-char-num.html SecA Chiyoung Choi]<br />
<br />
:[http://admix-dev.tumblr.com/post/51005560090/conversion-char-into-int SecB Oleksandr Snurnikov, (ascToInt() function) ]<br />
<br />
:[http://happyivyli.blogspot.ca/2013/05/solution-of-int-asctointconst-char-num.html SecB Na Li]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/blog-post.html SecA Herman Hum]<br />
<br />
:[http://shahzyn.blogspot.ca/2013/05/ascii-to-int.html SecA Shehzin Arshad]<br />
<br />
:[http://joshem31.wordpress.com/2013/05/21/my-first-challenge-my-first-asctoint-function/ SecA Jose Ramirez]<br />
<br />
:[http://mattmaceachern.blogspot.ca/2013/05/blog-post.html SecA Matt MacEachern]<br />
<br />
:[http://jungmin-ji.tumblr.com/post/51031179606/simple-char-to-int SecA Jungmin Ji]<br />
<br />
:[http://namniak.blogspot.ca/2013/05/asctoint.html Vadim Namniak's Solution]<br />
<br />
:[http://zhunxue1912.wordpress.com/2013/05/21/int-asctointconst-char-num/ Zhun Xue]<br />
<br />
:[http://brackethunter.blogspot.ca/2013/05/asctoint-11-now-with-range-checking-and.html Brad Stuart's Improved Solution]<br />
<br />
:[http://markieta.blogspot.ca/2013/05/asctoint.html Christopher Markieta]<br />
<br />
:[http://haydeezpluto.wordpress.com/2013/05/26/ascii-to-integer-conversion/ Amal Khandelwal]<br />
<br />
:[http://tthaninayagam.blogspot.ca/2013/05/asctoint.html SecB Thanushaa Thaninayagam]<br />
<br />
:[http://chisa-takata.tumblr.com/ SecA Chisa Takata]<br />
<br />
:[http://dimpleamin204.blogspot.ca/ SecA Dimple Amin]<br />
<br />
:[http://ksidhucode.blogspot.ca/2013/05/asctoint_30.html SecB Kevin Sidhu]<br />
<br />
* <u>'''nstrcat Solutions'''</u><br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/22/concatenating-an-arbitrary-number-of-strings/ SecA Drew Terrance Kerr]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/const-char-nstrcatchar-des.html SecA Herman Hum]<br />
<br />
:[http://admix-dev.tumblr.com/post/51133316724/const-char-nstrcat-char-to-strcat-with-1 SecB Oleksandr Snurnikov]<br />
:*[https://github.com/admix/admixSoft/blob/master/OOP344/nstrcat.cpp direct link to the source code on the github]<br />
<br />
:[http://brackethunter.blogspot.ca/2013/05/frustrationnstrcatdes.html Brad Stuart]<br />
<br />
:[http://mattmaceachern.blogspot.ca/2013/05/nstrcatcpp-no-fail-safe-yet-to-be-added.html SecA Matt MacEachern]<br />
<br />
:[http://dongdli.wordpress.com/2013/05/27/code-of-nstrcat-a-function-to-concatinate-unknow-amount-of-strings/ SECTION_B DONG LI]<br />
<br />
:[http://ksidhucode.blogspot.ca/2013/05/nstrcat.html SecB Kevin Sidhu]<br />
<br />
:[http://nstrcat.blogspot.ca/ SecB Prabhleen Bhupal]<br />
<br />
:[http://kazilemannor.wordpress.com/2013/06/05/to-do3-char-nstrcat/ SecB Zhenyang Chen]<br />
<br />
:[http://haydeezpluto.wordpress.com/2013/06/07/variable-argument-list-string-concatenation-3/ Amal Khandelwal]<br />
<br />
== Week 4 - May 26==<br />
=== This Week 4 ===<br />
* Project introduction<br />
* [http://lisyonok85.wordpress.com/2013/05/29/project/ Project Diagram (as drawn in class)]<br />
*: bio, cio<br />
* Declaration modifiers <br />
*: auto<br />
*: [http://www.learncpp.com/cpp-tutorial/811-static-member-variables/ static]<br />
*: [http://www.learncpp.com/cpp-tutorial/42-global-variables/ extern]<br />
** const<br />
**: [http://www.cprogramming.com/reference/pointers/const_pointers.html pointers]<br />
**: methods<br />
* [http://faculty.cs.niu.edu/~mcmahon/CS241/Notes/compile.html compilation process]<br />
* [http://www.cplusplus.com/doc/tutorial/preprocessor/ pre-processor directives]<br />
*: [http://en.wikipedia.org/wiki/Include_guard Include safe guards]<br />
<br />
=== To Do 4===<br />
<br />
=== Resources 4===<br />
=== blog posts 4===<br />
*[http://brackethunter.blogspot.ca/2013/06/moveboxcpp.html SecB Brad Stuart - Movebox.cpp]<br />
<br />
== Week 5 - June 2==<br />
=== This Week 5===<br />
* Const<br />
*: variable declaration <br />
*: Pointers<br />
*: References <br />
*: Methods<br />
* Statics<br />
*: variables [http://stackoverflow.com/questions/3698043/static-variables-in-c crowd source explanation]<br />
*: [http://www.learncpp.com/cpp-tutorial/812-static-member-functions/ Methods]<br />
* [http://www.learncpp.com/cpp-tutorial/122-virtual-functions/ Virtuals] <br />
*: Review<br />
*: Pure Virtual [http://www.learncpp.com/cpp-tutorial/126-pure-virtual-functions-abstract-base-classes-and-interface-classes/ Pure Virtual & Abstract Base Classes]<br />
*: Abstract Base Classes<br />
<br />
=== To Do 5===<br />
=== Resources 5===<br />
=== blog posts 5===<br />
== Week 6 - June 9==<br />
=== This Week 6===<br />
* Tuesday class, cancelled (makeup session and more during study break)<br />
* conui review and Initial repo settings<br />
* class member access operator review<br />
*: arrow and dot<br />
* literals<br />
* sizeof() <br />
* operators (more in detail)<br />
<br />
=== To Do 6===<br />
# Add your information to [[Teams' List 20132 - OOP344 | Teams1 List]] - '''''Due NOW!'''''<br />
# After adding your information to the [[Teams' List 20132 - OOP344 | Teams1 List]], click on your team name and update your '''''Team Page''''' to match your team requirements. - '''''Due NOW!'''''<br />
# Add your your information to [[Student List 20132 - OOP344 | The Student List Page]]. '''''Due NOW!'''''<br />
# complete your task in [[Project R0.1 20132- OOP344 | Release R0.1]] - '''''Due Monday 17th, 23:59'''''<br />
<br />
=== Resources 6===<br />
=== blog posts 6===<br />
== Week 7 - June 16==<br />
=== This Week 7===<br />
<br />
=== To Do 7===<br />
# Add resize to IntArr<br />
<br />
=== Resources 7===<br />
=== blog posts ===<br />
*[http://dtkerroop344.wordpress.com/2013/06/18/simple-linked-list/ A simple linked list]<br />
*[http://matthewtorrance.blogspot.ca/2013/06/queue-add-and-remove.html Queue: Add & Remove]<br />
<br />
== Week 8 - June 23 (Study Break)==<br />
=== This Week 8===<br />
* makeup session and more (June, Tuesday 25th)<br />
*: 9:00 to ???<br />
*: please make sure you are rested and ready for a long day of study, new materials and reviews<br />
<br />
=== To Do 8===<br />
=== Resources 8===<br />
=== blog posts 8===<br />
<br />
== Week 9 - June 30==<br />
=== This Week 9===<br />
* New keywords <br />
*: inline<br />
*: auto<br />
*: nullptr<br />
* Enum Review<br />
* Introduction to Recursion<br />
* Dyanimic Lists<br />
* Doubly Linked Lists<br />
* Intro to Exceptions<br />
=== To Do 9===<br />
* Complete Doubly Linked List Implementation<br />
* Blog about it<br />
=== Resources 9===<br />
=== blog posts 9===<br />
<br />
*[http://kazilemannor.wordpress.com/2013/07/05/dll/ SecB Zhenyang Chen - DLL]<br />
*[http://brackethunter.blogspot.ca/2013/07/dllist-with-ui.html Brad Stuart - DLList with UI]<br />
<br />
== Week 10 - July 7==<br />
=== This Week 10===<br />
=== To Do 10===<br />
=== Resources 10===<br />
=== blog posts 10===<br />
== Week 11 - July 14==<br />
=== This Week 11===<br />
=== To Do 11===<br />
=== Resources 11===<br />
=== blog posts 11===<br />
== Week 12 - July 21==<br />
=== This Week 12===<br />
=== To Do 12===<br />
=== Resources 12===<br />
=== blog posts 12===<br />
== Week 13 - July 28==<br />
=== This Week 13===<br />
=== To Do 13===<br />
=== Resources 13===<br />
=== blog posts 13===<br />
== Week 14 - August 4==<br />
=== This Week 14===<br />
=== To Do 14===<br />
=== Resources 14===<br />
=== blog posts 14===<br />
== Week 15 - August 11 (Exam Week)==<br />
=== This Week 15===<br />
=== To Do 15===<br />
=== Resources 15===<br />
=== blog posts 15===</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Weekly_Schedule_20132_-_OOP344&diff=97155Weekly Schedule 20132 - OOP3442013-07-08T00:28:59Z<p>Brad Stuart: /* blog posts 9 */</p>
<hr />
<div>{{OOP344 Index | 20132}}<br />
<br />
Under Construction!<br />
<br />
== Week 1 - May 5 ==<br />
<br />
=== This Week 1 ===<br />
<br />
* Introduction to Open Source development.<br />
* Collaboration Tools:<br />
** Wiki<br />
** Blog<br />
** IRC<br />
** Code Repository<br />
**: Git, Svn, ....<br />
** Big Blue Button<br />
* Etherpad<br />
** [http://etherpad.proximity.on.ca:9001 Seneca Etherpad]<br />
** http://primarypad.com/<br />
* Object Orientation Review<br />
* C Review<br />
*: pointers<br />
*: pointers and arrays<br />
<br />
=== To Do 1===<br />
==== Due May 7th (Tuesday) 18:00 ====<br />
# Create an account on [https://github.com github]<br />
## Make sure your account name is presentable. This name will stay with you forever.<br />
## Make sure your information on github is complete (real name, email, etc...) <br />
# Send ONE email to [mailto:fardad.soleimanloo@senecacollege.ca?subject=344Github20132 me] containing your git hub id<br />
#: subject of the email should be '''''344Github20132'''''<br />
#: '''''email content'''''<br />
#: name: Your Name (exactly as it appears on your Seneca student card)<br />
#: nickname: Your Nick name<br />
#: Git hub ID: your Github id <br />
==== Due by May 13th, 23:59 ====<br />
# Create a [http://en.wikipedia.org/wiki/Blog blog] (anywhere you like)<br />
# Join the IRC by [http://www.wikihow.com/Register-a-User-Name-on-Freenode registering your nickname on freenode] server and joining the #seneca-oop344 channel for 344 related dialog<br />
#: Additional channels of interest: #seneca to interact with all Seneca students participating in opensource projects, and #seneca-social for Social (off-topic) dialog.<br />
# Read [http://git-scm.com/book Pro-git book]<br />
#: Chapter One and Chapter Two<br />
# Create an account on this wiki: send an email to [mailto:cdot-wiki-admin@senecac.on.ca?subject=Wiki+account+request cdot-wiki-admin@senecac.on.ca] and ask for an account, an email will be sent back to you with your userid and a temporary password; make sure you have the following included in your email.<br />
#* Email subject: Wiki Account Request<br />
#* The subject you are enrolled in: "OOP344"<br />
#* Your Seneca user id<br />
#* Send this email from your Seneca Account only<br />
# Learn how to do basic editing in a wiki<br />
<br />
=== Resources 1 ===<br />
* Git<br />
** [http://git-scm.com/book Pro-git book]<br />
** [[GIT for OOP344 Projects]]<br />
** Great 15 minutes tutorial that will give you basic understanding of Git<br />
**: [http://try.github.com/levels/1/challenges/1 Try GitHub]<br />
** [http://www.sourcetreeapp.com Git GUI Client for Mac ] <br />
** [http://windows.github.com/ Github Client for Windows] <br />
** [https://help.github.com/articles/generating-ssh-keys Generating SSH keys for github]<br />
* Wiki<br />
* [http://www.wikihow.com/Register-a-User-Name-on-Freenode How to register your IRC nickname on freenode]<br />
* [http://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients Compare IRC clients]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:How_to_edit_a_page How To edit Wiki pages]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet How To edit Wiki Cheatsheet]<br />
* Blogs<br />
** [http://wordpress.com/ Wordpress]<br />
** [http://www.blogger.com/ Blogger]<br />
** [https://www.tumblr.com/ Tumblr]<br />
* IRC Clients:<br />
** [http://www.silverex.org/download/ XChat 2 (Windows)]<br />
** [http://colloquy.info/downloads.html Colloquy Colloguy (Mac)] <br />
** [https://addons.mozilla.org/en-US/firefox/addon/chatzilla/ ChatZilla (Multi-platform)]<br />
** [http://clicksandwhistles.com/download.php Clicks & Whistles (Windows)]<br />
* How to Install <br />
** [http://wiki.tryphon.eu/how_to_install_xchat XChat]<br />
== Week 2 - May 12==<br />
=== This Week 2===<br />
* Git review - [http://rogerdudler.github.io/git-guide/ Git_Guide]<br />
*: [http://git-scm.com/docs/git-clone clone], [http://git-scm.com/docs/git-pull pull], [http://git-scm.com/docs/git-push push]<br />
*: [http://git-scm.com/docs/git-add add], [http://git-scm.com/docs/git-commit commit], [http://git-scm.com/docs/git-branch branch]<br />
* Operators<br />
*: review<br />
*: Logical<br />
*: Arithmetic<br />
*: Lazy evaluation<br />
*: operators in C <br />
* pointers (continued)<br />
*: arrays<br />
*: arithmetic<br />
*: void<br />
*: functions<br />
* Default Args<br />
<br />
=== To Do 2===<br />
=== Resources 2===<br />
<br />
* Single resource that will give you all the knowledge you need about pointers, including information given in the last two classes. WARNING! Reading online tutorials is NOT a substitute to visiting in-class lectures.<br />
*: [http://www.cplusplus.com/doc/tutorial/pointers/ Everything you always wanted to know about pointers, but were afraid to ask]<br />
<br />
* Type Casing in C++.<br />
*: [https://www.youtube.com/watch?v=oa_fWKQACAo Casting in C++ (YouTube Video)]<br />
*: [http://www.cplusplus.com/doc/tutorial/typecasting/ Type casting in detail (Documentation)]<br />
<br />
* Void Type<br />
*: [http://msdn.microsoft.com/en-us/library/ebh2k5sc.aspx Pointers to Type Void (MSDN link)]<br />
<br />
* Function Pointers<br />
*: [https://www.youtube.com/watch?v=ZBJoGKVnZYI C++ Function Pointers].<br />
*: [http://www.learncpp.com/cpp-tutorial/78-function-pointers/ C++ Function Pointers in detail].<br />
<br />
=== blog posts 2===<br />
<br />
* [http://www.admix-dev.tumblr.com/post/50621074633/oliver-steele-created-a-great-image-explaining-how Easy picture explanation of how the Git works]<br />
*: Easy and detailed explanation of Git transfer procedures using schema.<br />
* [http://admix-dev.tumblr.com/post/50350903940/adding-auto-completion-to-the-git-commands-mac-os Adding auto-completion to the git commands on Mac OS X]<br />
*: Short guide how to set up auto-completion for the '''git''' commands on your Mac (using '''Tab''' to complete commands).<br />
<br />
== Week 3 - May 19==<br />
=== This Week 3===<br />
* Real Signature of main()<br />
* Pre-Processor directives<br />
*: define (macros)<br />
*: include<br />
* [http://msdn.microsoft.com/en-us/library/05w82thz(v=vs.80).aspx typedefs]<br />
* Variable Argument list [http://admixdev.com/2013/06/05/59/ example]<br />
* [http://www.cplusplus.com/doc/tutorial/namespaces/ Namespaces]<br />
* friends<br />
<br />
=== To Do 3===<br />
* program: int AscToInt(const char *num);<br />
* program: char* nstrcat(char* name, ...) //Basically strcat with >= 1 arguments<br />
<br />
=== Resources 3===<br />
<br />
* C++ Command Line Arguments<br />
*: [https://www.youtube.com/watch?v=rAVIm-g8alQ Basic Tutorial].<br />
<br />
* Variable Arguments Handling<br />
*: [http://www.cplusplus.com/reference/cstdarg/ <stdarg.h> types & macros].<br />
<br />
=== Blog posts 3===<br />
* <u>'''AscToInt Solutions'''</u><br />
<br />
:[http://lisyonok85.wordpress.com/?p=7 SecA Artem's Solution]<br />
<br />
:[http://dongdli.wordpress.com/2013/05/21/codes-of-the-function-int-asctoint-const-char-num/ Codes from SECTION_B DONG LI]<br />
<br />
:[http://malliso1.wordpress.com/2013/05/21/converting-a-string-of-numbers-to-an-integer/ Converting a string of numbers to an integer.]<br />
<br />
:[http://matthewtorrance.blogspot.ca/2013/05/asctoint.html AscToInt Function]<br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/21/the-ascii-conversion-challenge/ SecA Drew Terrance Kerr]<br />
<br />
:[http://ssuduruk.blogspot.ca/2013/05/asctointconst-char-num.html SecA Chiyoung Choi]<br />
<br />
:[http://admix-dev.tumblr.com/post/51005560090/conversion-char-into-int SecB Oleksandr Snurnikov, (ascToInt() function) ]<br />
<br />
:[http://happyivyli.blogspot.ca/2013/05/solution-of-int-asctointconst-char-num.html SecB Na Li]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/blog-post.html SecA Herman Hum]<br />
<br />
:[http://shahzyn.blogspot.ca/2013/05/ascii-to-int.html SecA Shehzin Arshad]<br />
<br />
:[http://joshem31.wordpress.com/2013/05/21/my-first-challenge-my-first-asctoint-function/ SecA Jose Ramirez]<br />
<br />
:[http://mattmaceachern.blogspot.ca/2013/05/blog-post.html SecA Matt MacEachern]<br />
<br />
:[http://jungmin-ji.tumblr.com/post/51031179606/simple-char-to-int SecA Jungmin Ji]<br />
<br />
:[http://namniak.blogspot.ca/2013/05/asctoint.html Vadim Namniak's Solution]<br />
<br />
:[http://zhunxue1912.wordpress.com/2013/05/21/int-asctointconst-char-num/ Zhun Xue]<br />
<br />
:[http://brackethunter.blogspot.ca/2013/05/asctoint-11-now-with-range-checking-and.html Brad Stuart's Improved Solution]<br />
<br />
:[http://markieta.blogspot.ca/2013/05/asctoint.html Christopher Markieta]<br />
<br />
:[http://haydeezpluto.wordpress.com/2013/05/26/ascii-to-integer-conversion/ Amal Khandelwal]<br />
<br />
:[http://tthaninayagam.blogspot.ca/2013/05/asctoint.html SecB Thanushaa Thaninayagam]<br />
<br />
:[http://chisa-takata.tumblr.com/ SecA Chisa Takata]<br />
<br />
:[http://dimpleamin204.blogspot.ca/ SecA Dimple Amin]<br />
<br />
:[http://ksidhucode.blogspot.ca/2013/05/asctoint_30.html SecB Kevin Sidhu]<br />
<br />
* <u>'''nstrcat Solutions'''</u><br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/22/concatenating-an-arbitrary-number-of-strings/ SecA Drew Terrance Kerr]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/const-char-nstrcatchar-des.html SecA Herman Hum]<br />
<br />
:[http://admix-dev.tumblr.com/post/51133316724/const-char-nstrcat-char-to-strcat-with-1 SecB Oleksandr Snurnikov]<br />
:*[https://github.com/admix/admixSoft/blob/master/OOP344/nstrcat.cpp direct link to the source code on the github]<br />
<br />
:[http://brackethunter.blogspot.ca/2013/05/frustrationnstrcatdes.html Brad Stuart]<br />
<br />
:[http://mattmaceachern.blogspot.ca/2013/05/nstrcatcpp-no-fail-safe-yet-to-be-added.html SecA Matt MacEachern]<br />
<br />
:[http://dongdli.wordpress.com/2013/05/27/code-of-nstrcat-a-function-to-concatinate-unknow-amount-of-strings/ SECTION_B DONG LI]<br />
<br />
:[http://ksidhucode.blogspot.ca/2013/05/nstrcat.html SecB Kevin Sidhu]<br />
<br />
:[http://nstrcat.blogspot.ca/ SecB Prabhleen Bhupal]<br />
<br />
:[http://kazilemannor.wordpress.com/2013/06/05/to-do3-char-nstrcat/ SecB Zhenyang Chen]<br />
<br />
:[http://haydeezpluto.wordpress.com/2013/06/07/variable-argument-list-string-concatenation-3/ Amal Khandelwal]<br />
<br />
== Week 4 - May 26==<br />
=== This Week 4 ===<br />
* Project introduction<br />
* [http://lisyonok85.wordpress.com/2013/05/29/project/ Project Diagram (as drawn in class)]<br />
*: bio, cio<br />
* Declaration modifiers <br />
*: auto<br />
*: [http://www.learncpp.com/cpp-tutorial/811-static-member-variables/ static]<br />
*: [http://www.learncpp.com/cpp-tutorial/42-global-variables/ extern]<br />
** const<br />
**: [http://www.cprogramming.com/reference/pointers/const_pointers.html pointers]<br />
**: methods<br />
* [http://faculty.cs.niu.edu/~mcmahon/CS241/Notes/compile.html compilation process]<br />
* [http://www.cplusplus.com/doc/tutorial/preprocessor/ pre-processor directives]<br />
*: [http://en.wikipedia.org/wiki/Include_guard Include safe guards]<br />
<br />
=== To Do 4===<br />
<br />
=== Resources 4===<br />
=== blog posts 4===<br />
*[http://brackethunter.blogspot.ca/2013/06/moveboxcpp.html SecB Brad Stuart - Movebox.cpp]<br />
<br />
== Week 5 - June 2==<br />
=== This Week 5===<br />
* Const<br />
*: variable declaration <br />
*: Pointers<br />
*: References <br />
*: Methods<br />
* Statics<br />
*: variables [http://stackoverflow.com/questions/3698043/static-variables-in-c crowd source explanation]<br />
*: [http://www.learncpp.com/cpp-tutorial/812-static-member-functions/ Methods]<br />
* [http://www.learncpp.com/cpp-tutorial/122-virtual-functions/ Virtuals] <br />
*: Review<br />
*: Pure Virtual [http://www.learncpp.com/cpp-tutorial/126-pure-virtual-functions-abstract-base-classes-and-interface-classes/ Pure Virtual & Abstract Base Classes]<br />
*: Abstract Base Classes<br />
<br />
=== To Do 5===<br />
=== Resources 5===<br />
=== blog posts 5===<br />
== Week 6 - June 9==<br />
=== This Week 6===<br />
* Tuesday class, cancelled (makeup session and more during study break)<br />
* conui review and Initial repo settings<br />
* class member access operator review<br />
*: arrow and dot<br />
* literals<br />
* sizeof() <br />
* operators (more in detail)<br />
<br />
=== To Do 6===<br />
# Add your information to [[Teams' List 20132 - OOP344 | Teams1 List]] - '''''Due NOW!'''''<br />
# After adding your information to the [[Teams' List 20132 - OOP344 | Teams1 List]], click on your team name and update your '''''Team Page''''' to match your team requirements. - '''''Due NOW!'''''<br />
# Add your your information to [[Student List 20132 - OOP344 | The Student List Page]]. '''''Due NOW!'''''<br />
# complete your task in [[Project R0.1 20132- OOP344 | Release R0.1]] - '''''Due Monday 17th, 23:59'''''<br />
<br />
=== Resources 6===<br />
=== blog posts 6===<br />
== Week 7 - June 16==<br />
=== This Week 7===<br />
<br />
=== To Do 7===<br />
# Add resize to IntArr<br />
<br />
=== Resources 7===<br />
=== blog posts ===<br />
*[http://dtkerroop344.wordpress.com/2013/06/18/simple-linked-list/ A simple linked list]<br />
*[http://matthewtorrance.blogspot.ca/2013/06/queue-add-and-remove.html Queue: Add & Remove]<br />
<br />
== Week 8 - June 23 (Study Break)==<br />
=== This Week 8===<br />
* makeup session and more (June, Tuesday 25th)<br />
*: 9:00 to ???<br />
*: please make sure you are rested and ready for a long day of study, new materials and reviews<br />
<br />
=== To Do 8===<br />
=== Resources 8===<br />
=== blog posts 8===<br />
<br />
== Week 9 - June 30==<br />
=== This Week 9===<br />
* New keywords <br />
*: inline<br />
*: auto<br />
*: nullptr<br />
* Enum Review<br />
* Introduction to Recursion<br />
* Dyanimic Lists<br />
* Doubly Linked Lists<br />
* Intro to Exceptions<br />
=== To Do 9===<br />
* Complete Doubly Linked List Implementation<br />
* Blog about it<br />
=== Resources 9===<br />
=== blog posts 9===<br />
<br />
*[http://kazilemannor.wordpress.com/2013/07/05/dll/ SecB Zhenyang Chen - DLL]<br />
*[http://brackethunter.blogspot.ca/2013/07/dllist-with-ui.html/ Brad Stuart - DLList with UI]<br />
<br />
== Week 10 - July 7==<br />
=== This Week 10===<br />
=== To Do 10===<br />
=== Resources 10===<br />
=== blog posts 10===<br />
== Week 11 - July 14==<br />
=== This Week 11===<br />
=== To Do 11===<br />
=== Resources 11===<br />
=== blog posts 11===<br />
== Week 12 - July 21==<br />
=== This Week 12===<br />
=== To Do 12===<br />
=== Resources 12===<br />
=== blog posts 12===<br />
== Week 13 - July 28==<br />
=== This Week 13===<br />
=== To Do 13===<br />
=== Resources 13===<br />
=== blog posts 13===<br />
== Week 14 - August 4==<br />
=== This Week 14===<br />
=== To Do 14===<br />
=== Resources 14===<br />
=== blog posts 14===<br />
== Week 15 - August 11 (Exam Week)==<br />
=== This Week 15===<br />
=== To Do 15===<br />
=== Resources 15===<br />
=== blog posts 15===</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Project_R0.1_20132-_OOP344&diff=96878Project R0.1 20132- OOP3442013-06-18T05:21:43Z<p>Brad Stuart: /* Notes */</p>
<hr />
<div>{{OOP344 Index | 20131}}<br />
<br />
=Release=<br />
* 0.1<br />
=Notes=<br />
* Using Matrix, from windows: please use [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe putty] only and set the keyboard to <br />
*: Backspace = Ctrl-?<br />
*: Home and End = Standard<br />
*: Function keys and keypad = Linux<br />
*: And then:<br />
*: Connection > Data > Terminal-type string = linux (This step must be done when first connecting through putty!)<br />
*:: Or if you have already connected, type in (export TERM="linux") without brackets<br />
** If you're still having problems do all of that AND (export TERM="linux") and it will allow you to use END and HOME, though the F keys still won't work.<br />
* [https://cs.senecac.on.ca/~chris.szalwinski/resources/borland.html Guide for Using Borland 5.5]<br />
*: Note that to change the cmd.exe window size, right click on the top bar -> Properties -> Layout Tab<br />
<br />
=Due Dates=<br />
Monday June 17th.<br />
<br />
=Help=<br />
==Help Needed==<br />
* <strike>Bug(?): The insert mode in our assignment works as it is supposed to but fails the test when running the test program. Has anyone else encountered this problem, or is this an error on my side?</strike><br />
<br />
I had the same problem. Try to replace the original code '''Console::_insertMode''' by just '''insertMode'''. It works for me. Otherwise it is local I guess. So it works within your application but does not react to parameter passed to the function.<br />
<br />
Thank you. I actually solved it by making insertMode=Console::_insertMode.<br />
<br />
* Just noticed that the return string for the 4-6 test is wrong. It checks to see if you've inserted 'ab' into the string, and not 'abc' like the dialog box asks for. If you insert only 'ab' the test passes as it should.<br />
<br />
* In test 4.9 (END button), the test gives the string which stays in the middle of the field, is that OK?! I see that kind of a weird situation. In that case it fails the END button test, because values for curPosition & strOffset are not right. Ideas?<br />
<br />
You want to set the curPosition=size-*strOffset. This will mean that it scrolls down the string to the end if the length of the string is longer than the field, but only move to the end of the string if it isn't, which allows for having the string stay in the middle of the field as in the test. When you do this, though, don't forget that you need to make sure that, when the curPosition goes outside the field, the curPosition and offset are changed accordingly.<br />
<br />
* Anyone know where/how to submit when it's complete?<br />
<br />
If I'm not mistaking the test program should submit it in the end of the testing automatically.<br />
<br />
No, once you reach the end it says "Wait for the final tester to submit the assignment". Unless there's another program around that I'm not aware of.<br />
<br />
==Blog Posts==<br />
<br />
=Learning Outcome=<br />
Upon successful completion of this first assignment, you will have demonstrated the abilities to design and code<br />
* functions that use the basic console input and output library<br />
* a line editor<br />
* use of extern<br />
* operator overload<br />
* use of namespaces<br />
=Console Line Editing Facility =<br />
As your first assignment, you are to upgrade the basic console input output class (BConsole) to include line-display and line-editing facilities and use of "<<" and ">>" operators for character I/O and string output. <br />
<br />
==Specifications==<br />
<br />
Your submission consists of a class called Console that is to be inherited from BConsole in a namespace called '''cui'''. Your application module is fully portable across Borland C++5.5 on windows, Linux GNU C++, Viusual C++ on Windows and Mac C++ platforms which accepts console input, and provides console output through the set of facilities available in your Console module. <br />
<br />
The name of the library object to be created is console. The header file for the original version of this module is console.h and the implementation file for the original version is console.cpp. All of the identifiers for the library module and all upgrades to the module are defined in the cui namespace (short for console input output).<br />
<br />
Your upgrade in this assignment consists of creating a class called Console, inherited from BConsole, implemented in two files; console.h and console.cpp:<br />
<br />
In addition to all public methods of BConsole, Console must have the following two public methods and overload "<<" and ">>" operators.<br />
===external links===<br />
* instantiate Console, in an object called "console" in cui namespace and create an external linkage to in console.h<br />
===strdsp() method===<br />
void display(const char* str, int row, int col, int fieldLen=0, int curpos = -1); <br />
<br />
This method outputs the C-style, null-terminated string pointed to by str starting at row "row" and column "col" of the screen in a field of fieldLen characters(Row value 0 refers to the top row, and column value 0 refers to the left-most column) and positions the cursor at "curpos" location relative to "col", only if it is greater or equal to zero.<br />
<br />
If the string is longer than fieldLen, your function displays the first fieldLen characters. If the string is shorter than fieldLen, your function displays the entire string, followed by enough trailing spaces to fill out the field completely. <br />
<br />
If fieldLen is 0, your function displays the entire string with no trailing spaces.<br />
<br />
Your function positions the cursor after the last character displayed if curpos is less than zero otherwise it positions the cursor at "curpos" location relative to "col". The results are undefined if the starting position of the string is not within the dimensions of the screen.<br />
<br />
===lineedit() method===<br />
<br />
<big><pre><br />
int lineedit(char *str, int row, int col, int fieldLength, int maxStrLength, <br />
int* strOffset=_stroff, int* curPosition=_curpos, <br />
bool InTextEditor = false, bool ReadOnly = false, bool& insertMode=_insertMode );<br />
</pre></big><br />
<br />
This method is to be written in two steps. <br />
====Step one==== <br />
''Ignore the two arguments '''(InTextEditor and ReadOnly)''' for now write the method as follows:''<br />
<br />
This method edits the C-style, null-terminated string pointed by str. The parameter row holds the row (0 is the top row) of the string on the screen. The parameter col holds the starting column (0 is the left-most column) on the screen. The parameter fieldLength holds the length of the editable field. The string may be larger than the field itself, in which case part of the string is hidden from view. The parameter maxStrLength holds the maximum length of the string, excluding the null byte. The parameter insertMode points to a bool variable that holds the current insert mode of the string. The parameter insertMode receives the address of a variable that stores the current editing mode - insert or overwrite. The parameter strOffset points to an int variable that holds the initial offset of the string within the field; that is, the index of the character in the string that initially occupies the first character position in the field. The parameter curPosition points to an int variable that holds the initial cursor position within the field; that is, the index of the character in the field at which the cursor is initially placed. <br />
* '''''Initial Corrections'''''<br />
*:If the initial offset is beyond the end of the string, your function resets the offset to the length of the string; that is, to the index of the character immediately beyond the end of the string. If no offset variable is pointed to; that is, if the address of the variable is NULL, your function sets the offset to the index of the first character in the string; that is, to 0. (to do this have a local variable for the offset that holds zero to be pointed instead of an external variable)<br />
*:If the initial cursor position is beyond the end of the field, your function resets the position to the last character in the field. If the position is beyond the end of the string, your function resets the position to that immediately beyond the end of the string. If no cursor position variable is pointed to; that is, if the address of the variable is NULL, your function sets the cursor position to the first position in the field; that is, to position 0.(like the offset, to do this have a local variable for the cursor position that holds zero to be pointed instead of an external variable)<br />
<br />
Your function does not allow the cursor to move before the start of the field or past the end of the field. If the field ends at the right edge of the screen, your function does not allow the cursor to the right of that edge.<br />
<br />
Your function uses the symbolic names for non-ASCII and special keys defined in the keys.h header file. These names are the same symbolic names as those used in the original library module.<br />
<br />
The user terminates editing by pressing ENTER, ESCAPE, TAB, UP, DOWN, PGUP, PGDN or any of the function keys F(1) through F(12) inclusive. If the user presses ESCAPE, your function aborts editing, replaces the contents of the string with the original contents upon entry into your function, and leaves the offset and cursor position values unaltered. In order to be able to revert to the original string, your function needs to allocate memory at run time. <br />
<br />
At termination, your function passes back through the same int variables the current values of the offset and the cursor position, unless no variables were pointed to upon entry into your function; that is, unless the value of either address was NULL.<br />
<br />
Your function returns an int identifying the key that the user pressed to exit the function. <br />
<br />
Your function takes no action (other than perhaps beeping) if the user tries to enter too many characters (if, for example, the string is full in insert mode, or the cursor is positioned after the last character of a full string in overstrike mode).<br />
<br />
Your function handles the non-ASCII keys as follows<br />
<br />
*LEFT - moves the cursor left one character, if possible, changing the offset, if necessary.<br />
*RIGHT - moves the cursor right one character, if possible, changing the offset, if necessary.<br />
*HOME - moves the cursor to the beginning of the string, changing the offset, if necessary.<br />
*END - moves the cursor to the position to the right of the last character in the string, changing the offset, if necessary. <strike> If the last character is at the edge of the screen, moves the cursor to that character.</strike><br />
*INSERT - toggles Insert/Overstrike mode. In Insert mode, your function inserts a printable character into the string at the current cursor position, moves the remainder of the string to the right to make room for the inserted character, and positions the cursor just to the right of the inserted character. The printable characters are the characters from space (' ') to tilde ('~') inclusive in the ASCII table. In Overstrike mode, your function overwrites the character (if any) at the current cursor position with a printable character and advances the cursor just to the right of the new character. If the cursor is past the end of the string, your function appends a printable character to the string as long as the string isn't full, regardless of the mode. <br />
*DEL - discards the character at the current cursor position and moves all characters to the right of the cursor position one position to the left.<br />
*BACKSPACE - discards the character to the left of the current cursor position, if possible, moves the characters at and to the right of the cursor position one position to the left, if possible, and positions the cursor one character to the left, if possible.<br />
<br />
edit() always displays blanks in any part of the field that is not occupied by the string. UNDER NO CIRCUMSTANCES DOES YOUR FUNCTION CHANGE ANY POSITION ON THE SCREEN OUTSIDE THE FIELD. For example, your function does not display status information (such as "INS" or "OVR") elsewhere on the screen, since such displays limit the programmer's ability to design their own screen layouts.<br />
<br />
You may assume that it is the calling program's responsibility to ensure that the string array is large enough to handle maxStrLength characters and that the starting screen position provides enough room (on the screen) for the field, etc.<br />
<br />
{| class="wikitable" border="0"<br />
|+ <br />
! Edit Method!! Interface<br />
|-<br />
| [[File:editString.png|500px|thumb|center|Edit Method Function Diagram]] || <br />
[[File:interface.png|400px|thumb|center|Interface Diagram]]<br />
|}<br />
<br />
====Step two====<br />
''First run your program with cui_test.cpp and make sure it passes all the tests up to and including "4.16". If all tests are passed continue with step two:<br />
<br />
=====InTextEditor=====<br />
If '''InTextEditor''' is true and the value of '''*strOffset''' is changed at any time, then terminate the edit function immediately and return '''0''';<br />
======TAB key======<br />
If '''InTextEditor''' is true and TAB key is hit, then instead of terminating the function, ''Console::_tabsize'' spaces are inserted into ''str''.<br />
<br />
=====ReadOnly=====<br />
If '''ReadOnly''' is true, then edit function works exactly like before, except that any modification to the data (the content of the '''str''' string) will be ignored.<br />
<br />
===Overload "<<" and ">>" operators===<br />
==== operator>> ====<br />
Console& operator>>(Console& cn, int& ch);<br />
Get a key from keyboard using ''cn'' and store it in ''ch'';<br />
==== operator<< ====<br />
Console& operator<<(Console& cn, char ch);<br />
Print the character ''ch'' on the screen, where the cursor is located, using cn and return the cn reference;<br />
Console& operator<<(Console& cn, const char* str);<br />
print the string '''str''' on the screen where the cursor is using '''cn''' and return the cn reference<br />
<br />
<br />
=Submission=<br />
==Common Submission mistakes==<br />
<!--* Submitting the assignment with old version of cui_text.o<br />
*: ''Make sure you copy the latest version (currently 0.94.1) from my account : $cp ~fardad.soleimanloo/cio_test.o<br />
* Using tab character''<br />
*: ''As mentioned in class using tab character in your text editor makes the indentation of your code different in different editors, please make sure before submission you go to the settings of your development environment and make sure it uses spaces instead of tab character.'' --><br />
==Tester Demo==<br />
<!--To see how tester runs, you can run on Matrix (only use putty with the setting stated at [[#Notes|Notes]]) run:<br />
<big><pre><br />
$ ~fardad.soleimanloo/cui_test<br />
</pre></big> --><br />
<br />
==How to Compile==<br />
Compile and test your code with the test-main, in the following command-line environments and visual studio.<br />
<br />
Local PC: Borland 5.5 <br />
bcc32 bconsole.cpp console.cpp cui_test.cpp<br />
<br />
Local Mac: (use -lcurses to link curses library)<br />
c++ bconsole.cpp console.cpp cui_test.cpp -lcurses -Wno-write-strings<br />
<br />
matrix: GNU (use -lncurses to link ncurses library)<br />
g++ bconsole.cpp console.cpp cui_test.cpp -lncurses -Wno-write-strings<br />
<br />
Local PC: Visual Studio.net<br />
=== Tester Program ===<br />
*Tester program is at git://github.com/Seneca-OOP344/20132notes.git (Notes repository) in '''TesterPrograms''' directory.<br />
*repo path:<br/><br />
*:[https://github.com/Seneca-OOP344/20132notes.git 20132notes]/TesterPrograms/cui_test.cpp<br />
<br />
==How to submit==<br />
<!--For submission purposes, your solution must compile, link, and run without errors in each environment. <br />
<br />
First pull the changes of the two files bconsole.cpp and bconsole.h to version 1.02 (Feb 1, 2013) from the console directory in notes repository of your section.<br />
<br />
Test your program with cio_test.cpp from the same console directory stated above. When your program passed all the tests; on matrix, create a directory and copy all the source files (console.cpp, console.h, bconsole.cpp, bconsole.h) into it. Then copy cio_test.o '<big>''''V 0.94.1'''''</big> from "~fardad.soleimanloo" and then compile your code with your professors version of cio_test (i.e cio_test.o) and run it. If all the tests are passed successfully, an email will be sent to your professor automatically with your source code (console.h and console.cpp) attached to it.<br />
<br />
to copy the cio_test.o do the following.<br /><br />
From the directory containing all source files:<br />
$cp ~fardad.soleimanloo/cio_test.o .<br />
to compile the code:<br />
$g++ bconsole.cpp console.cpp cio_test.o -lncurses<br />
This should not generate any warnings.<br /><br />
To run the test (with automatic submission)<br />
$ a.out your_student_number Your Full Name as on Student Card <ENTER><br />
Example:<br />
$ a.out 012345678 Home Jay Simpson <ENTER> --><br />
== Tasks Distribution Suggestion==<br />
=== Team of 3 ===<br />
* Programmer 1<br />
*# Tab<br />
*# Character Entry<br />
*## Overstrike <br />
*## Insert Mode<br />
* Programmer 2<br />
*# Intial Corrections <br />
*# Home<br />
*# End<br />
*# Escape<br />
*# Right<br />
*# Left<br />
*# Enter<br />
* Programmer 3<br />
*# BackSpace<br />
*# Del<br />
*# InTextEditor and ReadOnly<br />
*# Function keys<br />
*# operator>> int&<br />
*# operator<< char<br />
*# operator<< char*<br />
*# Insert<br />
<br />
=== Team of 4 ===<br />
* Programmer 1<br />
*# Character Entry<br />
*## Overstrike<br />
*## Insert Mode<br />
*# End<br />
*# Enter<br />
* Programmer 2<br />
*# Tab<br />
*# Home<br />
*# operator>> int& <br />
*# operator<< char <br />
*# operator<< char* <br />
* Programmer 3<br />
*# BackSpace<br />
*# Right<br />
*# Del<br />
*# Function keys<br />
* Programmer 4<br />
*# Intial Corrections<br />
*# IsTextEditor and ReadOnly <br />
*# Escape<br />
*# Left<br />
*# Insert<br />
<br />
<br />
<!--<br />
Tab: 23<br />
Function keys: 1<br />
Overstrike: 15<br />
operator>> int& 3<br />
operator<< char 3<br />
operator<< char* 4<br />
Insert: 1<br />
<br />
<br />
Intial Corrections: 18 <br />
Home: 4<br />
End: 7<br />
Escape: 5<br />
Right: 10<br />
Left: 4<br />
Enter: 1<br />
<br />
BackSpace: 23<br />
Del: 3<br />
Insert Mode: 14<br />
IsTextEditor and ReadOnly 10<br />
<br />
--></div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Project_R0.1_20132-_OOP344&diff=96877Project R0.1 20132- OOP3442013-06-18T04:15:16Z<p>Brad Stuart: /* Help Needed */</p>
<hr />
<div>{{OOP344 Index | 20131}}<br />
<br />
=Release=<br />
* 0.1<br />
=Notes=<br />
* Using Matrix, from windows: please use [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe putty] only and set the keyboard to <br />
*: Backspace = Ctrl-?<br />
*: Home and End = Standard<br />
*: Function keys and keypad = Linux<br />
*: And then:<br />
*: Connection > Data > Terminal-type string = linux (This step must be done when first connecting through putty!)<br />
*:: Or if you have already connected, type in (export TERM="linux") without brackets<br />
**: If you're still having problems do all of that AND (export TERM="linux") and it will allow you to use END and HOME, though the F keys still won't work.<br />
* [https://cs.senecac.on.ca/~chris.szalwinski/resources/borland.html Guide for Using Borland 5.5]<br />
*: Note that to change the cmd.exe window size, right click on the top bar -> Properties -> Layout Tab<br />
<br />
=Due Dates=<br />
Monday June 17th.<br />
<br />
=Help=<br />
==Help Needed==<br />
* <strike>Bug(?): The insert mode in our assignment works as it is supposed to but fails the test when running the test program. Has anyone else encountered this problem, or is this an error on my side?</strike><br />
<br />
I had the same problem. Try to replace the original code '''Console::_insertMode''' by just '''insertMode'''. It works for me. Otherwise it is local I guess. So it works within your application but does not react to parameter passed to the function.<br />
<br />
Thank you. I actually solved it by making insertMode=Console::_insertMode.<br />
<br />
* Just noticed that the return string for the 4-6 test is wrong. It checks to see if you've inserted 'ab' into the string, and not 'abc' like the dialog box asks for. If you insert only 'ab' the test passes as it should.<br />
<br />
* In test 4.9 (END button), the test gives the string which stays in the middle of the field, is that OK?! I see that kind of a weird situation. In that case it fails the END button test, because values for curPosition & strOffset are not right. Ideas?<br />
<br />
You want to set the curPosition=size-*strOffset. This will mean that it scrolls down the string to the end if the length of the string is longer than the field, but only move to the end of the string if it isn't, which allows for having the string stay in the middle of the field as in the test. When you do this, though, don't forget that you need to make sure that, when the curPosition goes outside the field, the curPosition and offset are changed accordingly.<br />
<br />
* Anyone know where/how to submit when it's complete?<br />
<br />
If I'm not mistaking the test program should submit it in the end of the testing automatically.<br />
<br />
No, once you reach the end it says "Wait for the final tester to submit the assignment". Unless there's another program around that I'm not aware of.<br />
<br />
==Blog Posts==<br />
<br />
=Learning Outcome=<br />
Upon successful completion of this first assignment, you will have demonstrated the abilities to design and code<br />
* functions that use the basic console input and output library<br />
* a line editor<br />
* use of extern<br />
* operator overload<br />
* use of namespaces<br />
=Console Line Editing Facility =<br />
As your first assignment, you are to upgrade the basic console input output class (BConsole) to include line-display and line-editing facilities and use of "<<" and ">>" operators for character I/O and string output. <br />
<br />
==Specifications==<br />
<br />
Your submission consists of a class called Console that is to be inherited from BConsole in a namespace called '''cui'''. Your application module is fully portable across Borland C++5.5 on windows, Linux GNU C++, Viusual C++ on Windows and Mac C++ platforms which accepts console input, and provides console output through the set of facilities available in your Console module. <br />
<br />
The name of the library object to be created is console. The header file for the original version of this module is console.h and the implementation file for the original version is console.cpp. All of the identifiers for the library module and all upgrades to the module are defined in the cui namespace (short for console input output).<br />
<br />
Your upgrade in this assignment consists of creating a class called Console, inherited from BConsole, implemented in two files; console.h and console.cpp:<br />
<br />
In addition to all public methods of BConsole, Console must have the following two public methods and overload "<<" and ">>" operators.<br />
===external links===<br />
* instantiate Console, in an object called "console" in cui namespace and create an external linkage to in console.h<br />
===strdsp() method===<br />
void display(const char* str, int row, int col, int fieldLen=0, int curpos = -1); <br />
<br />
This method outputs the C-style, null-terminated string pointed to by str starting at row "row" and column "col" of the screen in a field of fieldLen characters(Row value 0 refers to the top row, and column value 0 refers to the left-most column) and positions the cursor at "curpos" location relative to "col", only if it is greater or equal to zero.<br />
<br />
If the string is longer than fieldLen, your function displays the first fieldLen characters. If the string is shorter than fieldLen, your function displays the entire string, followed by enough trailing spaces to fill out the field completely. <br />
<br />
If fieldLen is 0, your function displays the entire string with no trailing spaces.<br />
<br />
Your function positions the cursor after the last character displayed if curpos is less than zero otherwise it positions the cursor at "curpos" location relative to "col". The results are undefined if the starting position of the string is not within the dimensions of the screen.<br />
<br />
===lineedit() method===<br />
<br />
<big><pre><br />
int lineedit(char *str, int row, int col, int fieldLength, int maxStrLength, <br />
int* strOffset=_stroff, int* curPosition=_curpos, <br />
bool InTextEditor = false, bool ReadOnly = false, bool& insertMode=_insertMode );<br />
</pre></big><br />
<br />
This method is to be written in two steps. <br />
====Step one==== <br />
''Ignore the two arguments '''(InTextEditor and ReadOnly)''' for now write the method as follows:''<br />
<br />
This method edits the C-style, null-terminated string pointed by str. The parameter row holds the row (0 is the top row) of the string on the screen. The parameter col holds the starting column (0 is the left-most column) on the screen. The parameter fieldLength holds the length of the editable field. The string may be larger than the field itself, in which case part of the string is hidden from view. The parameter maxStrLength holds the maximum length of the string, excluding the null byte. The parameter insertMode points to a bool variable that holds the current insert mode of the string. The parameter insertMode receives the address of a variable that stores the current editing mode - insert or overwrite. The parameter strOffset points to an int variable that holds the initial offset of the string within the field; that is, the index of the character in the string that initially occupies the first character position in the field. The parameter curPosition points to an int variable that holds the initial cursor position within the field; that is, the index of the character in the field at which the cursor is initially placed. <br />
* '''''Initial Corrections'''''<br />
*:If the initial offset is beyond the end of the string, your function resets the offset to the length of the string; that is, to the index of the character immediately beyond the end of the string. If no offset variable is pointed to; that is, if the address of the variable is NULL, your function sets the offset to the index of the first character in the string; that is, to 0. (to do this have a local variable for the offset that holds zero to be pointed instead of an external variable)<br />
*:If the initial cursor position is beyond the end of the field, your function resets the position to the last character in the field. If the position is beyond the end of the string, your function resets the position to that immediately beyond the end of the string. If no cursor position variable is pointed to; that is, if the address of the variable is NULL, your function sets the cursor position to the first position in the field; that is, to position 0.(like the offset, to do this have a local variable for the cursor position that holds zero to be pointed instead of an external variable)<br />
<br />
Your function does not allow the cursor to move before the start of the field or past the end of the field. If the field ends at the right edge of the screen, your function does not allow the cursor to the right of that edge.<br />
<br />
Your function uses the symbolic names for non-ASCII and special keys defined in the keys.h header file. These names are the same symbolic names as those used in the original library module.<br />
<br />
The user terminates editing by pressing ENTER, ESCAPE, TAB, UP, DOWN, PGUP, PGDN or any of the function keys F(1) through F(12) inclusive. If the user presses ESCAPE, your function aborts editing, replaces the contents of the string with the original contents upon entry into your function, and leaves the offset and cursor position values unaltered. In order to be able to revert to the original string, your function needs to allocate memory at run time. <br />
<br />
At termination, your function passes back through the same int variables the current values of the offset and the cursor position, unless no variables were pointed to upon entry into your function; that is, unless the value of either address was NULL.<br />
<br />
Your function returns an int identifying the key that the user pressed to exit the function. <br />
<br />
Your function takes no action (other than perhaps beeping) if the user tries to enter too many characters (if, for example, the string is full in insert mode, or the cursor is positioned after the last character of a full string in overstrike mode).<br />
<br />
Your function handles the non-ASCII keys as follows<br />
<br />
*LEFT - moves the cursor left one character, if possible, changing the offset, if necessary.<br />
*RIGHT - moves the cursor right one character, if possible, changing the offset, if necessary.<br />
*HOME - moves the cursor to the beginning of the string, changing the offset, if necessary.<br />
*END - moves the cursor to the position to the right of the last character in the string, changing the offset, if necessary. <strike> If the last character is at the edge of the screen, moves the cursor to that character.</strike><br />
*INSERT - toggles Insert/Overstrike mode. In Insert mode, your function inserts a printable character into the string at the current cursor position, moves the remainder of the string to the right to make room for the inserted character, and positions the cursor just to the right of the inserted character. The printable characters are the characters from space (' ') to tilde ('~') inclusive in the ASCII table. In Overstrike mode, your function overwrites the character (if any) at the current cursor position with a printable character and advances the cursor just to the right of the new character. If the cursor is past the end of the string, your function appends a printable character to the string as long as the string isn't full, regardless of the mode. <br />
*DEL - discards the character at the current cursor position and moves all characters to the right of the cursor position one position to the left.<br />
*BACKSPACE - discards the character to the left of the current cursor position, if possible, moves the characters at and to the right of the cursor position one position to the left, if possible, and positions the cursor one character to the left, if possible.<br />
<br />
edit() always displays blanks in any part of the field that is not occupied by the string. UNDER NO CIRCUMSTANCES DOES YOUR FUNCTION CHANGE ANY POSITION ON THE SCREEN OUTSIDE THE FIELD. For example, your function does not display status information (such as "INS" or "OVR") elsewhere on the screen, since such displays limit the programmer's ability to design their own screen layouts.<br />
<br />
You may assume that it is the calling program's responsibility to ensure that the string array is large enough to handle maxStrLength characters and that the starting screen position provides enough room (on the screen) for the field, etc.<br />
<br />
{| class="wikitable" border="0"<br />
|+ <br />
! Edit Method!! Interface<br />
|-<br />
| [[File:editString.png|500px|thumb|center|Edit Method Function Diagram]] || <br />
[[File:interface.png|400px|thumb|center|Interface Diagram]]<br />
|}<br />
<br />
====Step two====<br />
''First run your program with cui_test.cpp and make sure it passes all the tests up to and including "4.16". If all tests are passed continue with step two:<br />
<br />
=====InTextEditor=====<br />
If '''InTextEditor''' is true and the value of '''*strOffset''' is changed at any time, then terminate the edit function immediately and return '''0''';<br />
======TAB key======<br />
If '''InTextEditor''' is true and TAB key is hit, then instead of terminating the function, ''Console::_tabsize'' spaces are inserted into ''str''.<br />
<br />
=====ReadOnly=====<br />
If '''ReadOnly''' is true, then edit function works exactly like before, except that any modification to the data (the content of the '''str''' string) will be ignored.<br />
<br />
===Overload "<<" and ">>" operators===<br />
==== operator>> ====<br />
Console& operator>>(Console& cn, int& ch);<br />
Get a key from keyboard using ''cn'' and store it in ''ch'';<br />
==== operator<< ====<br />
Console& operator<<(Console& cn, char ch);<br />
Print the character ''ch'' on the screen, where the cursor is located, using cn and return the cn reference;<br />
Console& operator<<(Console& cn, const char* str);<br />
print the string '''str''' on the screen where the cursor is using '''cn''' and return the cn reference<br />
<br />
<br />
=Submission=<br />
==Common Submission mistakes==<br />
<!--* Submitting the assignment with old version of cui_text.o<br />
*: ''Make sure you copy the latest version (currently 0.94.1) from my account : $cp ~fardad.soleimanloo/cio_test.o<br />
* Using tab character''<br />
*: ''As mentioned in class using tab character in your text editor makes the indentation of your code different in different editors, please make sure before submission you go to the settings of your development environment and make sure it uses spaces instead of tab character.'' --><br />
==Tester Demo==<br />
<!--To see how tester runs, you can run on Matrix (only use putty with the setting stated at [[#Notes|Notes]]) run:<br />
<big><pre><br />
$ ~fardad.soleimanloo/cui_test<br />
</pre></big> --><br />
<br />
==How to Compile==<br />
Compile and test your code with the test-main, in the following command-line environments and visual studio.<br />
<br />
Local PC: Borland 5.5 <br />
bcc32 bconsole.cpp console.cpp cui_test.cpp<br />
<br />
Local Mac: (use -lcurses to link curses library)<br />
c++ bconsole.cpp console.cpp cui_test.cpp -lcurses -Wno-write-strings<br />
<br />
matrix: GNU (use -lncurses to link ncurses library)<br />
g++ bconsole.cpp console.cpp cui_test.cpp -lncurses -Wno-write-strings<br />
<br />
Local PC: Visual Studio.net<br />
=== Tester Program ===<br />
*Tester program is at git://github.com/Seneca-OOP344/20132notes.git (Notes repository) in '''TesterPrograms''' directory.<br />
*repo path:<br/><br />
*:[https://github.com/Seneca-OOP344/20132notes.git 20132notes]/TesterPrograms/cui_test.cpp<br />
<br />
==How to submit==<br />
<!--For submission purposes, your solution must compile, link, and run without errors in each environment. <br />
<br />
First pull the changes of the two files bconsole.cpp and bconsole.h to version 1.02 (Feb 1, 2013) from the console directory in notes repository of your section.<br />
<br />
Test your program with cio_test.cpp from the same console directory stated above. When your program passed all the tests; on matrix, create a directory and copy all the source files (console.cpp, console.h, bconsole.cpp, bconsole.h) into it. Then copy cio_test.o '<big>''''V 0.94.1'''''</big> from "~fardad.soleimanloo" and then compile your code with your professors version of cio_test (i.e cio_test.o) and run it. If all the tests are passed successfully, an email will be sent to your professor automatically with your source code (console.h and console.cpp) attached to it.<br />
<br />
to copy the cio_test.o do the following.<br /><br />
From the directory containing all source files:<br />
$cp ~fardad.soleimanloo/cio_test.o .<br />
to compile the code:<br />
$g++ bconsole.cpp console.cpp cio_test.o -lncurses<br />
This should not generate any warnings.<br /><br />
To run the test (with automatic submission)<br />
$ a.out your_student_number Your Full Name as on Student Card <ENTER><br />
Example:<br />
$ a.out 012345678 Home Jay Simpson <ENTER> --><br />
== Tasks Distribution Suggestion==<br />
=== Team of 3 ===<br />
* Programmer 1<br />
*# Tab<br />
*# Character Entry<br />
*## Overstrike <br />
*## Insert Mode<br />
* Programmer 2<br />
*# Intial Corrections <br />
*# Home<br />
*# End<br />
*# Escape<br />
*# Right<br />
*# Left<br />
*# Enter<br />
* Programmer 3<br />
*# BackSpace<br />
*# Del<br />
*# InTextEditor and ReadOnly<br />
*# Function keys<br />
*# operator>> int&<br />
*# operator<< char<br />
*# operator<< char*<br />
*# Insert<br />
<br />
=== Team of 4 ===<br />
* Programmer 1<br />
*# Character Entry<br />
*## Overstrike<br />
*## Insert Mode<br />
*# End<br />
*# Enter<br />
* Programmer 2<br />
*# Tab<br />
*# Home<br />
*# operator>> int& <br />
*# operator<< char <br />
*# operator<< char* <br />
* Programmer 3<br />
*# BackSpace<br />
*# Right<br />
*# Del<br />
*# Function keys<br />
* Programmer 4<br />
*# Intial Corrections<br />
*# IsTextEditor and ReadOnly <br />
*# Escape<br />
*# Left<br />
*# Insert<br />
<br />
<br />
<!--<br />
Tab: 23<br />
Function keys: 1<br />
Overstrike: 15<br />
operator>> int& 3<br />
operator<< char 3<br />
operator<< char* 4<br />
Insert: 1<br />
<br />
<br />
Intial Corrections: 18 <br />
Home: 4<br />
End: 7<br />
Escape: 5<br />
Right: 10<br />
Left: 4<br />
Enter: 1<br />
<br />
BackSpace: 23<br />
Del: 3<br />
Insert Mode: 14<br />
IsTextEditor and ReadOnly 10<br />
<br />
--></div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Project_R0.1_20132-_OOP344&diff=96876Project R0.1 20132- OOP3442013-06-18T04:07:59Z<p>Brad Stuart: /* Notes */</p>
<hr />
<div>{{OOP344 Index | 20131}}<br />
<br />
=Release=<br />
* 0.1<br />
=Notes=<br />
* Using Matrix, from windows: please use [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe putty] only and set the keyboard to <br />
*: Backspace = Ctrl-?<br />
*: Home and End = Standard<br />
*: Function keys and keypad = Linux<br />
*: And then:<br />
*: Connection > Data > Terminal-type string = linux (This step must be done when first connecting through putty!)<br />
*:: Or if you have already connected, type in (export TERM="linux") without brackets<br />
**: If you're still having problems do all of that AND (export TERM="linux") and it will allow you to use END and HOME, though the F keys still won't work.<br />
* [https://cs.senecac.on.ca/~chris.szalwinski/resources/borland.html Guide for Using Borland 5.5]<br />
*: Note that to change the cmd.exe window size, right click on the top bar -> Properties -> Layout Tab<br />
<br />
=Due Dates=<br />
Monday June 17th.<br />
<br />
=Help=<br />
==Help Needed==<br />
* <strike>Bug(?): The insert mode in our assignment works as it is supposed to but fails the test when running the test program. Has anyone else encountered this problem, or is this an error on my side?</strike><br />
<br />
I had the same problem. Try to replace the original code '''Console::_insertMode''' by just '''insertMode'''. It works for me. Otherwise it is local I guess. So it works within your application but does not react to parameter passed to the function.<br />
<br />
Thank you. I actually solved it by making insertMode=Console::_insertMode.<br />
<br />
* Just noticed that the return string for the 4-6 test is wrong. It checks to see if you've inserted 'ab' into the string, and not 'abc' like the dialog box asks for. If you insert only 'ab' the test passes as it should.<br />
<br />
* In test 4.9 (END button), the test gives the string which stays in the middle of the field, is that OK?! I see that kind of a weird situation. In that case it fails the END button test, because values for curPosition & strOffset are not right. Ideas?<br />
<br />
You want to set the curPosition=size-*strOffset. This will mean that it scrolls down the string to the end if the length of the string is longer than the field, but only move to the end of the string if it isn't, which allows for having the string stay in the middle of the field as in the test. When you do this, though, don't forget that you need to make sure that, when the curPosition goes outside the field, the curPosition and offset are changed accordingly.<br />
<br />
* Anyone know where/how to submit when it's complete?<br />
<br />
If I'm not mistaking the test program should submit it in the end of the testing automatically.<br />
No, once you reach the end it says "Wait for the final tester to submit the assignment". Unless there's another program around that I'm not aware of.<br />
<br />
==Blog Posts==<br />
<br />
=Learning Outcome=<br />
Upon successful completion of this first assignment, you will have demonstrated the abilities to design and code<br />
* functions that use the basic console input and output library<br />
* a line editor<br />
* use of extern<br />
* operator overload<br />
* use of namespaces<br />
=Console Line Editing Facility =<br />
As your first assignment, you are to upgrade the basic console input output class (BConsole) to include line-display and line-editing facilities and use of "<<" and ">>" operators for character I/O and string output. <br />
<br />
==Specifications==<br />
<br />
Your submission consists of a class called Console that is to be inherited from BConsole in a namespace called '''cui'''. Your application module is fully portable across Borland C++5.5 on windows, Linux GNU C++, Viusual C++ on Windows and Mac C++ platforms which accepts console input, and provides console output through the set of facilities available in your Console module. <br />
<br />
The name of the library object to be created is console. The header file for the original version of this module is console.h and the implementation file for the original version is console.cpp. All of the identifiers for the library module and all upgrades to the module are defined in the cui namespace (short for console input output).<br />
<br />
Your upgrade in this assignment consists of creating a class called Console, inherited from BConsole, implemented in two files; console.h and console.cpp:<br />
<br />
In addition to all public methods of BConsole, Console must have the following two public methods and overload "<<" and ">>" operators.<br />
===external links===<br />
* instantiate Console, in an object called "console" in cui namespace and create an external linkage to in console.h<br />
===strdsp() method===<br />
void display(const char* str, int row, int col, int fieldLen=0, int curpos = -1); <br />
<br />
This method outputs the C-style, null-terminated string pointed to by str starting at row "row" and column "col" of the screen in a field of fieldLen characters(Row value 0 refers to the top row, and column value 0 refers to the left-most column) and positions the cursor at "curpos" location relative to "col", only if it is greater or equal to zero.<br />
<br />
If the string is longer than fieldLen, your function displays the first fieldLen characters. If the string is shorter than fieldLen, your function displays the entire string, followed by enough trailing spaces to fill out the field completely. <br />
<br />
If fieldLen is 0, your function displays the entire string with no trailing spaces.<br />
<br />
Your function positions the cursor after the last character displayed if curpos is less than zero otherwise it positions the cursor at "curpos" location relative to "col". The results are undefined if the starting position of the string is not within the dimensions of the screen.<br />
<br />
===lineedit() method===<br />
<br />
<big><pre><br />
int lineedit(char *str, int row, int col, int fieldLength, int maxStrLength, <br />
int* strOffset=_stroff, int* curPosition=_curpos, <br />
bool InTextEditor = false, bool ReadOnly = false, bool& insertMode=_insertMode );<br />
</pre></big><br />
<br />
This method is to be written in two steps. <br />
====Step one==== <br />
''Ignore the two arguments '''(InTextEditor and ReadOnly)''' for now write the method as follows:''<br />
<br />
This method edits the C-style, null-terminated string pointed by str. The parameter row holds the row (0 is the top row) of the string on the screen. The parameter col holds the starting column (0 is the left-most column) on the screen. The parameter fieldLength holds the length of the editable field. The string may be larger than the field itself, in which case part of the string is hidden from view. The parameter maxStrLength holds the maximum length of the string, excluding the null byte. The parameter insertMode points to a bool variable that holds the current insert mode of the string. The parameter insertMode receives the address of a variable that stores the current editing mode - insert or overwrite. The parameter strOffset points to an int variable that holds the initial offset of the string within the field; that is, the index of the character in the string that initially occupies the first character position in the field. The parameter curPosition points to an int variable that holds the initial cursor position within the field; that is, the index of the character in the field at which the cursor is initially placed. <br />
* '''''Initial Corrections'''''<br />
*:If the initial offset is beyond the end of the string, your function resets the offset to the length of the string; that is, to the index of the character immediately beyond the end of the string. If no offset variable is pointed to; that is, if the address of the variable is NULL, your function sets the offset to the index of the first character in the string; that is, to 0. (to do this have a local variable for the offset that holds zero to be pointed instead of an external variable)<br />
*:If the initial cursor position is beyond the end of the field, your function resets the position to the last character in the field. If the position is beyond the end of the string, your function resets the position to that immediately beyond the end of the string. If no cursor position variable is pointed to; that is, if the address of the variable is NULL, your function sets the cursor position to the first position in the field; that is, to position 0.(like the offset, to do this have a local variable for the cursor position that holds zero to be pointed instead of an external variable)<br />
<br />
Your function does not allow the cursor to move before the start of the field or past the end of the field. If the field ends at the right edge of the screen, your function does not allow the cursor to the right of that edge.<br />
<br />
Your function uses the symbolic names for non-ASCII and special keys defined in the keys.h header file. These names are the same symbolic names as those used in the original library module.<br />
<br />
The user terminates editing by pressing ENTER, ESCAPE, TAB, UP, DOWN, PGUP, PGDN or any of the function keys F(1) through F(12) inclusive. If the user presses ESCAPE, your function aborts editing, replaces the contents of the string with the original contents upon entry into your function, and leaves the offset and cursor position values unaltered. In order to be able to revert to the original string, your function needs to allocate memory at run time. <br />
<br />
At termination, your function passes back through the same int variables the current values of the offset and the cursor position, unless no variables were pointed to upon entry into your function; that is, unless the value of either address was NULL.<br />
<br />
Your function returns an int identifying the key that the user pressed to exit the function. <br />
<br />
Your function takes no action (other than perhaps beeping) if the user tries to enter too many characters (if, for example, the string is full in insert mode, or the cursor is positioned after the last character of a full string in overstrike mode).<br />
<br />
Your function handles the non-ASCII keys as follows<br />
<br />
*LEFT - moves the cursor left one character, if possible, changing the offset, if necessary.<br />
*RIGHT - moves the cursor right one character, if possible, changing the offset, if necessary.<br />
*HOME - moves the cursor to the beginning of the string, changing the offset, if necessary.<br />
*END - moves the cursor to the position to the right of the last character in the string, changing the offset, if necessary. <strike> If the last character is at the edge of the screen, moves the cursor to that character.</strike><br />
*INSERT - toggles Insert/Overstrike mode. In Insert mode, your function inserts a printable character into the string at the current cursor position, moves the remainder of the string to the right to make room for the inserted character, and positions the cursor just to the right of the inserted character. The printable characters are the characters from space (' ') to tilde ('~') inclusive in the ASCII table. In Overstrike mode, your function overwrites the character (if any) at the current cursor position with a printable character and advances the cursor just to the right of the new character. If the cursor is past the end of the string, your function appends a printable character to the string as long as the string isn't full, regardless of the mode. <br />
*DEL - discards the character at the current cursor position and moves all characters to the right of the cursor position one position to the left.<br />
*BACKSPACE - discards the character to the left of the current cursor position, if possible, moves the characters at and to the right of the cursor position one position to the left, if possible, and positions the cursor one character to the left, if possible.<br />
<br />
edit() always displays blanks in any part of the field that is not occupied by the string. UNDER NO CIRCUMSTANCES DOES YOUR FUNCTION CHANGE ANY POSITION ON THE SCREEN OUTSIDE THE FIELD. For example, your function does not display status information (such as "INS" or "OVR") elsewhere on the screen, since such displays limit the programmer's ability to design their own screen layouts.<br />
<br />
You may assume that it is the calling program's responsibility to ensure that the string array is large enough to handle maxStrLength characters and that the starting screen position provides enough room (on the screen) for the field, etc.<br />
<br />
{| class="wikitable" border="0"<br />
|+ <br />
! Edit Method!! Interface<br />
|-<br />
| [[File:editString.png|500px|thumb|center|Edit Method Function Diagram]] || <br />
[[File:interface.png|400px|thumb|center|Interface Diagram]]<br />
|}<br />
<br />
====Step two====<br />
''First run your program with cui_test.cpp and make sure it passes all the tests up to and including "4.16". If all tests are passed continue with step two:<br />
<br />
=====InTextEditor=====<br />
If '''InTextEditor''' is true and the value of '''*strOffset''' is changed at any time, then terminate the edit function immediately and return '''0''';<br />
======TAB key======<br />
If '''InTextEditor''' is true and TAB key is hit, then instead of terminating the function, ''Console::_tabsize'' spaces are inserted into ''str''.<br />
<br />
=====ReadOnly=====<br />
If '''ReadOnly''' is true, then edit function works exactly like before, except that any modification to the data (the content of the '''str''' string) will be ignored.<br />
<br />
===Overload "<<" and ">>" operators===<br />
==== operator>> ====<br />
Console& operator>>(Console& cn, int& ch);<br />
Get a key from keyboard using ''cn'' and store it in ''ch'';<br />
==== operator<< ====<br />
Console& operator<<(Console& cn, char ch);<br />
Print the character ''ch'' on the screen, where the cursor is located, using cn and return the cn reference;<br />
Console& operator<<(Console& cn, const char* str);<br />
print the string '''str''' on the screen where the cursor is using '''cn''' and return the cn reference<br />
<br />
<br />
=Submission=<br />
==Common Submission mistakes==<br />
<!--* Submitting the assignment with old version of cui_text.o<br />
*: ''Make sure you copy the latest version (currently 0.94.1) from my account : $cp ~fardad.soleimanloo/cio_test.o<br />
* Using tab character''<br />
*: ''As mentioned in class using tab character in your text editor makes the indentation of your code different in different editors, please make sure before submission you go to the settings of your development environment and make sure it uses spaces instead of tab character.'' --><br />
==Tester Demo==<br />
<!--To see how tester runs, you can run on Matrix (only use putty with the setting stated at [[#Notes|Notes]]) run:<br />
<big><pre><br />
$ ~fardad.soleimanloo/cui_test<br />
</pre></big> --><br />
<br />
==How to Compile==<br />
Compile and test your code with the test-main, in the following command-line environments and visual studio.<br />
<br />
Local PC: Borland 5.5 <br />
bcc32 bconsole.cpp console.cpp cui_test.cpp<br />
<br />
Local Mac: (use -lcurses to link curses library)<br />
c++ bconsole.cpp console.cpp cui_test.cpp -lcurses -Wno-write-strings<br />
<br />
matrix: GNU (use -lncurses to link ncurses library)<br />
g++ bconsole.cpp console.cpp cui_test.cpp -lncurses -Wno-write-strings<br />
<br />
Local PC: Visual Studio.net<br />
=== Tester Program ===<br />
*Tester program is at git://github.com/Seneca-OOP344/20132notes.git (Notes repository) in '''TesterPrograms''' directory.<br />
*repo path:<br/><br />
*:[https://github.com/Seneca-OOP344/20132notes.git 20132notes]/TesterPrograms/cui_test.cpp<br />
<br />
==How to submit==<br />
<!--For submission purposes, your solution must compile, link, and run without errors in each environment. <br />
<br />
First pull the changes of the two files bconsole.cpp and bconsole.h to version 1.02 (Feb 1, 2013) from the console directory in notes repository of your section.<br />
<br />
Test your program with cio_test.cpp from the same console directory stated above. When your program passed all the tests; on matrix, create a directory and copy all the source files (console.cpp, console.h, bconsole.cpp, bconsole.h) into it. Then copy cio_test.o '<big>''''V 0.94.1'''''</big> from "~fardad.soleimanloo" and then compile your code with your professors version of cio_test (i.e cio_test.o) and run it. If all the tests are passed successfully, an email will be sent to your professor automatically with your source code (console.h and console.cpp) attached to it.<br />
<br />
to copy the cio_test.o do the following.<br /><br />
From the directory containing all source files:<br />
$cp ~fardad.soleimanloo/cio_test.o .<br />
to compile the code:<br />
$g++ bconsole.cpp console.cpp cio_test.o -lncurses<br />
This should not generate any warnings.<br /><br />
To run the test (with automatic submission)<br />
$ a.out your_student_number Your Full Name as on Student Card <ENTER><br />
Example:<br />
$ a.out 012345678 Home Jay Simpson <ENTER> --><br />
== Tasks Distribution Suggestion==<br />
=== Team of 3 ===<br />
* Programmer 1<br />
*# Tab<br />
*# Character Entry<br />
*## Overstrike <br />
*## Insert Mode<br />
* Programmer 2<br />
*# Intial Corrections <br />
*# Home<br />
*# End<br />
*# Escape<br />
*# Right<br />
*# Left<br />
*# Enter<br />
* Programmer 3<br />
*# BackSpace<br />
*# Del<br />
*# InTextEditor and ReadOnly<br />
*# Function keys<br />
*# operator>> int&<br />
*# operator<< char<br />
*# operator<< char*<br />
*# Insert<br />
<br />
=== Team of 4 ===<br />
* Programmer 1<br />
*# Character Entry<br />
*## Overstrike<br />
*## Insert Mode<br />
*# End<br />
*# Enter<br />
* Programmer 2<br />
*# Tab<br />
*# Home<br />
*# operator>> int& <br />
*# operator<< char <br />
*# operator<< char* <br />
* Programmer 3<br />
*# BackSpace<br />
*# Right<br />
*# Del<br />
*# Function keys<br />
* Programmer 4<br />
*# Intial Corrections<br />
*# IsTextEditor and ReadOnly <br />
*# Escape<br />
*# Left<br />
*# Insert<br />
<br />
<br />
<!--<br />
Tab: 23<br />
Function keys: 1<br />
Overstrike: 15<br />
operator>> int& 3<br />
operator<< char 3<br />
operator<< char* 4<br />
Insert: 1<br />
<br />
<br />
Intial Corrections: 18 <br />
Home: 4<br />
End: 7<br />
Escape: 5<br />
Right: 10<br />
Left: 4<br />
Enter: 1<br />
<br />
BackSpace: 23<br />
Del: 3<br />
Insert Mode: 14<br />
IsTextEditor and ReadOnly 10<br />
<br />
--></div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Project_R0.1_20132-_OOP344&diff=96875Project R0.1 20132- OOP3442013-06-18T04:06:14Z<p>Brad Stuart: /* Help Needed */</p>
<hr />
<div>{{OOP344 Index | 20131}}<br />
<br />
=Release=<br />
* 0.1<br />
=Notes=<br />
* Using Matrix, from windows: please use [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe putty] only and set the keyboard to <br />
*: Backspace = Ctrl-?<br />
*: Home and End = Standard<br />
*: Function keys and keypad = Linux<br />
*: And then:<br />
*: Connection > Data > Terminal-type string = linux (This step must be done when first connecting through putty!)<br />
** This is NOT allowing HOME/END keys to function, and the test cannot be complete without those keys working.<br />
*:: Or if you have already connected, type in (export TERM="linux") without brackets<br />
* [https://cs.senecac.on.ca/~chris.szalwinski/resources/borland.html Guide for Using Borland 5.5]<br />
*: Note that to change the cmd.exe window size, right click on the top bar -> Properties -> Layout Tab<br />
<br />
=Due Dates=<br />
Monday June 17th.<br />
<br />
=Help=<br />
==Help Needed==<br />
* <strike>Bug(?): The insert mode in our assignment works as it is supposed to but fails the test when running the test program. Has anyone else encountered this problem, or is this an error on my side?</strike><br />
<br />
I had the same problem. Try to replace the original code '''Console::_insertMode''' by just '''insertMode'''. It works for me. Otherwise it is local I guess. So it works within your application but does not react to parameter passed to the function.<br />
<br />
Thank you. I actually solved it by making insertMode=Console::_insertMode.<br />
<br />
* Just noticed that the return string for the 4-6 test is wrong. It checks to see if you've inserted 'ab' into the string, and not 'abc' like the dialog box asks for. If you insert only 'ab' the test passes as it should.<br />
<br />
* In test 4.9 (END button), the test gives the string which stays in the middle of the field, is that OK?! I see that kind of a weird situation. In that case it fails the END button test, because values for curPosition & strOffset are not right. Ideas?<br />
<br />
You want to set the curPosition=size-*strOffset. This will mean that it scrolls down the string to the end if the length of the string is longer than the field, but only move to the end of the string if it isn't, which allows for having the string stay in the middle of the field as in the test. When you do this, though, don't forget that you need to make sure that, when the curPosition goes outside the field, the curPosition and offset are changed accordingly.<br />
<br />
* Anyone know where/how to submit when it's complete?<br />
<br />
If I'm not mistaking the test program should submit it in the end of the testing automatically.<br />
No, once you reach the end it says "Wait for the final tester to submit the assignment". Unless there's another program around that I'm not aware of.<br />
<br />
==Blog Posts==<br />
<br />
=Learning Outcome=<br />
Upon successful completion of this first assignment, you will have demonstrated the abilities to design and code<br />
* functions that use the basic console input and output library<br />
* a line editor<br />
* use of extern<br />
* operator overload<br />
* use of namespaces<br />
=Console Line Editing Facility =<br />
As your first assignment, you are to upgrade the basic console input output class (BConsole) to include line-display and line-editing facilities and use of "<<" and ">>" operators for character I/O and string output. <br />
<br />
==Specifications==<br />
<br />
Your submission consists of a class called Console that is to be inherited from BConsole in a namespace called '''cui'''. Your application module is fully portable across Borland C++5.5 on windows, Linux GNU C++, Viusual C++ on Windows and Mac C++ platforms which accepts console input, and provides console output through the set of facilities available in your Console module. <br />
<br />
The name of the library object to be created is console. The header file for the original version of this module is console.h and the implementation file for the original version is console.cpp. All of the identifiers for the library module and all upgrades to the module are defined in the cui namespace (short for console input output).<br />
<br />
Your upgrade in this assignment consists of creating a class called Console, inherited from BConsole, implemented in two files; console.h and console.cpp:<br />
<br />
In addition to all public methods of BConsole, Console must have the following two public methods and overload "<<" and ">>" operators.<br />
===external links===<br />
* instantiate Console, in an object called "console" in cui namespace and create an external linkage to in console.h<br />
===strdsp() method===<br />
void display(const char* str, int row, int col, int fieldLen=0, int curpos = -1); <br />
<br />
This method outputs the C-style, null-terminated string pointed to by str starting at row "row" and column "col" of the screen in a field of fieldLen characters(Row value 0 refers to the top row, and column value 0 refers to the left-most column) and positions the cursor at "curpos" location relative to "col", only if it is greater or equal to zero.<br />
<br />
If the string is longer than fieldLen, your function displays the first fieldLen characters. If the string is shorter than fieldLen, your function displays the entire string, followed by enough trailing spaces to fill out the field completely. <br />
<br />
If fieldLen is 0, your function displays the entire string with no trailing spaces.<br />
<br />
Your function positions the cursor after the last character displayed if curpos is less than zero otherwise it positions the cursor at "curpos" location relative to "col". The results are undefined if the starting position of the string is not within the dimensions of the screen.<br />
<br />
===lineedit() method===<br />
<br />
<big><pre><br />
int lineedit(char *str, int row, int col, int fieldLength, int maxStrLength, <br />
int* strOffset=_stroff, int* curPosition=_curpos, <br />
bool InTextEditor = false, bool ReadOnly = false, bool& insertMode=_insertMode );<br />
</pre></big><br />
<br />
This method is to be written in two steps. <br />
====Step one==== <br />
''Ignore the two arguments '''(InTextEditor and ReadOnly)''' for now write the method as follows:''<br />
<br />
This method edits the C-style, null-terminated string pointed by str. The parameter row holds the row (0 is the top row) of the string on the screen. The parameter col holds the starting column (0 is the left-most column) on the screen. The parameter fieldLength holds the length of the editable field. The string may be larger than the field itself, in which case part of the string is hidden from view. The parameter maxStrLength holds the maximum length of the string, excluding the null byte. The parameter insertMode points to a bool variable that holds the current insert mode of the string. The parameter insertMode receives the address of a variable that stores the current editing mode - insert or overwrite. The parameter strOffset points to an int variable that holds the initial offset of the string within the field; that is, the index of the character in the string that initially occupies the first character position in the field. The parameter curPosition points to an int variable that holds the initial cursor position within the field; that is, the index of the character in the field at which the cursor is initially placed. <br />
* '''''Initial Corrections'''''<br />
*:If the initial offset is beyond the end of the string, your function resets the offset to the length of the string; that is, to the index of the character immediately beyond the end of the string. If no offset variable is pointed to; that is, if the address of the variable is NULL, your function sets the offset to the index of the first character in the string; that is, to 0. (to do this have a local variable for the offset that holds zero to be pointed instead of an external variable)<br />
*:If the initial cursor position is beyond the end of the field, your function resets the position to the last character in the field. If the position is beyond the end of the string, your function resets the position to that immediately beyond the end of the string. If no cursor position variable is pointed to; that is, if the address of the variable is NULL, your function sets the cursor position to the first position in the field; that is, to position 0.(like the offset, to do this have a local variable for the cursor position that holds zero to be pointed instead of an external variable)<br />
<br />
Your function does not allow the cursor to move before the start of the field or past the end of the field. If the field ends at the right edge of the screen, your function does not allow the cursor to the right of that edge.<br />
<br />
Your function uses the symbolic names for non-ASCII and special keys defined in the keys.h header file. These names are the same symbolic names as those used in the original library module.<br />
<br />
The user terminates editing by pressing ENTER, ESCAPE, TAB, UP, DOWN, PGUP, PGDN or any of the function keys F(1) through F(12) inclusive. If the user presses ESCAPE, your function aborts editing, replaces the contents of the string with the original contents upon entry into your function, and leaves the offset and cursor position values unaltered. In order to be able to revert to the original string, your function needs to allocate memory at run time. <br />
<br />
At termination, your function passes back through the same int variables the current values of the offset and the cursor position, unless no variables were pointed to upon entry into your function; that is, unless the value of either address was NULL.<br />
<br />
Your function returns an int identifying the key that the user pressed to exit the function. <br />
<br />
Your function takes no action (other than perhaps beeping) if the user tries to enter too many characters (if, for example, the string is full in insert mode, or the cursor is positioned after the last character of a full string in overstrike mode).<br />
<br />
Your function handles the non-ASCII keys as follows<br />
<br />
*LEFT - moves the cursor left one character, if possible, changing the offset, if necessary.<br />
*RIGHT - moves the cursor right one character, if possible, changing the offset, if necessary.<br />
*HOME - moves the cursor to the beginning of the string, changing the offset, if necessary.<br />
*END - moves the cursor to the position to the right of the last character in the string, changing the offset, if necessary. <strike> If the last character is at the edge of the screen, moves the cursor to that character.</strike><br />
*INSERT - toggles Insert/Overstrike mode. In Insert mode, your function inserts a printable character into the string at the current cursor position, moves the remainder of the string to the right to make room for the inserted character, and positions the cursor just to the right of the inserted character. The printable characters are the characters from space (' ') to tilde ('~') inclusive in the ASCII table. In Overstrike mode, your function overwrites the character (if any) at the current cursor position with a printable character and advances the cursor just to the right of the new character. If the cursor is past the end of the string, your function appends a printable character to the string as long as the string isn't full, regardless of the mode. <br />
*DEL - discards the character at the current cursor position and moves all characters to the right of the cursor position one position to the left.<br />
*BACKSPACE - discards the character to the left of the current cursor position, if possible, moves the characters at and to the right of the cursor position one position to the left, if possible, and positions the cursor one character to the left, if possible.<br />
<br />
edit() always displays blanks in any part of the field that is not occupied by the string. UNDER NO CIRCUMSTANCES DOES YOUR FUNCTION CHANGE ANY POSITION ON THE SCREEN OUTSIDE THE FIELD. For example, your function does not display status information (such as "INS" or "OVR") elsewhere on the screen, since such displays limit the programmer's ability to design their own screen layouts.<br />
<br />
You may assume that it is the calling program's responsibility to ensure that the string array is large enough to handle maxStrLength characters and that the starting screen position provides enough room (on the screen) for the field, etc.<br />
<br />
{| class="wikitable" border="0"<br />
|+ <br />
! Edit Method!! Interface<br />
|-<br />
| [[File:editString.png|500px|thumb|center|Edit Method Function Diagram]] || <br />
[[File:interface.png|400px|thumb|center|Interface Diagram]]<br />
|}<br />
<br />
====Step two====<br />
''First run your program with cui_test.cpp and make sure it passes all the tests up to and including "4.16". If all tests are passed continue with step two:<br />
<br />
=====InTextEditor=====<br />
If '''InTextEditor''' is true and the value of '''*strOffset''' is changed at any time, then terminate the edit function immediately and return '''0''';<br />
======TAB key======<br />
If '''InTextEditor''' is true and TAB key is hit, then instead of terminating the function, ''Console::_tabsize'' spaces are inserted into ''str''.<br />
<br />
=====ReadOnly=====<br />
If '''ReadOnly''' is true, then edit function works exactly like before, except that any modification to the data (the content of the '''str''' string) will be ignored.<br />
<br />
===Overload "<<" and ">>" operators===<br />
==== operator>> ====<br />
Console& operator>>(Console& cn, int& ch);<br />
Get a key from keyboard using ''cn'' and store it in ''ch'';<br />
==== operator<< ====<br />
Console& operator<<(Console& cn, char ch);<br />
Print the character ''ch'' on the screen, where the cursor is located, using cn and return the cn reference;<br />
Console& operator<<(Console& cn, const char* str);<br />
print the string '''str''' on the screen where the cursor is using '''cn''' and return the cn reference<br />
<br />
<br />
=Submission=<br />
==Common Submission mistakes==<br />
<!--* Submitting the assignment with old version of cui_text.o<br />
*: ''Make sure you copy the latest version (currently 0.94.1) from my account : $cp ~fardad.soleimanloo/cio_test.o<br />
* Using tab character''<br />
*: ''As mentioned in class using tab character in your text editor makes the indentation of your code different in different editors, please make sure before submission you go to the settings of your development environment and make sure it uses spaces instead of tab character.'' --><br />
==Tester Demo==<br />
<!--To see how tester runs, you can run on Matrix (only use putty with the setting stated at [[#Notes|Notes]]) run:<br />
<big><pre><br />
$ ~fardad.soleimanloo/cui_test<br />
</pre></big> --><br />
<br />
==How to Compile==<br />
Compile and test your code with the test-main, in the following command-line environments and visual studio.<br />
<br />
Local PC: Borland 5.5 <br />
bcc32 bconsole.cpp console.cpp cui_test.cpp<br />
<br />
Local Mac: (use -lcurses to link curses library)<br />
c++ bconsole.cpp console.cpp cui_test.cpp -lcurses -Wno-write-strings<br />
<br />
matrix: GNU (use -lncurses to link ncurses library)<br />
g++ bconsole.cpp console.cpp cui_test.cpp -lncurses -Wno-write-strings<br />
<br />
Local PC: Visual Studio.net<br />
=== Tester Program ===<br />
*Tester program is at git://github.com/Seneca-OOP344/20132notes.git (Notes repository) in '''TesterPrograms''' directory.<br />
*repo path:<br/><br />
*:[https://github.com/Seneca-OOP344/20132notes.git 20132notes]/TesterPrograms/cui_test.cpp<br />
<br />
==How to submit==<br />
<!--For submission purposes, your solution must compile, link, and run without errors in each environment. <br />
<br />
First pull the changes of the two files bconsole.cpp and bconsole.h to version 1.02 (Feb 1, 2013) from the console directory in notes repository of your section.<br />
<br />
Test your program with cio_test.cpp from the same console directory stated above. When your program passed all the tests; on matrix, create a directory and copy all the source files (console.cpp, console.h, bconsole.cpp, bconsole.h) into it. Then copy cio_test.o '<big>''''V 0.94.1'''''</big> from "~fardad.soleimanloo" and then compile your code with your professors version of cio_test (i.e cio_test.o) and run it. If all the tests are passed successfully, an email will be sent to your professor automatically with your source code (console.h and console.cpp) attached to it.<br />
<br />
to copy the cio_test.o do the following.<br /><br />
From the directory containing all source files:<br />
$cp ~fardad.soleimanloo/cio_test.o .<br />
to compile the code:<br />
$g++ bconsole.cpp console.cpp cio_test.o -lncurses<br />
This should not generate any warnings.<br /><br />
To run the test (with automatic submission)<br />
$ a.out your_student_number Your Full Name as on Student Card <ENTER><br />
Example:<br />
$ a.out 012345678 Home Jay Simpson <ENTER> --><br />
== Tasks Distribution Suggestion==<br />
=== Team of 3 ===<br />
* Programmer 1<br />
*# Tab<br />
*# Character Entry<br />
*## Overstrike <br />
*## Insert Mode<br />
* Programmer 2<br />
*# Intial Corrections <br />
*# Home<br />
*# End<br />
*# Escape<br />
*# Right<br />
*# Left<br />
*# Enter<br />
* Programmer 3<br />
*# BackSpace<br />
*# Del<br />
*# InTextEditor and ReadOnly<br />
*# Function keys<br />
*# operator>> int&<br />
*# operator<< char<br />
*# operator<< char*<br />
*# Insert<br />
<br />
=== Team of 4 ===<br />
* Programmer 1<br />
*# Character Entry<br />
*## Overstrike<br />
*## Insert Mode<br />
*# End<br />
*# Enter<br />
* Programmer 2<br />
*# Tab<br />
*# Home<br />
*# operator>> int& <br />
*# operator<< char <br />
*# operator<< char* <br />
* Programmer 3<br />
*# BackSpace<br />
*# Right<br />
*# Del<br />
*# Function keys<br />
* Programmer 4<br />
*# Intial Corrections<br />
*# IsTextEditor and ReadOnly <br />
*# Escape<br />
*# Left<br />
*# Insert<br />
<br />
<br />
<!--<br />
Tab: 23<br />
Function keys: 1<br />
Overstrike: 15<br />
operator>> int& 3<br />
operator<< char 3<br />
operator<< char* 4<br />
Insert: 1<br />
<br />
<br />
Intial Corrections: 18 <br />
Home: 4<br />
End: 7<br />
Escape: 5<br />
Right: 10<br />
Left: 4<br />
Enter: 1<br />
<br />
BackSpace: 23<br />
Del: 3<br />
Insert Mode: 14<br />
IsTextEditor and ReadOnly 10<br />
<br />
--></div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Project_R0.1_20132-_OOP344&diff=96874Project R0.1 20132- OOP3442013-06-18T03:55:32Z<p>Brad Stuart: /* Notes */</p>
<hr />
<div>{{OOP344 Index | 20131}}<br />
<br />
=Release=<br />
* 0.1<br />
=Notes=<br />
* Using Matrix, from windows: please use [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe putty] only and set the keyboard to <br />
*: Backspace = Ctrl-?<br />
*: Home and End = Standard<br />
*: Function keys and keypad = Linux<br />
*: And then:<br />
*: Connection > Data > Terminal-type string = linux (This step must be done when first connecting through putty!)<br />
** This is NOT allowing HOME/END keys to function, and the test cannot be complete without those keys working.<br />
*:: Or if you have already connected, type in (export TERM="linux") without brackets<br />
* [https://cs.senecac.on.ca/~chris.szalwinski/resources/borland.html Guide for Using Borland 5.5]<br />
*: Note that to change the cmd.exe window size, right click on the top bar -> Properties -> Layout Tab<br />
<br />
=Due Dates=<br />
Monday June 17th.<br />
<br />
=Help=<br />
==Help Needed==<br />
* <strike>Bug(?): The insert mode in our assignment works as it is supposed to but fails the test when running the test program. Has anyone else encountered this problem, or is this an error on my side?</strike><br />
<br />
I had the same problem. Try to replace the original code '''Console::_insertMode''' by just '''insertMode'''. It works for me. Otherwise it is local I guess. So it works within your application but does not react to parameter passed to the function.<br />
<br />
Thank you. I actually solved it by making insertMode=Console::_insertMode.<br />
<br />
* Just noticed that the return string for the 4-6 test is wrong. It checks to see if you've inserted 'ab' into the string, and not 'abc' like the dialog box asks for. If you insert only 'ab' the test passes as it should.<br />
<br />
* In test 4.9 (END button), the test gives the string which stays in the middle of the field, is that OK?! I see that kind of a weird situation. In that case it fails the END button test, because values for curPosition & strOffset are not right. Ideas?<br />
<br />
You want to set the curPosition=size-*strOffset. This will mean that it scrolls down the string to the end if the length of the string is longer than the field, but only move to the end of the string if it isn't, which allows for having the string stay in the middle of the field as in the test. When you do this, though, don't forget that you need to make sure that, when the curPosition goes outside the field, the curPosition and offset are changed accordingly.<br />
<br />
* Anyone know where/how to submit when it's complete?<br />
<br />
If I'm not mistaking the test program should submit it in the end of the testing automatically..<br />
<br />
==Blog Posts==<br />
<br />
=Learning Outcome=<br />
Upon successful completion of this first assignment, you will have demonstrated the abilities to design and code<br />
* functions that use the basic console input and output library<br />
* a line editor<br />
* use of extern<br />
* operator overload<br />
* use of namespaces<br />
=Console Line Editing Facility =<br />
As your first assignment, you are to upgrade the basic console input output class (BConsole) to include line-display and line-editing facilities and use of "<<" and ">>" operators for character I/O and string output. <br />
<br />
==Specifications==<br />
<br />
Your submission consists of a class called Console that is to be inherited from BConsole in a namespace called '''cui'''. Your application module is fully portable across Borland C++5.5 on windows, Linux GNU C++, Viusual C++ on Windows and Mac C++ platforms which accepts console input, and provides console output through the set of facilities available in your Console module. <br />
<br />
The name of the library object to be created is console. The header file for the original version of this module is console.h and the implementation file for the original version is console.cpp. All of the identifiers for the library module and all upgrades to the module are defined in the cui namespace (short for console input output).<br />
<br />
Your upgrade in this assignment consists of creating a class called Console, inherited from BConsole, implemented in two files; console.h and console.cpp:<br />
<br />
In addition to all public methods of BConsole, Console must have the following two public methods and overload "<<" and ">>" operators.<br />
===external links===<br />
* instantiate Console, in an object called "console" in cui namespace and create an external linkage to in console.h<br />
===strdsp() method===<br />
void display(const char* str, int row, int col, int fieldLen=0, int curpos = -1); <br />
<br />
This method outputs the C-style, null-terminated string pointed to by str starting at row "row" and column "col" of the screen in a field of fieldLen characters(Row value 0 refers to the top row, and column value 0 refers to the left-most column) and positions the cursor at "curpos" location relative to "col", only if it is greater or equal to zero.<br />
<br />
If the string is longer than fieldLen, your function displays the first fieldLen characters. If the string is shorter than fieldLen, your function displays the entire string, followed by enough trailing spaces to fill out the field completely. <br />
<br />
If fieldLen is 0, your function displays the entire string with no trailing spaces.<br />
<br />
Your function positions the cursor after the last character displayed if curpos is less than zero otherwise it positions the cursor at "curpos" location relative to "col". The results are undefined if the starting position of the string is not within the dimensions of the screen.<br />
<br />
===lineedit() method===<br />
<br />
<big><pre><br />
int lineedit(char *str, int row, int col, int fieldLength, int maxStrLength, <br />
int* strOffset=_stroff, int* curPosition=_curpos, <br />
bool InTextEditor = false, bool ReadOnly = false, bool& insertMode=_insertMode );<br />
</pre></big><br />
<br />
This method is to be written in two steps. <br />
====Step one==== <br />
''Ignore the two arguments '''(InTextEditor and ReadOnly)''' for now write the method as follows:''<br />
<br />
This method edits the C-style, null-terminated string pointed by str. The parameter row holds the row (0 is the top row) of the string on the screen. The parameter col holds the starting column (0 is the left-most column) on the screen. The parameter fieldLength holds the length of the editable field. The string may be larger than the field itself, in which case part of the string is hidden from view. The parameter maxStrLength holds the maximum length of the string, excluding the null byte. The parameter insertMode points to a bool variable that holds the current insert mode of the string. The parameter insertMode receives the address of a variable that stores the current editing mode - insert or overwrite. The parameter strOffset points to an int variable that holds the initial offset of the string within the field; that is, the index of the character in the string that initially occupies the first character position in the field. The parameter curPosition points to an int variable that holds the initial cursor position within the field; that is, the index of the character in the field at which the cursor is initially placed. <br />
* '''''Initial Corrections'''''<br />
*:If the initial offset is beyond the end of the string, your function resets the offset to the length of the string; that is, to the index of the character immediately beyond the end of the string. If no offset variable is pointed to; that is, if the address of the variable is NULL, your function sets the offset to the index of the first character in the string; that is, to 0. (to do this have a local variable for the offset that holds zero to be pointed instead of an external variable)<br />
*:If the initial cursor position is beyond the end of the field, your function resets the position to the last character in the field. If the position is beyond the end of the string, your function resets the position to that immediately beyond the end of the string. If no cursor position variable is pointed to; that is, if the address of the variable is NULL, your function sets the cursor position to the first position in the field; that is, to position 0.(like the offset, to do this have a local variable for the cursor position that holds zero to be pointed instead of an external variable)<br />
<br />
Your function does not allow the cursor to move before the start of the field or past the end of the field. If the field ends at the right edge of the screen, your function does not allow the cursor to the right of that edge.<br />
<br />
Your function uses the symbolic names for non-ASCII and special keys defined in the keys.h header file. These names are the same symbolic names as those used in the original library module.<br />
<br />
The user terminates editing by pressing ENTER, ESCAPE, TAB, UP, DOWN, PGUP, PGDN or any of the function keys F(1) through F(12) inclusive. If the user presses ESCAPE, your function aborts editing, replaces the contents of the string with the original contents upon entry into your function, and leaves the offset and cursor position values unaltered. In order to be able to revert to the original string, your function needs to allocate memory at run time. <br />
<br />
At termination, your function passes back through the same int variables the current values of the offset and the cursor position, unless no variables were pointed to upon entry into your function; that is, unless the value of either address was NULL.<br />
<br />
Your function returns an int identifying the key that the user pressed to exit the function. <br />
<br />
Your function takes no action (other than perhaps beeping) if the user tries to enter too many characters (if, for example, the string is full in insert mode, or the cursor is positioned after the last character of a full string in overstrike mode).<br />
<br />
Your function handles the non-ASCII keys as follows<br />
<br />
*LEFT - moves the cursor left one character, if possible, changing the offset, if necessary.<br />
*RIGHT - moves the cursor right one character, if possible, changing the offset, if necessary.<br />
*HOME - moves the cursor to the beginning of the string, changing the offset, if necessary.<br />
*END - moves the cursor to the position to the right of the last character in the string, changing the offset, if necessary. <strike> If the last character is at the edge of the screen, moves the cursor to that character.</strike><br />
*INSERT - toggles Insert/Overstrike mode. In Insert mode, your function inserts a printable character into the string at the current cursor position, moves the remainder of the string to the right to make room for the inserted character, and positions the cursor just to the right of the inserted character. The printable characters are the characters from space (' ') to tilde ('~') inclusive in the ASCII table. In Overstrike mode, your function overwrites the character (if any) at the current cursor position with a printable character and advances the cursor just to the right of the new character. If the cursor is past the end of the string, your function appends a printable character to the string as long as the string isn't full, regardless of the mode. <br />
*DEL - discards the character at the current cursor position and moves all characters to the right of the cursor position one position to the left.<br />
*BACKSPACE - discards the character to the left of the current cursor position, if possible, moves the characters at and to the right of the cursor position one position to the left, if possible, and positions the cursor one character to the left, if possible.<br />
<br />
edit() always displays blanks in any part of the field that is not occupied by the string. UNDER NO CIRCUMSTANCES DOES YOUR FUNCTION CHANGE ANY POSITION ON THE SCREEN OUTSIDE THE FIELD. For example, your function does not display status information (such as "INS" or "OVR") elsewhere on the screen, since such displays limit the programmer's ability to design their own screen layouts.<br />
<br />
You may assume that it is the calling program's responsibility to ensure that the string array is large enough to handle maxStrLength characters and that the starting screen position provides enough room (on the screen) for the field, etc.<br />
<br />
{| class="wikitable" border="0"<br />
|+ <br />
! Edit Method!! Interface<br />
|-<br />
| [[File:editString.png|500px|thumb|center|Edit Method Function Diagram]] || <br />
[[File:interface.png|400px|thumb|center|Interface Diagram]]<br />
|}<br />
<br />
====Step two====<br />
''First run your program with cui_test.cpp and make sure it passes all the tests up to and including "4.16". If all tests are passed continue with step two:<br />
<br />
=====InTextEditor=====<br />
If '''InTextEditor''' is true and the value of '''*strOffset''' is changed at any time, then terminate the edit function immediately and return '''0''';<br />
======TAB key======<br />
If '''InTextEditor''' is true and TAB key is hit, then instead of terminating the function, ''Console::_tabsize'' spaces are inserted into ''str''.<br />
<br />
=====ReadOnly=====<br />
If '''ReadOnly''' is true, then edit function works exactly like before, except that any modification to the data (the content of the '''str''' string) will be ignored.<br />
<br />
===Overload "<<" and ">>" operators===<br />
==== operator>> ====<br />
Console& operator>>(Console& cn, int& ch);<br />
Get a key from keyboard using ''cn'' and store it in ''ch'';<br />
==== operator<< ====<br />
Console& operator<<(Console& cn, char ch);<br />
Print the character ''ch'' on the screen, where the cursor is located, using cn and return the cn reference;<br />
Console& operator<<(Console& cn, const char* str);<br />
print the string '''str''' on the screen where the cursor is using '''cn''' and return the cn reference<br />
<br />
<br />
=Submission=<br />
==Common Submission mistakes==<br />
<!--* Submitting the assignment with old version of cui_text.o<br />
*: ''Make sure you copy the latest version (currently 0.94.1) from my account : $cp ~fardad.soleimanloo/cio_test.o<br />
* Using tab character''<br />
*: ''As mentioned in class using tab character in your text editor makes the indentation of your code different in different editors, please make sure before submission you go to the settings of your development environment and make sure it uses spaces instead of tab character.'' --><br />
==Tester Demo==<br />
<!--To see how tester runs, you can run on Matrix (only use putty with the setting stated at [[#Notes|Notes]]) run:<br />
<big><pre><br />
$ ~fardad.soleimanloo/cui_test<br />
</pre></big> --><br />
<br />
==How to Compile==<br />
Compile and test your code with the test-main, in the following command-line environments and visual studio.<br />
<br />
Local PC: Borland 5.5 <br />
bcc32 bconsole.cpp console.cpp cui_test.cpp<br />
<br />
Local Mac: (use -lcurses to link curses library)<br />
c++ bconsole.cpp console.cpp cui_test.cpp -lcurses -Wno-write-strings<br />
<br />
matrix: GNU (use -lncurses to link ncurses library)<br />
g++ bconsole.cpp console.cpp cui_test.cpp -lncurses -Wno-write-strings<br />
<br />
Local PC: Visual Studio.net<br />
=== Tester Program ===<br />
*Tester program is at git://github.com/Seneca-OOP344/20132notes.git (Notes repository) in '''TesterPrograms''' directory.<br />
*repo path:<br/><br />
*:[https://github.com/Seneca-OOP344/20132notes.git 20132notes]/TesterPrograms/cui_test.cpp<br />
<br />
==How to submit==<br />
<!--For submission purposes, your solution must compile, link, and run without errors in each environment. <br />
<br />
First pull the changes of the two files bconsole.cpp and bconsole.h to version 1.02 (Feb 1, 2013) from the console directory in notes repository of your section.<br />
<br />
Test your program with cio_test.cpp from the same console directory stated above. When your program passed all the tests; on matrix, create a directory and copy all the source files (console.cpp, console.h, bconsole.cpp, bconsole.h) into it. Then copy cio_test.o '<big>''''V 0.94.1'''''</big> from "~fardad.soleimanloo" and then compile your code with your professors version of cio_test (i.e cio_test.o) and run it. If all the tests are passed successfully, an email will be sent to your professor automatically with your source code (console.h and console.cpp) attached to it.<br />
<br />
to copy the cio_test.o do the following.<br /><br />
From the directory containing all source files:<br />
$cp ~fardad.soleimanloo/cio_test.o .<br />
to compile the code:<br />
$g++ bconsole.cpp console.cpp cio_test.o -lncurses<br />
This should not generate any warnings.<br /><br />
To run the test (with automatic submission)<br />
$ a.out your_student_number Your Full Name as on Student Card <ENTER><br />
Example:<br />
$ a.out 012345678 Home Jay Simpson <ENTER> --><br />
== Tasks Distribution Suggestion==<br />
=== Team of 3 ===<br />
* Programmer 1<br />
*# Tab<br />
*# Character Entry<br />
*## Overstrike <br />
*## Insert Mode<br />
* Programmer 2<br />
*# Intial Corrections <br />
*# Home<br />
*# End<br />
*# Escape<br />
*# Right<br />
*# Left<br />
*# Enter<br />
* Programmer 3<br />
*# BackSpace<br />
*# Del<br />
*# InTextEditor and ReadOnly<br />
*# Function keys<br />
*# operator>> int&<br />
*# operator<< char<br />
*# operator<< char*<br />
*# Insert<br />
<br />
=== Team of 4 ===<br />
* Programmer 1<br />
*# Character Entry<br />
*## Overstrike<br />
*## Insert Mode<br />
*# End<br />
*# Enter<br />
* Programmer 2<br />
*# Tab<br />
*# Home<br />
*# operator>> int& <br />
*# operator<< char <br />
*# operator<< char* <br />
* Programmer 3<br />
*# BackSpace<br />
*# Right<br />
*# Del<br />
*# Function keys<br />
* Programmer 4<br />
*# Intial Corrections<br />
*# IsTextEditor and ReadOnly <br />
*# Escape<br />
*# Left<br />
*# Insert<br />
<br />
<br />
<!--<br />
Tab: 23<br />
Function keys: 1<br />
Overstrike: 15<br />
operator>> int& 3<br />
operator<< char 3<br />
operator<< char* 4<br />
Insert: 1<br />
<br />
<br />
Intial Corrections: 18 <br />
Home: 4<br />
End: 7<br />
Escape: 5<br />
Right: 10<br />
Left: 4<br />
Enter: 1<br />
<br />
BackSpace: 23<br />
Del: 3<br />
Insert Mode: 14<br />
IsTextEditor and ReadOnly 10<br />
<br />
--></div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Project_R0.1_20132-_OOP344&diff=96872Project R0.1 20132- OOP3442013-06-18T02:46:28Z<p>Brad Stuart: /* Help Needed */</p>
<hr />
<div>{{OOP344 Index | 20131}}<br />
<br />
=Release=<br />
* 0.1<br />
=Notes=<br />
* Using Matrix, from windows: please use [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe putty] only and set the keyboard to <br />
*: Backspace = Ctrl-?<br />
*: Home and End = Standard<br />
*: Function keys and keypad = Linux<br />
*: And then:<br />
*: Connection > Data > Terminal-type string = linux (This step must be done when first connecting through putty!)<br />
*:: Or if you have already connected, type in (export TERM="linux") without brackets<br />
* [https://cs.senecac.on.ca/~chris.szalwinski/resources/borland.html Guide for Using Borland 5.5]<br />
*: Note that to change the cmd.exe window size, right click on the top bar -> Properties -> Layout Tab<br />
<br />
=Due Dates=<br />
Monday June 17th.<br />
<br />
=Help=<br />
==Help Needed==<br />
* <strike>Bug(?): The insert mode in our assignment works as it is supposed to but fails the test when running the test program. Has anyone else encountered this problem, or is this an error on my side?</strike><br />
<br />
I had the same problem. Try to replace the original code '''Console::_insertMode''' by just '''insertMode'''. It works for me. Otherwise it is local I guess. So it works within your application but does not react to parameter passed to the function.<br />
<br />
Thank you. I actually solved it by making insertMode=Console::_insertMode.<br />
<br />
* Just noticed that the return string for the 4-6 test is wrong. It checks to see if you've inserted 'ab' into the string, and not 'abc' like the dialog box asks for. If you insert only 'ab' the test passes as it should.<br />
<br />
* In test 4.9 (END button), the test gives the string which stays in the middle of the field, is that OK?! I see that kind of a weird situation. In that case it fails the END button test, because values for curPosition & strOffset are not right. Ideas?<br />
<br />
You want to set the curPosition=size-*strOffset. This will mean that it scrolls down the string to the end if the length of the string is longer than the field, but only move to the end of the string if it isn't, which allows for having the string stay in the middle of the field as in the test. When you do this, though, don't forget that you need to make sure that, when the curPosition goes outside the field, the curPosition and offset are changed accordingly.<br />
<br />
* Anyone know where/how to submit when it's complete?<br />
<br />
==Blog Posts==<br />
<br />
=Learning Outcome=<br />
Upon successful completion of this first assignment, you will have demonstrated the abilities to design and code<br />
* functions that use the basic console input and output library<br />
* a line editor<br />
* use of extern<br />
* operator overload<br />
* use of namespaces<br />
=Console Line Editing Facility =<br />
As your first assignment, you are to upgrade the basic console input output class (BConsole) to include line-display and line-editing facilities and use of "<<" and ">>" operators for character I/O and string output. <br />
<br />
==Specifications==<br />
<br />
Your submission consists of a class called Console that is to be inherited from BConsole in a namespace called '''cui'''. Your application module is fully portable across Borland C++5.5 on windows, Linux GNU C++, Viusual C++ on Windows and Mac C++ platforms which accepts console input, and provides console output through the set of facilities available in your Console module. <br />
<br />
The name of the library object to be created is console. The header file for the original version of this module is console.h and the implementation file for the original version is console.cpp. All of the identifiers for the library module and all upgrades to the module are defined in the cui namespace (short for console input output).<br />
<br />
Your upgrade in this assignment consists of creating a class called Console, inherited from BConsole, implemented in two files; console.h and console.cpp:<br />
<br />
In addition to all public methods of BConsole, Console must have the following two public methods and overload "<<" and ">>" operators.<br />
===external links===<br />
* instantiate Console, in an object called "console" in cui namespace and create an external linkage to in console.h<br />
===strdsp() method===<br />
void display(const char* str, int row, int col, int fieldLen=0, int curpos = -1); <br />
<br />
This method outputs the C-style, null-terminated string pointed to by str starting at row "row" and column "col" of the screen in a field of fieldLen characters(Row value 0 refers to the top row, and column value 0 refers to the left-most column) and positions the cursor at "curpos" location relative to "col", only if it is greater or equal to zero.<br />
<br />
If the string is longer than fieldLen, your function displays the first fieldLen characters. If the string is shorter than fieldLen, your function displays the entire string, followed by enough trailing spaces to fill out the field completely. <br />
<br />
If fieldLen is 0, your function displays the entire string with no trailing spaces.<br />
<br />
Your function positions the cursor after the last character displayed if curpos is less than zero otherwise it positions the cursor at "curpos" location relative to "col". The results are undefined if the starting position of the string is not within the dimensions of the screen.<br />
<br />
===lineedit() method===<br />
<br />
<big><pre><br />
int lineedit(char *str, int row, int col, int fieldLength, int maxStrLength, <br />
int* strOffset=_stroff, int* curPosition=_curpos, <br />
bool InTextEditor = false, bool ReadOnly = false, bool& insertMode=_insertMode );<br />
</pre></big><br />
<br />
This method is to be written in two steps. <br />
====Step one==== <br />
''Ignore the two arguments '''(InTextEditor and ReadOnly)''' for now write the method as follows:''<br />
<br />
This method edits the C-style, null-terminated string pointed by str. The parameter row holds the row (0 is the top row) of the string on the screen. The parameter col holds the starting column (0 is the left-most column) on the screen. The parameter fieldLength holds the length of the editable field. The string may be larger than the field itself, in which case part of the string is hidden from view. The parameter maxStrLength holds the maximum length of the string, excluding the null byte. The parameter insertMode points to a bool variable that holds the current insert mode of the string. The parameter insertMode receives the address of a variable that stores the current editing mode - insert or overwrite. The parameter strOffset points to an int variable that holds the initial offset of the string within the field; that is, the index of the character in the string that initially occupies the first character position in the field. The parameter curPosition points to an int variable that holds the initial cursor position within the field; that is, the index of the character in the field at which the cursor is initially placed. <br />
* '''''Initial Corrections'''''<br />
*:If the initial offset is beyond the end of the string, your function resets the offset to the length of the string; that is, to the index of the character immediately beyond the end of the string. If no offset variable is pointed to; that is, if the address of the variable is NULL, your function sets the offset to the index of the first character in the string; that is, to 0. (to do this have a local variable for the offset that holds zero to be pointed instead of an external variable)<br />
*:If the initial cursor position is beyond the end of the field, your function resets the position to the last character in the field. If the position is beyond the end of the string, your function resets the position to that immediately beyond the end of the string. If no cursor position variable is pointed to; that is, if the address of the variable is NULL, your function sets the cursor position to the first position in the field; that is, to position 0.(like the offset, to do this have a local variable for the cursor position that holds zero to be pointed instead of an external variable)<br />
<br />
Your function does not allow the cursor to move before the start of the field or past the end of the field. If the field ends at the right edge of the screen, your function does not allow the cursor to the right of that edge.<br />
<br />
Your function uses the symbolic names for non-ASCII and special keys defined in the keys.h header file. These names are the same symbolic names as those used in the original library module.<br />
<br />
The user terminates editing by pressing ENTER, ESCAPE, TAB, UP, DOWN, PGUP, PGDN or any of the function keys F(1) through F(12) inclusive. If the user presses ESCAPE, your function aborts editing, replaces the contents of the string with the original contents upon entry into your function, and leaves the offset and cursor position values unaltered. In order to be able to revert to the original string, your function needs to allocate memory at run time. <br />
<br />
At termination, your function passes back through the same int variables the current values of the offset and the cursor position, unless no variables were pointed to upon entry into your function; that is, unless the value of either address was NULL.<br />
<br />
Your function returns an int identifying the key that the user pressed to exit the function. <br />
<br />
Your function takes no action (other than perhaps beeping) if the user tries to enter too many characters (if, for example, the string is full in insert mode, or the cursor is positioned after the last character of a full string in overstrike mode).<br />
<br />
Your function handles the non-ASCII keys as follows<br />
<br />
*LEFT - moves the cursor left one character, if possible, changing the offset, if necessary.<br />
*RIGHT - moves the cursor right one character, if possible, changing the offset, if necessary.<br />
*HOME - moves the cursor to the beginning of the string, changing the offset, if necessary.<br />
*END - moves the cursor to the position to the right of the last character in the string, changing the offset, if necessary. <strike> If the last character is at the edge of the screen, moves the cursor to that character.</strike><br />
*INSERT - toggles Insert/Overstrike mode. In Insert mode, your function inserts a printable character into the string at the current cursor position, moves the remainder of the string to the right to make room for the inserted character, and positions the cursor just to the right of the inserted character. The printable characters are the characters from space (' ') to tilde ('~') inclusive in the ASCII table. In Overstrike mode, your function overwrites the character (if any) at the current cursor position with a printable character and advances the cursor just to the right of the new character. If the cursor is past the end of the string, your function appends a printable character to the string as long as the string isn't full, regardless of the mode. <br />
*DEL - discards the character at the current cursor position and moves all characters to the right of the cursor position one position to the left.<br />
*BACKSPACE - discards the character to the left of the current cursor position, if possible, moves the characters at and to the right of the cursor position one position to the left, if possible, and positions the cursor one character to the left, if possible.<br />
<br />
edit() always displays blanks in any part of the field that is not occupied by the string. UNDER NO CIRCUMSTANCES DOES YOUR FUNCTION CHANGE ANY POSITION ON THE SCREEN OUTSIDE THE FIELD. For example, your function does not display status information (such as "INS" or "OVR") elsewhere on the screen, since such displays limit the programmer's ability to design their own screen layouts.<br />
<br />
You may assume that it is the calling program's responsibility to ensure that the string array is large enough to handle maxStrLength characters and that the starting screen position provides enough room (on the screen) for the field, etc.<br />
<br />
{| class="wikitable" border="0"<br />
|+ <br />
! Edit Method!! Interface<br />
|-<br />
| [[File:editString.png|500px|thumb|center|Edit Method Function Diagram]] || <br />
[[File:interface.png|400px|thumb|center|Interface Diagram]]<br />
|}<br />
<br />
====Step two====<br />
''First run your program with cui_test.cpp and make sure it passes all the tests up to and including "4.16". If all tests are passed continue with step two:<br />
<br />
=====InTextEditor=====<br />
If '''InTextEditor''' is true and the value of '''*strOffset''' is changed at any time, then terminate the edit function immediately and return '''0''';<br />
======TAB key======<br />
If '''InTextEditor''' is true and TAB key is hit, then instead of terminating the function, ''Console::_tabsize'' spaces are inserted into ''str''.<br />
<br />
=====ReadOnly=====<br />
If '''ReadOnly''' is true, then edit function works exactly like before, except that any modification to the data (the content of the '''str''' string) will be ignored.<br />
<br />
===Overload "<<" and ">>" operators===<br />
==== operator>> ====<br />
Console& operator>>(Console& cn, int& ch);<br />
Get a key from keyboard using ''cn'' and store it in ''ch'';<br />
==== operator<< ====<br />
Console& operator<<(Console& cn, char ch);<br />
Print the character ''ch'' on the screen, where the cursor is located, using cn and return the cn reference;<br />
Console& operator<<(Console& cn, const char* str);<br />
print the string '''str''' on the screen where the cursor is using '''cn''' and return the cn reference<br />
<br />
<br />
=Submission=<br />
==Common Submission mistakes==<br />
<!--* Submitting the assignment with old version of cui_text.o<br />
*: ''Make sure you copy the latest version (currently 0.94.1) from my account : $cp ~fardad.soleimanloo/cio_test.o<br />
* Using tab character''<br />
*: ''As mentioned in class using tab character in your text editor makes the indentation of your code different in different editors, please make sure before submission you go to the settings of your development environment and make sure it uses spaces instead of tab character.'' --><br />
==Tester Demo==<br />
<!--To see how tester runs, you can run on Matrix (only use putty with the setting stated at [[#Notes|Notes]]) run:<br />
<big><pre><br />
$ ~fardad.soleimanloo/cui_test<br />
</pre></big> --><br />
<br />
==How to Compile==<br />
Compile and test your code with the test-main, in the following command-line environments and visual studio.<br />
<br />
Local PC: Borland 5.5 <br />
bcc32 bconsole.cpp console.cpp cui_test.cpp<br />
<br />
Local Mac: (use -lcurses to link curses library)<br />
c++ bconsole.cpp console.cpp cui_test.cpp -lcurses -Wno-write-strings<br />
<br />
matrix: GNU (use -lncurses to link ncurses library)<br />
g++ bconsole.cpp console.cpp cui_test.cpp -lncurses -Wno-write-strings<br />
<br />
Local PC: Visual Studio.net<br />
=== Tester Program ===<br />
*Tester program is at git://github.com/Seneca-OOP344/20132notes.git (Notes repository) in '''TesterPrograms''' directory.<br />
*repo path:<br/><br />
*:[https://github.com/Seneca-OOP344/20132notes.git 20132notes]/TesterPrograms/cui_test.cpp<br />
<br />
==How to submit==<br />
<!--For submission purposes, your solution must compile, link, and run without errors in each environment. <br />
<br />
First pull the changes of the two files bconsole.cpp and bconsole.h to version 1.02 (Feb 1, 2013) from the console directory in notes repository of your section.<br />
<br />
Test your program with cio_test.cpp from the same console directory stated above. When your program passed all the tests; on matrix, create a directory and copy all the source files (console.cpp, console.h, bconsole.cpp, bconsole.h) into it. Then copy cio_test.o '<big>''''V 0.94.1'''''</big> from "~fardad.soleimanloo" and then compile your code with your professors version of cio_test (i.e cio_test.o) and run it. If all the tests are passed successfully, an email will be sent to your professor automatically with your source code (console.h and console.cpp) attached to it.<br />
<br />
to copy the cio_test.o do the following.<br /><br />
From the directory containing all source files:<br />
$cp ~fardad.soleimanloo/cio_test.o .<br />
to compile the code:<br />
$g++ bconsole.cpp console.cpp cio_test.o -lncurses<br />
This should not generate any warnings.<br /><br />
To run the test (with automatic submission)<br />
$ a.out your_student_number Your Full Name as on Student Card <ENTER><br />
Example:<br />
$ a.out 012345678 Home Jay Simpson <ENTER> --><br />
== Tasks Distribution Suggestion==<br />
=== Team of 3 ===<br />
* Programmer 1<br />
*# Tab<br />
*# Character Entry<br />
*## Overstrike <br />
*## Insert Mode<br />
* Programmer 2<br />
*# Intial Corrections <br />
*# Home<br />
*# End<br />
*# Escape<br />
*# Right<br />
*# Left<br />
*# Enter<br />
* Programmer 3<br />
*# BackSpace<br />
*# Del<br />
*# InTextEditor and ReadOnly<br />
*# Function keys<br />
*# operator>> int&<br />
*# operator<< char<br />
*# operator<< char*<br />
*# Insert<br />
<br />
=== Team of 4 ===<br />
* Programmer 1<br />
*# Character Entry<br />
*## Overstrike<br />
*## Insert Mode<br />
*# End<br />
*# Enter<br />
* Programmer 2<br />
*# Tab<br />
*# Home<br />
*# operator>> int& <br />
*# operator<< char <br />
*# operator<< char* <br />
* Programmer 3<br />
*# BackSpace<br />
*# Right<br />
*# Del<br />
*# Function keys<br />
* Programmer 4<br />
*# Intial Corrections<br />
*# IsTextEditor and ReadOnly <br />
*# Escape<br />
*# Left<br />
*# Insert<br />
<br />
<br />
<!--<br />
Tab: 23<br />
Function keys: 1<br />
Overstrike: 15<br />
operator>> int& 3<br />
operator<< char 3<br />
operator<< char* 4<br />
Insert: 1<br />
<br />
<br />
Intial Corrections: 18 <br />
Home: 4<br />
End: 7<br />
Escape: 5<br />
Right: 10<br />
Left: 4<br />
Enter: 1<br />
<br />
BackSpace: 23<br />
Del: 3<br />
Insert Mode: 14<br />
IsTextEditor and ReadOnly 10<br />
<br />
--></div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Project_R0.1_20132-_OOP344&diff=96871Project R0.1 20132- OOP3442013-06-18T02:45:27Z<p>Brad Stuart: /* Help Needed */</p>
<hr />
<div>{{OOP344 Index | 20131}}<br />
<br />
=Release=<br />
* 0.1<br />
=Notes=<br />
* Using Matrix, from windows: please use [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe putty] only and set the keyboard to <br />
*: Backspace = Ctrl-?<br />
*: Home and End = Standard<br />
*: Function keys and keypad = Linux<br />
*: And then:<br />
*: Connection > Data > Terminal-type string = linux (This step must be done when first connecting through putty!)<br />
*:: Or if you have already connected, type in (export TERM="linux") without brackets<br />
* [https://cs.senecac.on.ca/~chris.szalwinski/resources/borland.html Guide for Using Borland 5.5]<br />
*: Note that to change the cmd.exe window size, right click on the top bar -> Properties -> Layout Tab<br />
<br />
=Due Dates=<br />
Monday June 17th.<br />
<br />
=Help=<br />
==Help Needed==<br />
* <strike>Bug(?): The insert mode in our assignment works as it is supposed to but fails the test when running the test program. Has anyone else encountered this problem, or is this an error on my side?</strike><br />
<br />
I had the same problem. Try to replace the original code '''Console::_insertMode''' by just '''insertMode'''. It works for me. Otherwise it is local I guess. So it works within your application but does not react to parameter passed to the function.<br />
<br />
Thank you. I actually solved it by making insertMode=Console::_insertMode.<br />
<br />
* Just noticed that the return string for the 4-6 test is wrong. It checks to see if you've inserted 'ab' into the string, and not 'abc' like the dialog box asks for. If you insert only 'ab' the test passes as it should.<br />
<br />
* In test 4.9 (END button), the test gives the string which stays in the middle of the field, is that OK?! I see that kind of a weird situation. In that case it fails the END button test, because values for curPosition & strOffset are not right. Ideas?<br />
<br />
You want to set the curPosition=size-*strOffset. This will mean that it scrolls down the string to the end if the length of the string is longer than the field, but only move to the end of the string if it isn't, which allows for having the string stay in the middle of the field as in the test. When you do this, though, don't forget that you need to make sure that, when the curPosition goes outside the field, the curPosition and offset are changed accordingly.<br />
<br />
==Blog Posts==<br />
<br />
=Learning Outcome=<br />
Upon successful completion of this first assignment, you will have demonstrated the abilities to design and code<br />
* functions that use the basic console input and output library<br />
* a line editor<br />
* use of extern<br />
* operator overload<br />
* use of namespaces<br />
=Console Line Editing Facility =<br />
As your first assignment, you are to upgrade the basic console input output class (BConsole) to include line-display and line-editing facilities and use of "<<" and ">>" operators for character I/O and string output. <br />
<br />
==Specifications==<br />
<br />
Your submission consists of a class called Console that is to be inherited from BConsole in a namespace called '''cui'''. Your application module is fully portable across Borland C++5.5 on windows, Linux GNU C++, Viusual C++ on Windows and Mac C++ platforms which accepts console input, and provides console output through the set of facilities available in your Console module. <br />
<br />
The name of the library object to be created is console. The header file for the original version of this module is console.h and the implementation file for the original version is console.cpp. All of the identifiers for the library module and all upgrades to the module are defined in the cui namespace (short for console input output).<br />
<br />
Your upgrade in this assignment consists of creating a class called Console, inherited from BConsole, implemented in two files; console.h and console.cpp:<br />
<br />
In addition to all public methods of BConsole, Console must have the following two public methods and overload "<<" and ">>" operators.<br />
===external links===<br />
* instantiate Console, in an object called "console" in cui namespace and create an external linkage to in console.h<br />
===strdsp() method===<br />
void display(const char* str, int row, int col, int fieldLen=0, int curpos = -1); <br />
<br />
This method outputs the C-style, null-terminated string pointed to by str starting at row "row" and column "col" of the screen in a field of fieldLen characters(Row value 0 refers to the top row, and column value 0 refers to the left-most column) and positions the cursor at "curpos" location relative to "col", only if it is greater or equal to zero.<br />
<br />
If the string is longer than fieldLen, your function displays the first fieldLen characters. If the string is shorter than fieldLen, your function displays the entire string, followed by enough trailing spaces to fill out the field completely. <br />
<br />
If fieldLen is 0, your function displays the entire string with no trailing spaces.<br />
<br />
Your function positions the cursor after the last character displayed if curpos is less than zero otherwise it positions the cursor at "curpos" location relative to "col". The results are undefined if the starting position of the string is not within the dimensions of the screen.<br />
<br />
===lineedit() method===<br />
<br />
<big><pre><br />
int lineedit(char *str, int row, int col, int fieldLength, int maxStrLength, <br />
int* strOffset=_stroff, int* curPosition=_curpos, <br />
bool InTextEditor = false, bool ReadOnly = false, bool& insertMode=_insertMode );<br />
</pre></big><br />
<br />
This method is to be written in two steps. <br />
====Step one==== <br />
''Ignore the two arguments '''(InTextEditor and ReadOnly)''' for now write the method as follows:''<br />
<br />
This method edits the C-style, null-terminated string pointed by str. The parameter row holds the row (0 is the top row) of the string on the screen. The parameter col holds the starting column (0 is the left-most column) on the screen. The parameter fieldLength holds the length of the editable field. The string may be larger than the field itself, in which case part of the string is hidden from view. The parameter maxStrLength holds the maximum length of the string, excluding the null byte. The parameter insertMode points to a bool variable that holds the current insert mode of the string. The parameter insertMode receives the address of a variable that stores the current editing mode - insert or overwrite. The parameter strOffset points to an int variable that holds the initial offset of the string within the field; that is, the index of the character in the string that initially occupies the first character position in the field. The parameter curPosition points to an int variable that holds the initial cursor position within the field; that is, the index of the character in the field at which the cursor is initially placed. <br />
* '''''Initial Corrections'''''<br />
*:If the initial offset is beyond the end of the string, your function resets the offset to the length of the string; that is, to the index of the character immediately beyond the end of the string. If no offset variable is pointed to; that is, if the address of the variable is NULL, your function sets the offset to the index of the first character in the string; that is, to 0. (to do this have a local variable for the offset that holds zero to be pointed instead of an external variable)<br />
*:If the initial cursor position is beyond the end of the field, your function resets the position to the last character in the field. If the position is beyond the end of the string, your function resets the position to that immediately beyond the end of the string. If no cursor position variable is pointed to; that is, if the address of the variable is NULL, your function sets the cursor position to the first position in the field; that is, to position 0.(like the offset, to do this have a local variable for the cursor position that holds zero to be pointed instead of an external variable)<br />
<br />
Your function does not allow the cursor to move before the start of the field or past the end of the field. If the field ends at the right edge of the screen, your function does not allow the cursor to the right of that edge.<br />
<br />
Your function uses the symbolic names for non-ASCII and special keys defined in the keys.h header file. These names are the same symbolic names as those used in the original library module.<br />
<br />
The user terminates editing by pressing ENTER, ESCAPE, TAB, UP, DOWN, PGUP, PGDN or any of the function keys F(1) through F(12) inclusive. If the user presses ESCAPE, your function aborts editing, replaces the contents of the string with the original contents upon entry into your function, and leaves the offset and cursor position values unaltered. In order to be able to revert to the original string, your function needs to allocate memory at run time. <br />
<br />
At termination, your function passes back through the same int variables the current values of the offset and the cursor position, unless no variables were pointed to upon entry into your function; that is, unless the value of either address was NULL.<br />
<br />
Your function returns an int identifying the key that the user pressed to exit the function. <br />
<br />
Your function takes no action (other than perhaps beeping) if the user tries to enter too many characters (if, for example, the string is full in insert mode, or the cursor is positioned after the last character of a full string in overstrike mode).<br />
<br />
Your function handles the non-ASCII keys as follows<br />
<br />
*LEFT - moves the cursor left one character, if possible, changing the offset, if necessary.<br />
*RIGHT - moves the cursor right one character, if possible, changing the offset, if necessary.<br />
*HOME - moves the cursor to the beginning of the string, changing the offset, if necessary.<br />
*END - moves the cursor to the position to the right of the last character in the string, changing the offset, if necessary. <strike> If the last character is at the edge of the screen, moves the cursor to that character.</strike><br />
*INSERT - toggles Insert/Overstrike mode. In Insert mode, your function inserts a printable character into the string at the current cursor position, moves the remainder of the string to the right to make room for the inserted character, and positions the cursor just to the right of the inserted character. The printable characters are the characters from space (' ') to tilde ('~') inclusive in the ASCII table. In Overstrike mode, your function overwrites the character (if any) at the current cursor position with a printable character and advances the cursor just to the right of the new character. If the cursor is past the end of the string, your function appends a printable character to the string as long as the string isn't full, regardless of the mode. <br />
*DEL - discards the character at the current cursor position and moves all characters to the right of the cursor position one position to the left.<br />
*BACKSPACE - discards the character to the left of the current cursor position, if possible, moves the characters at and to the right of the cursor position one position to the left, if possible, and positions the cursor one character to the left, if possible.<br />
<br />
edit() always displays blanks in any part of the field that is not occupied by the string. UNDER NO CIRCUMSTANCES DOES YOUR FUNCTION CHANGE ANY POSITION ON THE SCREEN OUTSIDE THE FIELD. For example, your function does not display status information (such as "INS" or "OVR") elsewhere on the screen, since such displays limit the programmer's ability to design their own screen layouts.<br />
<br />
You may assume that it is the calling program's responsibility to ensure that the string array is large enough to handle maxStrLength characters and that the starting screen position provides enough room (on the screen) for the field, etc.<br />
<br />
{| class="wikitable" border="0"<br />
|+ <br />
! Edit Method!! Interface<br />
|-<br />
| [[File:editString.png|500px|thumb|center|Edit Method Function Diagram]] || <br />
[[File:interface.png|400px|thumb|center|Interface Diagram]]<br />
|}<br />
<br />
====Step two====<br />
''First run your program with cui_test.cpp and make sure it passes all the tests up to and including "4.16". If all tests are passed continue with step two:<br />
<br />
=====InTextEditor=====<br />
If '''InTextEditor''' is true and the value of '''*strOffset''' is changed at any time, then terminate the edit function immediately and return '''0''';<br />
======TAB key======<br />
If '''InTextEditor''' is true and TAB key is hit, then instead of terminating the function, ''Console::_tabsize'' spaces are inserted into ''str''.<br />
<br />
=====ReadOnly=====<br />
If '''ReadOnly''' is true, then edit function works exactly like before, except that any modification to the data (the content of the '''str''' string) will be ignored.<br />
<br />
===Overload "<<" and ">>" operators===<br />
==== operator>> ====<br />
Console& operator>>(Console& cn, int& ch);<br />
Get a key from keyboard using ''cn'' and store it in ''ch'';<br />
==== operator<< ====<br />
Console& operator<<(Console& cn, char ch);<br />
Print the character ''ch'' on the screen, where the cursor is located, using cn and return the cn reference;<br />
Console& operator<<(Console& cn, const char* str);<br />
print the string '''str''' on the screen where the cursor is using '''cn''' and return the cn reference<br />
<br />
<br />
=Submission=<br />
==Common Submission mistakes==<br />
<!--* Submitting the assignment with old version of cui_text.o<br />
*: ''Make sure you copy the latest version (currently 0.94.1) from my account : $cp ~fardad.soleimanloo/cio_test.o<br />
* Using tab character''<br />
*: ''As mentioned in class using tab character in your text editor makes the indentation of your code different in different editors, please make sure before submission you go to the settings of your development environment and make sure it uses spaces instead of tab character.'' --><br />
==Tester Demo==<br />
<!--To see how tester runs, you can run on Matrix (only use putty with the setting stated at [[#Notes|Notes]]) run:<br />
<big><pre><br />
$ ~fardad.soleimanloo/cui_test<br />
</pre></big> --><br />
<br />
==How to Compile==<br />
Compile and test your code with the test-main, in the following command-line environments and visual studio.<br />
<br />
Local PC: Borland 5.5 <br />
bcc32 bconsole.cpp console.cpp cui_test.cpp<br />
<br />
Local Mac: (use -lcurses to link curses library)<br />
c++ bconsole.cpp console.cpp cui_test.cpp -lcurses -Wno-write-strings<br />
<br />
matrix: GNU (use -lncurses to link ncurses library)<br />
g++ bconsole.cpp console.cpp cui_test.cpp -lncurses -Wno-write-strings<br />
<br />
Local PC: Visual Studio.net<br />
=== Tester Program ===<br />
*Tester program is at git://github.com/Seneca-OOP344/20132notes.git (Notes repository) in '''TesterPrograms''' directory.<br />
*repo path:<br/><br />
*:[https://github.com/Seneca-OOP344/20132notes.git 20132notes]/TesterPrograms/cui_test.cpp<br />
<br />
==How to submit==<br />
<!--For submission purposes, your solution must compile, link, and run without errors in each environment. <br />
<br />
First pull the changes of the two files bconsole.cpp and bconsole.h to version 1.02 (Feb 1, 2013) from the console directory in notes repository of your section.<br />
<br />
Test your program with cio_test.cpp from the same console directory stated above. When your program passed all the tests; on matrix, create a directory and copy all the source files (console.cpp, console.h, bconsole.cpp, bconsole.h) into it. Then copy cio_test.o '<big>''''V 0.94.1'''''</big> from "~fardad.soleimanloo" and then compile your code with your professors version of cio_test (i.e cio_test.o) and run it. If all the tests are passed successfully, an email will be sent to your professor automatically with your source code (console.h and console.cpp) attached to it.<br />
<br />
to copy the cio_test.o do the following.<br /><br />
From the directory containing all source files:<br />
$cp ~fardad.soleimanloo/cio_test.o .<br />
to compile the code:<br />
$g++ bconsole.cpp console.cpp cio_test.o -lncurses<br />
This should not generate any warnings.<br /><br />
To run the test (with automatic submission)<br />
$ a.out your_student_number Your Full Name as on Student Card <ENTER><br />
Example:<br />
$ a.out 012345678 Home Jay Simpson <ENTER> --><br />
== Tasks Distribution Suggestion==<br />
=== Team of 3 ===<br />
* Programmer 1<br />
*# Tab<br />
*# Character Entry<br />
*## Overstrike <br />
*## Insert Mode<br />
* Programmer 2<br />
*# Intial Corrections <br />
*# Home<br />
*# End<br />
*# Escape<br />
*# Right<br />
*# Left<br />
*# Enter<br />
* Programmer 3<br />
*# BackSpace<br />
*# Del<br />
*# InTextEditor and ReadOnly<br />
*# Function keys<br />
*# operator>> int&<br />
*# operator<< char<br />
*# operator<< char*<br />
*# Insert<br />
<br />
=== Team of 4 ===<br />
* Programmer 1<br />
*# Character Entry<br />
*## Overstrike<br />
*## Insert Mode<br />
*# End<br />
*# Enter<br />
* Programmer 2<br />
*# Tab<br />
*# Home<br />
*# operator>> int& <br />
*# operator<< char <br />
*# operator<< char* <br />
* Programmer 3<br />
*# BackSpace<br />
*# Right<br />
*# Del<br />
*# Function keys<br />
* Programmer 4<br />
*# Intial Corrections<br />
*# IsTextEditor and ReadOnly <br />
*# Escape<br />
*# Left<br />
*# Insert<br />
<br />
<br />
<!--<br />
Tab: 23<br />
Function keys: 1<br />
Overstrike: 15<br />
operator>> int& 3<br />
operator<< char 3<br />
operator<< char* 4<br />
Insert: 1<br />
<br />
<br />
Intial Corrections: 18 <br />
Home: 4<br />
End: 7<br />
Escape: 5<br />
Right: 10<br />
Left: 4<br />
Enter: 1<br />
<br />
BackSpace: 23<br />
Del: 3<br />
Insert Mode: 14<br />
IsTextEditor and ReadOnly 10<br />
<br />
--></div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Project_R0.1_20132-_OOP344&diff=96869Project R0.1 20132- OOP3442013-06-18T01:51:59Z<p>Brad Stuart: /* Help */</p>
<hr />
<div>{{OOP344 Index | 20131}}<br />
<br />
=Release=<br />
* 0.1<br />
=Notes=<br />
* Using Matrix, from windows: please use [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe putty] only and set the keyboard to <br />
*: Backspace = Ctrl-?<br />
*: Home and End = Standard<br />
*: Function keys and keypad = Linux<br />
*: And then:<br />
*: Connection > Data > Terminal-type string = linux (This step must be done when first connecting through putty!)<br />
*:: Or if you have already connected, type in (export TERM="linux") without brackets<br />
* [https://cs.senecac.on.ca/~chris.szalwinski/resources/borland.html Guide for Using Borland 5.5]<br />
*: Note that to change the cmd.exe window size, right click on the top bar -> Properties -> Layout Tab<br />
<br />
=Due Dates=<br />
Monday June 17th.<br />
<br />
=Help=<br />
==Help Needed==<br />
* <strike>Bug(?): The insert mode in our assignment works as it is supposed to but fails the test when running the test program. Has anyone else encountered this problem, or is this an error on my side?</strike><br />
<br />
I had the same problem. Try to replace the original code '''Console::_insertMode''' by just '''insertMode'''. It works for me. Otherwise it is local I guess. So it works within your application but does not react to parameter passed to the function.<br />
<br />
Thank you. I actually solved it by making insertMode=Console::_insertMode.<br />
<br />
* Just noticed that the return string for the 4-6 test is wrong. It checks to see if you've inserted 'ab' into the string, and not 'abc' like the dialog box asks for. If you insert only 'ab' the test passes as it should.<br />
<br />
==Blog Posts==<br />
<br />
=Learning Outcome=<br />
Upon successful completion of this first assignment, you will have demonstrated the abilities to design and code<br />
* functions that use the basic console input and output library<br />
* a line editor<br />
* use of extern<br />
* operator overload<br />
* use of namespaces<br />
=Console Line Editing Facility =<br />
As your first assignment, you are to upgrade the basic console input output class (BConsole) to include line-display and line-editing facilities and use of "<<" and ">>" operators for character I/O and string output. <br />
<br />
==Specifications==<br />
<br />
Your submission consists of a class called Console that is to be inherited from BConsole in a namespace called '''cui'''. Your application module is fully portable across Borland C++5.5 on windows, Linux GNU C++, Viusual C++ on Windows and Mac C++ platforms which accepts console input, and provides console output through the set of facilities available in your Console module. <br />
<br />
The name of the library object to be created is console. The header file for the original version of this module is console.h and the implementation file for the original version is console.cpp. All of the identifiers for the library module and all upgrades to the module are defined in the cui namespace (short for console input output).<br />
<br />
Your upgrade in this assignment consists of creating a class called Console, inherited from BConsole, implemented in two files; console.h and console.cpp:<br />
<br />
In addition to all public methods of BConsole, Console must have the following two public methods and overload "<<" and ">>" operators.<br />
===external links===<br />
* instantiate Console, in an object called "console" in cui namespace and create an external linkage to in console.h<br />
===strdsp() method===<br />
void display(const char* str, int row, int col, int fieldLen=0, int curpos = -1); <br />
<br />
This method outputs the C-style, null-terminated string pointed to by str starting at row "row" and column "col" of the screen in a field of fieldLen characters(Row value 0 refers to the top row, and column value 0 refers to the left-most column) and positions the cursor at "curpos" location relative to "col", only if it is greater or equal to zero.<br />
<br />
If the string is longer than fieldLen, your function displays the first fieldLen characters. If the string is shorter than fieldLen, your function displays the entire string, followed by enough trailing spaces to fill out the field completely. <br />
<br />
If fieldLen is 0, your function displays the entire string with no trailing spaces.<br />
<br />
Your function positions the cursor after the last character displayed if curpos is less than zero otherwise it positions the cursor at "curpos" location relative to "col". The results are undefined if the starting position of the string is not within the dimensions of the screen.<br />
<br />
===lineedit() method===<br />
<br />
<big><pre><br />
int lineedit(char *str, int row, int col, int fieldLength, int maxStrLength, <br />
int* strOffset=_stroff, int* curPosition=_curpos, <br />
bool InTextEditor = false, bool ReadOnly = false, bool& insertMode=_insertMode );<br />
</pre></big><br />
<br />
This method is to be written in two steps. <br />
====Step one==== <br />
''Ignore the two arguments '''(InTextEditor and ReadOnly)''' for now write the method as follows:''<br />
<br />
This method edits the C-style, null-terminated string pointed by str. The parameter row holds the row (0 is the top row) of the string on the screen. The parameter col holds the starting column (0 is the left-most column) on the screen. The parameter fieldLength holds the length of the editable field. The string may be larger than the field itself, in which case part of the string is hidden from view. The parameter maxStrLength holds the maximum length of the string, excluding the null byte. The parameter insertMode points to a bool variable that holds the current insert mode of the string. The parameter insertMode receives the address of a variable that stores the current editing mode - insert or overwrite. The parameter strOffset points to an int variable that holds the initial offset of the string within the field; that is, the index of the character in the string that initially occupies the first character position in the field. The parameter curPosition points to an int variable that holds the initial cursor position within the field; that is, the index of the character in the field at which the cursor is initially placed. <br />
* '''''Initial Corrections'''''<br />
*:If the initial offset is beyond the end of the string, your function resets the offset to the length of the string; that is, to the index of the character immediately beyond the end of the string. If no offset variable is pointed to; that is, if the address of the variable is NULL, your function sets the offset to the index of the first character in the string; that is, to 0. (to do this have a local variable for the offset that holds zero to be pointed instead of an external variable)<br />
*:If the initial cursor position is beyond the end of the field, your function resets the position to the last character in the field. If the position is beyond the end of the string, your function resets the position to that immediately beyond the end of the string. If no cursor position variable is pointed to; that is, if the address of the variable is NULL, your function sets the cursor position to the first position in the field; that is, to position 0.(like the offset, to do this have a local variable for the cursor position that holds zero to be pointed instead of an external variable)<br />
<br />
Your function does not allow the cursor to move before the start of the field or past the end of the field. If the field ends at the right edge of the screen, your function does not allow the cursor to the right of that edge.<br />
<br />
Your function uses the symbolic names for non-ASCII and special keys defined in the keys.h header file. These names are the same symbolic names as those used in the original library module.<br />
<br />
The user terminates editing by pressing ENTER, ESCAPE, TAB, UP, DOWN, PGUP, PGDN or any of the function keys F(1) through F(12) inclusive. If the user presses ESCAPE, your function aborts editing, replaces the contents of the string with the original contents upon entry into your function, and leaves the offset and cursor position values unaltered. In order to be able to revert to the original string, your function needs to allocate memory at run time. <br />
<br />
At termination, your function passes back through the same int variables the current values of the offset and the cursor position, unless no variables were pointed to upon entry into your function; that is, unless the value of either address was NULL.<br />
<br />
Your function returns an int identifying the key that the user pressed to exit the function. <br />
<br />
Your function takes no action (other than perhaps beeping) if the user tries to enter too many characters (if, for example, the string is full in insert mode, or the cursor is positioned after the last character of a full string in overstrike mode).<br />
<br />
Your function handles the non-ASCII keys as follows<br />
<br />
*LEFT - moves the cursor left one character, if possible, changing the offset, if necessary.<br />
*RIGHT - moves the cursor right one character, if possible, changing the offset, if necessary.<br />
*HOME - moves the cursor to the beginning of the string, changing the offset, if necessary.<br />
*END - moves the cursor to the position to the right of the last character in the string, changing the offset, if necessary. <strike> If the last character is at the edge of the screen, moves the cursor to that character.</strike><br />
*INSERT - toggles Insert/Overstrike mode. In Insert mode, your function inserts a printable character into the string at the current cursor position, moves the remainder of the string to the right to make room for the inserted character, and positions the cursor just to the right of the inserted character. The printable characters are the characters from space (' ') to tilde ('~') inclusive in the ASCII table. In Overstrike mode, your function overwrites the character (if any) at the current cursor position with a printable character and advances the cursor just to the right of the new character. If the cursor is past the end of the string, your function appends a printable character to the string as long as the string isn't full, regardless of the mode. <br />
*DEL - discards the character at the current cursor position and moves all characters to the right of the cursor position one position to the left.<br />
*BACKSPACE - discards the character to the left of the current cursor position, if possible, moves the characters at and to the right of the cursor position one position to the left, if possible, and positions the cursor one character to the left, if possible.<br />
<br />
edit() always displays blanks in any part of the field that is not occupied by the string. UNDER NO CIRCUMSTANCES DOES YOUR FUNCTION CHANGE ANY POSITION ON THE SCREEN OUTSIDE THE FIELD. For example, your function does not display status information (such as "INS" or "OVR") elsewhere on the screen, since such displays limit the programmer's ability to design their own screen layouts.<br />
<br />
You may assume that it is the calling program's responsibility to ensure that the string array is large enough to handle maxStrLength characters and that the starting screen position provides enough room (on the screen) for the field, etc.<br />
<br />
{| class="wikitable" border="0"<br />
|+ <br />
! Edit Method!! Interface<br />
|-<br />
| [[File:editString.png|500px|thumb|center|Edit Method Function Diagram]] || <br />
[[File:interface.png|400px|thumb|center|Interface Diagram]]<br />
|}<br />
<br />
====Step two====<br />
''First run your program with cui_test.cpp and make sure it passes all the tests up to and including "4.16". If all tests are passed continue with step two:<br />
<br />
=====InTextEditor=====<br />
If '''InTextEditor''' is true and the value of '''*strOffset''' is changed at any time, then terminate the edit function immediately and return '''0''';<br />
======TAB key======<br />
If '''InTextEditor''' is true and TAB key is hit, then instead of terminating the function, ''Console::_tabsize'' spaces are inserted into ''str''.<br />
<br />
=====ReadOnly=====<br />
If '''ReadOnly''' is true, then edit function works exactly like before, except that any modification to the data (the content of the '''str''' string) will be ignored.<br />
<br />
===Overload "<<" and ">>" operators===<br />
==== operator>> ====<br />
Console& operator>>(Console& cn, int& ch);<br />
Get a key from keyboard using ''cn'' and store it in ''ch'';<br />
==== operator<< ====<br />
Console& operator<<(Console& cn, char ch);<br />
Print the character ''ch'' on the screen, where the cursor is located, using cn and return the cn reference;<br />
Console& operator<<(Console& cn, const char* str);<br />
print the string '''str''' on the screen where the cursor is using '''cn''' and return the cn reference<br />
<br />
<br />
=Submission=<br />
==Common Submission mistakes==<br />
<!--* Submitting the assignment with old version of cui_text.o<br />
*: ''Make sure you copy the latest version (currently 0.94.1) from my account : $cp ~fardad.soleimanloo/cio_test.o<br />
* Using tab character''<br />
*: ''As mentioned in class using tab character in your text editor makes the indentation of your code different in different editors, please make sure before submission you go to the settings of your development environment and make sure it uses spaces instead of tab character.'' --><br />
==Tester Demo==<br />
<!--To see how tester runs, you can run on Matrix (only use putty with the setting stated at [[#Notes|Notes]]) run:<br />
<big><pre><br />
$ ~fardad.soleimanloo/cui_test<br />
</pre></big> --><br />
<br />
==How to Compile==<br />
Compile and test your code with the test-main, in the following command-line environments and visual studio.<br />
<br />
Local PC: Borland 5.5 <br />
bcc32 bconsole.cpp console.cpp cui_test.cpp<br />
<br />
Local Mac: (use -lcurses to link curses library)<br />
c++ bconsole.cpp console.cpp cui_test.cpp -lcurses -Wno-write-strings<br />
<br />
matrix: GNU (use -lncurses to link ncurses library)<br />
g++ bconsole.cpp console.cpp cui_test.cpp -lncurses -Wno-write-strings<br />
<br />
Local PC: Visual Studio.net<br />
=== Tester Program ===<br />
*Tester program is at git://github.com/Seneca-OOP344/20132notes.git (Notes repository) in '''TesterPrograms''' directory.<br />
*repo path:<br/><br />
*:[https://github.com/Seneca-OOP344/20132notes.git 20132notes]/TesterPrograms/cui_test.cpp<br />
<br />
==How to submit==<br />
<!--For submission purposes, your solution must compile, link, and run without errors in each environment. <br />
<br />
First pull the changes of the two files bconsole.cpp and bconsole.h to version 1.02 (Feb 1, 2013) from the console directory in notes repository of your section.<br />
<br />
Test your program with cio_test.cpp from the same console directory stated above. When your program passed all the tests; on matrix, create a directory and copy all the source files (console.cpp, console.h, bconsole.cpp, bconsole.h) into it. Then copy cio_test.o '<big>''''V 0.94.1'''''</big> from "~fardad.soleimanloo" and then compile your code with your professors version of cio_test (i.e cio_test.o) and run it. If all the tests are passed successfully, an email will be sent to your professor automatically with your source code (console.h and console.cpp) attached to it.<br />
<br />
to copy the cio_test.o do the following.<br /><br />
From the directory containing all source files:<br />
$cp ~fardad.soleimanloo/cio_test.o .<br />
to compile the code:<br />
$g++ bconsole.cpp console.cpp cio_test.o -lncurses<br />
This should not generate any warnings.<br /><br />
To run the test (with automatic submission)<br />
$ a.out your_student_number Your Full Name as on Student Card <ENTER><br />
Example:<br />
$ a.out 012345678 Home Jay Simpson <ENTER> --><br />
== Tasks Distribution Suggestion==<br />
=== Team of 3 ===<br />
* Programmer 1<br />
*# Tab<br />
*# Character Entry<br />
*## Overstrike <br />
*## Insert Mode<br />
* Programmer 2<br />
*# Intial Corrections <br />
*# Home<br />
*# End<br />
*# Escape<br />
*# Right<br />
*# Left<br />
*# Enter<br />
* Programmer 3<br />
*# BackSpace<br />
*# Del<br />
*# InTextEditor and ReadOnly<br />
*# Function keys<br />
*# operator>> int&<br />
*# operator<< char<br />
*# operator<< char*<br />
*# Insert<br />
<br />
=== Team of 4 ===<br />
* Programmer 1<br />
*# Character Entry<br />
*## Overstrike<br />
*## Insert Mode<br />
*# End<br />
*# Enter<br />
* Programmer 2<br />
*# Tab<br />
*# Home<br />
*# operator>> int& <br />
*# operator<< char <br />
*# operator<< char* <br />
* Programmer 3<br />
*# BackSpace<br />
*# Right<br />
*# Del<br />
*# Function keys<br />
* Programmer 4<br />
*# Intial Corrections<br />
*# IsTextEditor and ReadOnly <br />
*# Escape<br />
*# Left<br />
*# Insert<br />
<br />
<br />
<!--<br />
Tab: 23<br />
Function keys: 1<br />
Overstrike: 15<br />
operator>> int& 3<br />
operator<< char 3<br />
operator<< char* 4<br />
Insert: 1<br />
<br />
<br />
Intial Corrections: 18 <br />
Home: 4<br />
End: 7<br />
Escape: 5<br />
Right: 10<br />
Left: 4<br />
Enter: 1<br />
<br />
BackSpace: 23<br />
Del: 3<br />
Insert Mode: 14<br />
IsTextEditor and ReadOnly 10<br />
<br />
--></div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Project_R0.1_20132-_OOP344&diff=96865Project R0.1 20132- OOP3442013-06-17T21:21:43Z<p>Brad Stuart: /* Help Needed */</p>
<hr />
<div>{{OOP344 Index | 20131}}<br />
<br />
=Release=<br />
* 0.1<br />
=Notes=<br />
* Using Matrix, from windows: please use [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe putty] only and set the keyboard to <br />
*: Backspace = Ctrl-?<br />
*: Home and End = Standard<br />
*: Function keys and keypad = Linux<br />
*: And then:<br />
*: Connection > Data > Terminal-type string = linux (This step must be done when first connecting through putty!)<br />
*:: Or if you have already connected, type in (export TERM="linux") without brackets<br />
* [https://cs.senecac.on.ca/~chris.szalwinski/resources/borland.html Guide for Using Borland 5.5]<br />
*: Note that to change the cmd.exe window size, right click on the top bar -> Properties -> Layout Tab<br />
<br />
=Due Dates=<br />
Monday June 17th.<br />
<br />
=Help=<br />
==Help Needed==<br />
* <strike>Bug(?): The insert mode in our assignment works as it is supposed to but fails the test when running the test program. Has anyone else encountered this problem, or is this an error on my side?</strike><br />
<br />
I had the same problem. Try to replace the original code '''Console::_insertMode''' by just '''insertMode'''. It works for me. Otherwise it is local I guess. So it works within your application but does not react to parameter passed to the function.<br />
<br />
Thank you. I actually solved it by making insertMode=Console::_insertMode.<br />
<br />
==Blog Posts==<br />
=Learning Outcome=<br />
Upon successful completion of this first assignment, you will have demonstrated the abilities to design and code<br />
* functions that use the basic console input and output library<br />
* a line editor<br />
* use of extern<br />
* operator overload<br />
* use of namespaces<br />
=Console Line Editing Facility =<br />
As your first assignment, you are to upgrade the basic console input output class (BConsole) to include line-display and line-editing facilities and use of "<<" and ">>" operators for character I/O and string output. <br />
<br />
==Specifications==<br />
<br />
Your submission consists of a class called Console that is to be inherited from BConsole in a namespace called '''cui'''. Your application module is fully portable across Borland C++5.5 on windows, Linux GNU C++, Viusual C++ on Windows and Mac C++ platforms which accepts console input, and provides console output through the set of facilities available in your Console module. <br />
<br />
The name of the library object to be created is console. The header file for the original version of this module is console.h and the implementation file for the original version is console.cpp. All of the identifiers for the library module and all upgrades to the module are defined in the cui namespace (short for console input output).<br />
<br />
Your upgrade in this assignment consists of creating a class called Console, inherited from BConsole, implemented in two files; console.h and console.cpp:<br />
<br />
In addition to all public methods of BConsole, Console must have the following two public methods and overload "<<" and ">>" operators.<br />
===external links===<br />
* instantiate Console, in an object called "console" in cui namespace and create an external linkage to in console.h<br />
===strdsp() method===<br />
void display(const char* str, int row, int col, int fieldLen=0, int curpos = -1); <br />
<br />
This method outputs the C-style, null-terminated string pointed to by str starting at row "row" and column "col" of the screen in a field of fieldLen characters(Row value 0 refers to the top row, and column value 0 refers to the left-most column) and positions the cursor at "curpos" location relative to "col", only if it is greater or equal to zero.<br />
<br />
If the string is longer than fieldLen, your function displays the first fieldLen characters. If the string is shorter than fieldLen, your function displays the entire string, followed by enough trailing spaces to fill out the field completely. <br />
<br />
If fieldLen is 0, your function displays the entire string with no trailing spaces.<br />
<br />
Your function positions the cursor after the last character displayed if curpos is less than zero otherwise it positions the cursor at "curpos" location relative to "col". The results are undefined if the starting position of the string is not within the dimensions of the screen.<br />
<br />
===lineedit() method===<br />
<br />
<big><pre><br />
int lineedit(char *str, int row, int col, int fieldLength, int maxStrLength, <br />
int* strOffset=_stroff, int* curPosition=_curpos, <br />
bool InTextEditor = false, bool ReadOnly = false, bool& insertMode=_insertMode );<br />
</pre></big><br />
<br />
This method is to be written in two steps. <br />
====Step one==== <br />
''Ignore the two arguments '''(InTextEditor and ReadOnly)''' for now write the method as follows:''<br />
<br />
This method edits the C-style, null-terminated string pointed by str. The parameter row holds the row (0 is the top row) of the string on the screen. The parameter col holds the starting column (0 is the left-most column) on the screen. The parameter fieldLength holds the length of the editable field. The string may be larger than the field itself, in which case part of the string is hidden from view. The parameter maxStrLength holds the maximum length of the string, excluding the null byte. The parameter insertMode points to a bool variable that holds the current insert mode of the string. The parameter insertMode receives the address of a variable that stores the current editing mode - insert or overwrite. The parameter strOffset points to an int variable that holds the initial offset of the string within the field; that is, the index of the character in the string that initially occupies the first character position in the field. The parameter curPosition points to an int variable that holds the initial cursor position within the field; that is, the index of the character in the field at which the cursor is initially placed. <br />
* '''''Initial Corrections'''''<br />
*:If the initial offset is beyond the end of the string, your function resets the offset to the length of the string; that is, to the index of the character immediately beyond the end of the string. If no offset variable is pointed to; that is, if the address of the variable is NULL, your function sets the offset to the index of the first character in the string; that is, to 0. (to do this have a local variable for the offset that holds zero to be pointed instead of an external variable)<br />
*:If the initial cursor position is beyond the end of the field, your function resets the position to the last character in the field. If the position is beyond the end of the string, your function resets the position to that immediately beyond the end of the string. If no cursor position variable is pointed to; that is, if the address of the variable is NULL, your function sets the cursor position to the first position in the field; that is, to position 0.(like the offset, to do this have a local variable for the cursor position that holds zero to be pointed instead of an external variable)<br />
<br />
Your function does not allow the cursor to move before the start of the field or past the end of the field. If the field ends at the right edge of the screen, your function does not allow the cursor to the right of that edge.<br />
<br />
Your function uses the symbolic names for non-ASCII and special keys defined in the keys.h header file. These names are the same symbolic names as those used in the original library module.<br />
<br />
The user terminates editing by pressing ENTER, ESCAPE, TAB, UP, DOWN, PGUP, PGDN or any of the function keys F(1) through F(12) inclusive. If the user presses ESCAPE, your function aborts editing, replaces the contents of the string with the original contents upon entry into your function, and leaves the offset and cursor position values unaltered. In order to be able to revert to the original string, your function needs to allocate memory at run time. <br />
<br />
At termination, your function passes back through the same int variables the current values of the offset and the cursor position, unless no variables were pointed to upon entry into your function; that is, unless the value of either address was NULL.<br />
<br />
Your function returns an int identifying the key that the user pressed to exit the function. <br />
<br />
Your function takes no action (other than perhaps beeping) if the user tries to enter too many characters (if, for example, the string is full in insert mode, or the cursor is positioned after the last character of a full string in overstrike mode).<br />
<br />
Your function handles the non-ASCII keys as follows<br />
<br />
*LEFT - moves the cursor left one character, if possible, changing the offset, if necessary.<br />
*RIGHT - moves the cursor right one character, if possible, changing the offset, if necessary.<br />
*HOME - moves the cursor to the beginning of the string, changing the offset, if necessary.<br />
*END - moves the cursor to the position to the right of the last character in the string, changing the offset, if necessary. <strike> If the last character is at the edge of the screen, moves the cursor to that character.</strike><br />
*INSERT - toggles Insert/Overstrike mode. In Insert mode, your function inserts a printable character into the string at the current cursor position, moves the remainder of the string to the right to make room for the inserted character, and positions the cursor just to the right of the inserted character. The printable characters are the characters from space (' ') to tilde ('~') inclusive in the ASCII table. In Overstrike mode, your function overwrites the character (if any) at the current cursor position with a printable character and advances the cursor just to the right of the new character. If the cursor is past the end of the string, your function appends a printable character to the string as long as the string isn't full, regardless of the mode. <br />
*DEL - discards the character at the current cursor position and moves all characters to the right of the cursor position one position to the left.<br />
*BACKSPACE - discards the character to the left of the current cursor position, if possible, moves the characters at and to the right of the cursor position one position to the left, if possible, and positions the cursor one character to the left, if possible.<br />
<br />
edit() always displays blanks in any part of the field that is not occupied by the string. UNDER NO CIRCUMSTANCES DOES YOUR FUNCTION CHANGE ANY POSITION ON THE SCREEN OUTSIDE THE FIELD. For example, your function does not display status information (such as "INS" or "OVR") elsewhere on the screen, since such displays limit the programmer's ability to design their own screen layouts.<br />
<br />
You may assume that it is the calling program's responsibility to ensure that the string array is large enough to handle maxStrLength characters and that the starting screen position provides enough room (on the screen) for the field, etc.<br />
<br />
{| class="wikitable" border="0"<br />
|+ <br />
! Edit Method!! Interface<br />
|-<br />
| [[File:editString.png|500px|thumb|center|Edit Method Function Diagram]] || <br />
[[File:interface.png|400px|thumb|center|Interface Diagram]]<br />
|}<br />
<br />
====Step two====<br />
''First run your program with cui_test.cpp and make sure it passes all the tests up to and including "4.16". If all tests are passed continue with step two:<br />
<br />
=====InTextEditor=====<br />
If '''InTextEditor''' is true and the value of '''*strOffset''' is changed at any time, then terminate the edit function immediately and return '''0''';<br />
======TAB key======<br />
If '''InTextEditor''' is true and TAB key is hit, then instead of terminating the function, ''Console::_tabsize'' spaces are inserted into ''str''.<br />
<br />
=====ReadOnly=====<br />
If '''ReadOnly''' is true, then edit function works exactly like before, except that any modification to the data (the content of the '''str''' string) will be ignored.<br />
<br />
===Overload "<<" and ">>" operators===<br />
==== operator>> ====<br />
Console& operator>>(Console& cn, int& ch);<br />
Get a key from keyboard using ''cn'' and store it in ''ch'';<br />
==== operator<< ====<br />
Console& operator<<(Console& cn, char ch);<br />
Print the character ''ch'' on the screen, where the cursor is located, using cn and return the cn reference;<br />
Console& operator<<(Console& cn, const char* str);<br />
print the string '''str''' on the screen where the cursor is using '''cn''' and return the cn reference<br />
<br />
<br />
=Submission=<br />
==Common Submission mistakes==<br />
<!--* Submitting the assignment with old version of cui_text.o<br />
*: ''Make sure you copy the latest version (currently 0.94.1) from my account : $cp ~fardad.soleimanloo/cio_test.o<br />
* Using tab character''<br />
*: ''As mentioned in class using tab character in your text editor makes the indentation of your code different in different editors, please make sure before submission you go to the settings of your development environment and make sure it uses spaces instead of tab character.'' --><br />
==Tester Demo==<br />
<!--To see how tester runs, you can run on Matrix (only use putty with the setting stated at [[#Notes|Notes]]) run:<br />
<big><pre><br />
$ ~fardad.soleimanloo/cui_test<br />
</pre></big> --><br />
<br />
==How to Compile==<br />
Compile and test your code with the test-main, in the following command-line environments and visual studio.<br />
<br />
Local PC: Borland 5.5 <br />
bcc32 bconsole.cpp console.cpp cui_test.cpp<br />
<br />
Local Mac: (use -lcurses to link curses library)<br />
c++ bconsole.cpp console.cpp cui_test.cpp -lcurses -Wno-write-strings<br />
<br />
matrix: GNU (use -lncurses to link ncurses library)<br />
g++ bconsole.cpp console.cpp cui_test.cpp -lncurses -Wno-write-strings<br />
<br />
Local PC: Visual Studio.net<br />
=== Tester Program ===<br />
*Tester program is at git://github.com/Seneca-OOP344/20132notes.git (Notes repository) in '''TesterPrograms''' directory.<br />
*repo path:<br/><br />
*:[https://github.com/Seneca-OOP344/20132notes.git 20132notes]/TesterPrograms/cui_test.cpp<br />
<br />
==How to submit==<br />
<!--For submission purposes, your solution must compile, link, and run without errors in each environment. <br />
<br />
First pull the changes of the two files bconsole.cpp and bconsole.h to version 1.02 (Feb 1, 2013) from the console directory in notes repository of your section.<br />
<br />
Test your program with cio_test.cpp from the same console directory stated above. When your program passed all the tests; on matrix, create a directory and copy all the source files (console.cpp, console.h, bconsole.cpp, bconsole.h) into it. Then copy cio_test.o '<big>''''V 0.94.1'''''</big> from "~fardad.soleimanloo" and then compile your code with your professors version of cio_test (i.e cio_test.o) and run it. If all the tests are passed successfully, an email will be sent to your professor automatically with your source code (console.h and console.cpp) attached to it.<br />
<br />
to copy the cio_test.o do the following.<br /><br />
From the directory containing all source files:<br />
$cp ~fardad.soleimanloo/cio_test.o .<br />
to compile the code:<br />
$g++ bconsole.cpp console.cpp cio_test.o -lncurses<br />
This should not generate any warnings.<br /><br />
To run the test (with automatic submission)<br />
$ a.out your_student_number Your Full Name as on Student Card <ENTER><br />
Example:<br />
$ a.out 012345678 Home Jay Simpson <ENTER> --><br />
== Tasks Distribution Suggestion==<br />
=== Team of 3 ===<br />
* Programmer 1<br />
*# Tab<br />
*# Character Entry<br />
*## Overstrike <br />
*## Insert Mode<br />
* Programmer 2<br />
*# Intial Corrections <br />
*# Home<br />
*# End<br />
*# Escape<br />
*# Right<br />
*# Left<br />
*# Enter<br />
* Programmer 3<br />
*# BackSpace<br />
*# Del<br />
*# InTextEditor and ReadOnly<br />
*# Function keys<br />
*# operator>> int&<br />
*# operator<< char<br />
*# operator<< char*<br />
*# Insert<br />
<br />
=== Team of 4 ===<br />
* Programmer 1<br />
*# Character Entry<br />
*## Overstrike<br />
*## Insert Mode<br />
*# End<br />
*# Enter<br />
* Programmer 2<br />
*# Tab<br />
*# Home<br />
*# operator>> int& <br />
*# operator<< char <br />
*# operator<< char* <br />
* Programmer 3<br />
*# BackSpace<br />
*# Right<br />
*# Del<br />
*# Function keys<br />
* Programmer 4<br />
*# Intial Corrections<br />
*# IsTextEditor and ReadOnly <br />
*# Escape<br />
*# Left<br />
*# Insert<br />
<br />
<br />
<!--<br />
Tab: 23<br />
Function keys: 1<br />
Overstrike: 15<br />
operator>> int& 3<br />
operator<< char 3<br />
operator<< char* 4<br />
Insert: 1<br />
<br />
<br />
Intial Corrections: 18 <br />
Home: 4<br />
End: 7<br />
Escape: 5<br />
Right: 10<br />
Left: 4<br />
Enter: 1<br />
<br />
BackSpace: 23<br />
Del: 3<br />
Insert Mode: 14<br />
IsTextEditor and ReadOnly 10<br />
<br />
--></div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Project_R0.1_20132-_OOP344&diff=96829Project R0.1 20132- OOP3442013-06-17T18:22:34Z<p>Brad Stuart: /* Help Needed */</p>
<hr />
<div>{{OOP344 Index | 20131}}<br />
<br />
=Release=<br />
* 0.1<br />
=Notes=<br />
=Due Dates=<br />
Monday June 17th.<br />
<br />
=Help=<br />
==Help Needed==<br />
* Bug(?): The insert mode in our assignment works as it is supposed to but fails the test when running the test program. Has anyone else encountered this problem, or is this an error on my side?<br />
<br />
==Blog Posts==<br />
=Learning Outcome=<br />
Upon successful completion of this first assignment, you will have demonstrated the abilities to design and code<br />
* functions that use the basic console input and output library<br />
* a line editor<br />
* use of extern<br />
* operator overload<br />
* use of namespaces<br />
=Console Line Editing Facility =<br />
As your first assignment, you are to upgrade the basic console input output class (BConsole) to include line-display and line-editing facilities and use of "<<" and ">>" operators for character I/O and string output. <br />
<br />
==Specifications==<br />
<br />
Your submission consists of a class called Console that is to be inherited from BConsole in a namespace called '''cui'''. Your application module is fully portable across Borland C++5.5 on windows, Linux GNU C++, Viusual C++ on Windows and Mac C++ platforms which accepts console input, and provides console output through the set of facilities available in your Console module. <br />
<br />
The name of the library object to be created is console. The header file for the original version of this module is console.h and the implementation file for the original version is console.cpp. All of the identifiers for the library module and all upgrades to the module are defined in the cui namespace (short for console input output).<br />
<br />
Your upgrade in this assignment consists of creating a class called Console, inherited from BConsole, implemented in two files; console.h and console.cpp:<br />
<br />
In addition to all public methods of BConsole, Console must have the following two public methods and overload "<<" and ">>" operators.<br />
===external links===<br />
* instantiate Console, in an object called "console" in cui namespace and create an external linkage to in console.h<br />
===strdsp() method===<br />
void display(const char* str, int row, int col, int fieldLen=0, int curpos = -1); <br />
<br />
This method outputs the C-style, null-terminated string pointed to by str starting at row "row" and column "col" of the screen in a field of fieldLen characters(Row value 0 refers to the top row, and column value 0 refers to the left-most column) and positions the cursor at "curpos" location relative to "col", only if it is greater or equal to zero.<br />
<br />
If the string is longer than fieldLen, your function displays the first fieldLen characters. If the string is shorter than fieldLen, your function displays the entire string, followed by enough trailing spaces to fill out the field completely. <br />
<br />
If fieldLen is 0, your function displays the entire string with no trailing spaces.<br />
<br />
Your function positions the cursor after the last character displayed if curpos is less than zero otherwise it positions the cursor at "curpos" location relative to "col". The results are undefined if the starting position of the string is not within the dimensions of the screen.<br />
<br />
===lineedit() method===<br />
<br />
<big><pre><br />
int lineedit(char *str, int row, int col, int fieldLength, int maxStrLength, <br />
int* strOffset=_stroff, int* curPosition=_curpos, <br />
bool InTextEditor = false, bool ReadOnly = false, bool& insertMode=_insertMode );<br />
</pre></big><br />
<br />
This method is to be written in two steps. <br />
====Step one==== <br />
''Ignore the two arguments '''(InTextEditor and ReadOnly)''' for now write the method as follows:''<br />
<br />
This method edits the C-style, null-terminated string pointed by str. The parameter row holds the row (0 is the top row) of the string on the screen. The parameter col holds the starting column (0 is the left-most column) on the screen. The parameter fieldLength holds the length of the editable field. The string may be larger than the field itself, in which case part of the string is hidden from view. The parameter maxStrLength holds the maximum length of the string, excluding the null byte. The parameter insertMode points to a bool variable that holds the current insert mode of the string. The parameter insertMode receives the address of a variable that stores the current editing mode - insert or overwrite. The parameter strOffset points to an int variable that holds the initial offset of the string within the field; that is, the index of the character in the string that initially occupies the first character position in the field. The parameter curPosition points to an int variable that holds the initial cursor position within the field; that is, the index of the character in the field at which the cursor is initially placed. <br />
* '''''Initial Corrections'''''<br />
*:If the initial offset is beyond the end of the string, your function resets the offset to the length of the string; that is, to the index of the character immediately beyond the end of the string. If no offset variable is pointed to; that is, if the address of the variable is NULL, your function sets the offset to the index of the first character in the string; that is, to 0. (to do this have a local variable for the offset that holds zero to be pointed instead of an external variable)<br />
*:If the initial cursor position is beyond the end of the field, your function resets the position to the last character in the field. If the position is beyond the end of the string, your function resets the position to that immediately beyond the end of the string. If no cursor position variable is pointed to; that is, if the address of the variable is NULL, your function sets the cursor position to the first position in the field; that is, to position 0.(like the offset, to do this have a local variable for the cursor position that holds zero to be pointed instead of an external variable)<br />
<br />
Your function does not allow the cursor to move before the start of the field or past the end of the field. If the field ends at the right edge of the screen, your function does not allow the cursor to the right of that edge.<br />
<br />
Your function uses the symbolic names for non-ASCII and special keys defined in the keys.h header file. These names are the same symbolic names as those used in the original library module.<br />
<br />
The user terminates editing by pressing ENTER, ESCAPE, TAB, UP, DOWN, PGUP, PGDN or any of the function keys F(1) through F(12) inclusive. If the user presses ESCAPE, your function aborts editing, replaces the contents of the string with the original contents upon entry into your function, and leaves the offset and cursor position values unaltered. In order to be able to revert to the original string, your function needs to allocate memory at run time. <br />
<br />
At termination, your function passes back through the same int variables the current values of the offset and the cursor position, unless no variables were pointed to upon entry into your function; that is, unless the value of either address was NULL.<br />
<br />
Your function returns an int identifying the key that the user pressed to exit the function. <br />
<br />
Your function takes no action (other than perhaps beeping) if the user tries to enter too many characters (if, for example, the string is full in insert mode, or the cursor is positioned after the last character of a full string in overstrike mode).<br />
<br />
Your function handles the non-ASCII keys as follows<br />
<br />
*LEFT - moves the cursor left one character, if possible, changing the offset, if necessary.<br />
*RIGHT - moves the cursor right one character, if possible, changing the offset, if necessary.<br />
*HOME - moves the cursor to the beginning of the string, changing the offset, if necessary.<br />
*END - moves the cursor to the position to the right of the last character in the string, changing the offset, if necessary. If the last character is at the edge of the screen, moves the cursor to that character.<br />
*INSERT - toggles Insert/Overstrike mode. In Insert mode, your function inserts a printable character into the string at the current cursor position, moves the remainder of the string to the right to make room for the inserted character, and positions the cursor just to the right of the inserted character. The printable characters are the characters from space (' ') to tilde ('~') inclusive in the ASCII table. In Overstrike mode, your function overwrites the character (if any) at the current cursor position with a printable character and advances the cursor just to the right of the new character. If the cursor is past the end of the string, your function appends a printable character to the string as long as the string isn't full, regardless of the mode. <br />
*DEL - discards the character at the current cursor position and moves all characters to the right of the cursor position one position to the left.<br />
*BACKSPACE - discards the character to the left of the current cursor position, if possible, moves the characters at and to the right of the cursor position one position to the left, if possible, and positions the cursor one character to the left, if possible.<br />
<br />
edit() always displays blanks in any part of the field that is not occupied by the string. UNDER NO CIRCUMSTANCES DOES YOUR FUNCTION CHANGE ANY POSITION ON THE SCREEN OUTSIDE THE FIELD. For example, your function does not display status information (such as "INS" or "OVR") elsewhere on the screen, since such displays limit the programmer's ability to design their own screen layouts.<br />
<br />
You may assume that it is the calling program's responsibility to ensure that the string array is large enough to handle maxStrLength characters and that the starting screen position provides enough room (on the screen) for the field, etc.<br />
<br />
{| class="wikitable" border="0"<br />
|+ <br />
! Edit Method!! Interface<br />
|-<br />
| [[File:editString.png|500px|thumb|center|Edit Method Function Diagram]] || <br />
[[File:interface.png|400px|thumb|center|Interface Diagram]]<br />
|}<br />
<br />
====Step two====<br />
''First run your program with cui_test.cpp and make sure it passes all the tests up to and including "4.16". If all tests are passed continue with step two:<br />
<br />
=====InTextEditor=====<br />
If '''InTextEditor''' is true and the value of '''*strOffset''' is changed at any time, then terminate the edit function immediately and return '''0''';<br />
======TAB key======<br />
If '''InTextEditor''' is true and TAB key is hit, then instead of terminating the function, ''Console::_tabsize'' spaces are inserted into ''str''.<br />
<br />
=====ReadOnly=====<br />
If '''ReadOnly''' is true, then edit function works exactly like before, except that any modification to the data (the content of the '''str''' string) will be ignored.<br />
<br />
===Overload "<<" and ">>" operators===<br />
==== operator>> ====<br />
Console& operator>>(Console& cn, int& ch);<br />
Get a key from keyboard using ''cn'' and store it in ''ch'';<br />
==== operator<< ====<br />
Console& operator<<(Console& cn, char ch);<br />
Print the character ''ch'' on the screen, where the cursor is located, using cn and return the cn reference;<br />
Console& operator<<(Console& cn, const char* str);<br />
print the string '''str''' on the screen where the cursor is using '''cn''' and return the cn reference<br />
<br />
<br />
=Submission=<br />
==Common Submission mistakes==<br />
<!--* Submitting the assignment with old version of cui_text.o<br />
*: ''Make sure you copy the latest version (currently 0.94.1) from my account : $cp ~fardad.soleimanloo/cio_test.o<br />
* Using tab character''<br />
*: ''As mentioned in class using tab character in your text editor makes the indentation of your code different in different editors, please make sure before submission you go to the settings of your development environment and make sure it uses spaces instead of tab character.'' --><br />
==Tester Demo==<br />
<!--To see how tester runs, you can run on Matrix (only use putty with the setting stated at [[#Notes|Notes]]) run:<br />
<big><pre><br />
$ ~fardad.soleimanloo/cui_test<br />
</pre></big> --><br />
<br />
==How to Compile==<br />
Compile and test your code with the test-main, in the following command-line environments and visual studio.<br />
<br />
Local PC: Borland 5.5 <br />
bcc32 bconsole.cpp console.cpp cui_test.cpp<br />
<br />
Local Mac: (use -lcurses to link curses library)<br />
c++ bconsole.cpp console.cpp cui_test.cpp -lcurses -Wno-write-strings<br />
<br />
matrix: GNU (use -lncurses to link ncurses library)<br />
g++ bconsole.cpp console.cpp cui_test.cpp -lncurses -Wno-write-strings<br />
<br />
Local PC: Visual Studio.net<br />
=== Tester Program ===<br />
*Tester program is at git://github.com/Seneca-OOP344/20132notes.git (Notes repository) in '''TesterPrograms''' directory.<br />
*repo path:<br/><br />
*:[https://github.com/Seneca-OOP344/20132notes.git 20132notes]/TesterPrograms/cui_test.cpp<br />
<br />
==How to submit==<br />
<!--For submission purposes, your solution must compile, link, and run without errors in each environment. <br />
<br />
First pull the changes of the two files bconsole.cpp and bconsole.h to version 1.02 (Feb 1, 2013) from the console directory in notes repository of your section.<br />
<br />
Test your program with cio_test.cpp from the same console directory stated above. When your program passed all the tests; on matrix, create a directory and copy all the source files (console.cpp, console.h, bconsole.cpp, bconsole.h) into it. Then copy cio_test.o '<big>''''V 0.94.1'''''</big> from "~fardad.soleimanloo" and then compile your code with your professors version of cio_test (i.e cio_test.o) and run it. If all the tests are passed successfully, an email will be sent to your professor automatically with your source code (console.h and console.cpp) attached to it.<br />
<br />
to copy the cio_test.o do the following.<br /><br />
From the directory containing all source files:<br />
$cp ~fardad.soleimanloo/cio_test.o .<br />
to compile the code:<br />
$g++ bconsole.cpp console.cpp cio_test.o -lncurses<br />
This should not generate any warnings.<br /><br />
To run the test (with automatic submission)<br />
$ a.out your_student_number Your Full Name as on Student Card <ENTER><br />
Example:<br />
$ a.out 012345678 Home Jay Simpson <ENTER> --><br />
== Tasks Distribution Suggestion==<br />
=== Team of 3 ===<br />
* Programmer 1<br />
*# Tab<br />
*# Character Entry<br />
*## Overstrike <br />
*## Insert Mode<br />
* Programmer 2<br />
*# Intial Corrections <br />
*# Home<br />
*# End<br />
*# Escape<br />
*# Right<br />
*# Left<br />
*# Enter<br />
* Programmer 3<br />
*# BackSpace<br />
*# Del<br />
*# InTextEditor and ReadOnly<br />
*# Function keys<br />
*# operator>> int&<br />
*# operator<< char<br />
*# operator<< char*<br />
*# Insert<br />
<br />
=== Team of 4 ===<br />
* Programmer 1<br />
*# Character Entry<br />
*## Overstrike<br />
*## Insert Mode<br />
*# End<br />
*# Enter<br />
* Programmer 2<br />
*# Tab<br />
*# Home<br />
*# operator>> int& <br />
*# operator<< char <br />
*# operator<< char* <br />
* Programmer 3<br />
*# BackSpace<br />
*# Right<br />
*# Del<br />
*# Function keys<br />
* Programmer 4<br />
*# Intial Corrections<br />
*# IsTextEditor and ReadOnly <br />
*# Escape<br />
*# Left<br />
*# Insert<br />
<br />
<br />
<!--<br />
Tab: 23<br />
Function keys: 1<br />
Overstrike: 15<br />
operator>> int& 3<br />
operator<< char 3<br />
operator<< char* 4<br />
Insert: 1<br />
<br />
<br />
Intial Corrections: 18 <br />
Home: 4<br />
End: 7<br />
Escape: 5<br />
Right: 10<br />
Left: 4<br />
Enter: 1<br />
<br />
BackSpace: 23<br />
Del: 3<br />
Insert Mode: 14<br />
IsTextEditor and ReadOnly 10<br />
<br />
--></div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Student_List_20132_-_OOP344&diff=96362Student List 20132 - OOP3442013-06-13T18:51:12Z<p>Brad Stuart: /* OOP344 Student List for Summer of 2013 */</p>
<hr />
<div>{{OOP344 Index | 20132}}<br />
<br />
== OOP344 Student List for Summer of 2013 ==<br />
<br />
Make sure you have the following done before you add your name here:<br />
<br />
* You have a registered name for IRC; irc.freenode.net server.<br />
* You have a blog for OOP344 either by filtering your posts or a dedicated blog.<br />
<br />
Please add your information to the student list table below by adding the following row to the table (if you are a student in oop344, summer of 2013).<br /><br />
<big><pre>|-<br />
|[[User:WUN|FN]]||LN||[[TPN|TN]]||SEC||[mailto:UserId@myseneca.ca?subject=oop344 LID]||[[Special:Contributions/WUN|WUN]]||IN||GH|| [http://BURL BN]<br />
</pre></big><br />
<br />
Replace the following with your own information when adding the row to the table: <br /><br />
* WUN: Your Wiki User name<br />
* FN: Your First Name<br />
* LN: Your Last Name<br />
* TPN: Your Team Page Name on wiki (Your team page is already created, please see [[Teams' List 20132 - OOP344]])<br />
* TN: Your Team name<br />
* SEC: Your OOP344 Section (example: A, B or C)<br />
* LID: Your seneca email ID (learn id)<br />
* IN: Your IRC '''Registered''' Nickname<br />
* GH: Your GitHub ID<br />
* BURL: Your Blog URL<br />
* BN: Your Blog Title<br />
<br />
Do Not add your row unless you have all the above information.<br />
<br />
If your information is not added to the following line, your work and assignments will not be marked.<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
|+ OOP344 - Winter of 2013 student list<br />
! First Name !! Last Name !! Team Name !! Section !! Seneca Id !! wiki id !! IRC nick !! GITHUB ID !! Blog URL<br />
<br />
|-<br />
|[[User:WUN|FN]]||LN||[[TPN|TN]]||SEC||[mailto:UserId@myseneca.ca?subject=oop344 LID]||[[Special:Contributions/WUN|WUN]]||IN||GH||[http://BURL BN]<br />
<br />
|-<br />
|[[User:Ji Jungmin|Jungmin]]||Ji||[[Team I - OOP344 - 20132|Team I]]||A||[mailto:jjungmin@myseneca.ca?subject=oop344 jjungmin]||[[Special:Contributions/Ji Jungmin|Ji Jungmin]]||MistySnake||jungminji|| [http://jungmin-ji.tumblr.com/ WAKE UP]<br />
<br />
|-<br />
|[[User:Shehzin_Arshad|Shehzin]]||Arshad||[[Team B - OOP344 - 20132|Team B]]||A||[mailto:sarshad5@myseneca.ca?subject=oop344 sarshad5]||[[Special:Contributions/Shehzin_Arshad|Shehzin]]||shahzyn||shahzyn|| [http://shahzyn.blogspot.ca/ tinker]<br />
<br />
|-<br />
|[[User:Michael_Allison|Michael]]||Allison||[[Team E - OOP344 - 20132|Team E]]||A||[mailto:malliso1@myseneca.ca?subject=oop344 malliso1]||[[Special:Contributions/Michael_Allison|Michael]]||malliso1||malliso1||[http://malliso1.wordpress.com Mike's Blog]<br />
<br />
|-<br />
|[[User:Vadim_Namniak|Vadim]]||Namniak||[[Team E - OOP344 - 20132|Team E]]||B||[mailto:vnamnyak@myseneca.ca?subject=oop344 vnamnyak]||[[Special:Contributions/Vadim Namniak|Vadim]]||VadimNamniak||namniak||[http://namniak.blogspot.ca Vadim's Blog]<br />
<br />
|-<br />
|[[User:Aaron_Salud|Aaron]]||Salud||[[Team A - OOP344 - 20132|Team A]]||A||[mailto:asalud@myseneca.ca?subject=oop344 asalud]||[[Special:Contributions/Aaron Salud|Aaron]]||||AaronSalud||[http://aaronsalud.wordpress.com Aaron's Blog]<br />
<br />
|-<br />
|[[User:Philip Lau|Philip]]||Lau||[[Team C - OOP344 - 20132|Team C]]||A||[mailto:plau7@myseneca.ca?subject=oop344 plau7]||[[Special:Contributions/Philip_Lau|Philip]]||PLau||PLau7||[http://xplaux.wordpress.com/ Philip's Blog]<br />
<br />
|-<br />
|[[User:Brad Stuart|Brad]]||Stuart||[[Team I - OOP344 - 20132|Team I]]||B||[mailto:bstuart1@myseneca.ca?subject=oop344 bstuart1]||[[Special:Contributions/Brad Stuart|Brad]]||LesterNormal||BradStuart||[http://brackethunter.blogspot.ca/ Brad's Blog]</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Team_I_-_OOP344_-_20132&diff=96360Team I - OOP344 - 201322013-06-13T18:46:13Z<p>Brad Stuart: /* Team Members */</p>
<hr />
<div>'''''Modify this page to the needs of your team.'''''<br />
{{OOP344 Index | 20132}}<br />
== Repository ==<br />
* Github: https://github.com/Seneca-OOP344/whatever<br />
=== Master Status ===<br />
* Master ('''last pushed/being pushed''') by ''Team Member name''<br />
== Announcements ==<br />
Jungmin Ji - Programmer2 tasks are done. Please review and let me know if there are errors.<br />
<br />
== Programming Style ==<br />
=== Indentation===<br />
* 2 spaces for indentation<br />
* Do not use tab character<br />
=== Blocks ===<br />
<syntaxhighlight lang="cpp"><br />
if(condition){<br />
whatever;<br />
}</syntaxhighlight><br />
=== Variable Naming ===<br />
<syntaxhighlight lang="cpp"><br />
int main()<br />
{<br />
int a = 1;<br />
char* bookNames;<br />
char bookId<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
== Team Members ==<br />
'''''Add table rows by replacing sample table row, cell values with yours'''''<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
|+ OOP344 - Team name<br />
! First Name !! Last Name !! Section !! Seneca Id & email !! wiki id !! IRC nick !! GITHUB ID !! Blog URL<br />
|-<br />
|[[User:Ji Jungmin | Jungmin]]|| Ji ||A||[mailto:jjungmin@myseneca.ca?subject=oop344- jjungmin]||[[Special:Contributions/Ji Jungmin|Ji Jungmin]]||Mistysnake||jungminji|| [http://jungmin-ji.tumblr.com/ WAKE UP]<br />
|-<br />
|[[User:Brad Stuart | Brad]]||Stuart||B||[mailto:bstuart!myseneca.ca?subject=opp344- bstuart1]||||LesterNormal||BradStuart||[http://brackethunter.blogspot.ca/ BracketHunter]<br />
<br />
|-<br />
<br />
|}<br />
<br />
== Discussions ==</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Team_I_-_OOP344_-_20132&diff=96358Team I - OOP344 - 201322013-06-13T18:45:46Z<p>Brad Stuart: /* Team Members */</p>
<hr />
<div>'''''Modify this page to the needs of your team.'''''<br />
{{OOP344 Index | 20132}}<br />
== Repository ==<br />
* Github: https://github.com/Seneca-OOP344/whatever<br />
=== Master Status ===<br />
* Master ('''last pushed/being pushed''') by ''Team Member name''<br />
== Announcements ==<br />
Jungmin Ji - Programmer2 tasks are done. Please review and let me know if there are errors.<br />
<br />
== Programming Style ==<br />
=== Indentation===<br />
* 2 spaces for indentation<br />
* Do not use tab character<br />
=== Blocks ===<br />
<syntaxhighlight lang="cpp"><br />
if(condition){<br />
whatever;<br />
}</syntaxhighlight><br />
=== Variable Naming ===<br />
<syntaxhighlight lang="cpp"><br />
int main()<br />
{<br />
int a = 1;<br />
char* bookNames;<br />
char bookId<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
== Team Members ==<br />
'''''Add table rows by replacing sample table row, cell values with yours'''''<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
|+ OOP344 - Team name<br />
! First Name !! Last Name !! Section !! Seneca Id & email !! wiki id !! IRC nick !! GITHUB ID !! Blog URL<br />
|-<br />
|[[User:Ji Jungmin | Jungmin]]|| Ji ||A||[mailto:jjungmin@myseneca.ca?subject=oop344- jjungmin]||[[Special:Contributions/Ji Jungmin|Ji Jungmin]]||Mistysnake||jungminji|| [http://jungmin-ji.tumblr.com/ WAKE UP]<br />
|-<br />
|[[User:Brad Stuart | Brad]]||Stuart||B||[mailto:bstuart!myseneca.ca?subject=opp344- bstuart1]||||<br />
LesterNormal||BradStuart||[http://brackethunter.blogspot.ca/ BracketHunter]<br />
<br />
|-<br />
<br />
|}<br />
<br />
== Discussions ==</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Team_I_-_OOP344_-_20132&diff=96356Team I - OOP344 - 201322013-06-13T18:45:26Z<p>Brad Stuart: /* Team Members */</p>
<hr />
<div>'''''Modify this page to the needs of your team.'''''<br />
{{OOP344 Index | 20132}}<br />
== Repository ==<br />
* Github: https://github.com/Seneca-OOP344/whatever<br />
=== Master Status ===<br />
* Master ('''last pushed/being pushed''') by ''Team Member name''<br />
== Announcements ==<br />
Jungmin Ji - Programmer2 tasks are done. Please review and let me know if there are errors.<br />
<br />
== Programming Style ==<br />
=== Indentation===<br />
* 2 spaces for indentation<br />
* Do not use tab character<br />
=== Blocks ===<br />
<syntaxhighlight lang="cpp"><br />
if(condition){<br />
whatever;<br />
}</syntaxhighlight><br />
=== Variable Naming ===<br />
<syntaxhighlight lang="cpp"><br />
int main()<br />
{<br />
int a = 1;<br />
char* bookNames;<br />
char bookId<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
== Team Members ==<br />
'''''Add table rows by replacing sample table row, cell values with yours'''''<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
|+ OOP344 - Team name<br />
! First Name !! Last Name !! Section !! Seneca Id & email !! wiki id !! IRC nick !! GITHUB ID !! Blog URL<br />
|-<br />
|[[User:Ji Jungmin | Jungmin]]|| Ji ||A||[mailto:jjungmin@myseneca.ca?subject=oop344- jjungmin]||[[Special:Contributions/Ji Jungmin|Ji Jungmin]]||Mistysnake||jungminji|| [http://jungmin-ji.tumblr.com/ WAKE UP]<br />
|-<br />
|[[User:Brad Stuart | Brad]]||Stuart||B||[mailto:bstuart!myseneca.ca?subject=opp344- bstuart1]||Brad Stuart||<br />
LesterNormal||BradStuart||[http://brackethunter.blogspot.ca/ BracketHunter]<br />
<br />
|-<br />
<br />
|}<br />
<br />
== Discussions ==</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Team_I_-_OOP344_-_20132&diff=96351Team I - OOP344 - 201322013-06-13T18:44:31Z<p>Brad Stuart: /* Team Members */</p>
<hr />
<div>'''''Modify this page to the needs of your team.'''''<br />
{{OOP344 Index | 20132}}<br />
== Repository ==<br />
* Github: https://github.com/Seneca-OOP344/whatever<br />
=== Master Status ===<br />
* Master ('''last pushed/being pushed''') by ''Team Member name''<br />
== Announcements ==<br />
Jungmin Ji - Programmer2 tasks are done. Please review and let me know if there are errors.<br />
<br />
== Programming Style ==<br />
=== Indentation===<br />
* 2 spaces for indentation<br />
* Do not use tab character<br />
=== Blocks ===<br />
<syntaxhighlight lang="cpp"><br />
if(condition){<br />
whatever;<br />
}</syntaxhighlight><br />
=== Variable Naming ===<br />
<syntaxhighlight lang="cpp"><br />
int main()<br />
{<br />
int a = 1;<br />
char* bookNames;<br />
char bookId<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
== Team Members ==<br />
'''''Add table rows by replacing sample table row, cell values with yours'''''<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
|+ OOP344 - Team name<br />
! First Name !! Last Name !! Section !! Seneca Id & email !! wiki id !! IRC nick !! GITHUB ID !! Blog URL<br />
|-<br />
|[[User:Ji Jungmin | Jungmin]]|| Ji ||A||[mailto:jjungmin@myseneca.ca?subject=oop344- jjungmin]||[[Special:Contributions/Ji Jungmin|Ji Jungmin]]||Mistysnake||jungminji|| [http://jungmin-ji.tumblr.com/ WAKE UP]<br />
|-<br />
|[[User:Brad Stuart | Brad]]||Stuart||B||[mailto:bstuart!myseneca.ca?subject=opp344- bstuart1]||<br />
[[Special:Contributions/Brad Stuart|Brad Stuart]]||<br />
LesterNormal||BradStuart||[http://brackethunter.blogspot.ca/ BracketHunter]<br />
<br />
|-<br />
<br />
|}<br />
<br />
== Discussions ==</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Team_I_-_OOP344_-_20132&diff=96347Team I - OOP344 - 201322013-06-13T18:43:50Z<p>Brad Stuart: /* Team Members */</p>
<hr />
<div>'''''Modify this page to the needs of your team.'''''<br />
{{OOP344 Index | 20132}}<br />
== Repository ==<br />
* Github: https://github.com/Seneca-OOP344/whatever<br />
=== Master Status ===<br />
* Master ('''last pushed/being pushed''') by ''Team Member name''<br />
== Announcements ==<br />
Jungmin Ji - Programmer2 tasks are done. Please review and let me know if there are errors.<br />
<br />
== Programming Style ==<br />
=== Indentation===<br />
* 2 spaces for indentation<br />
* Do not use tab character<br />
=== Blocks ===<br />
<syntaxhighlight lang="cpp"><br />
if(condition){<br />
whatever;<br />
}</syntaxhighlight><br />
=== Variable Naming ===<br />
<syntaxhighlight lang="cpp"><br />
int main()<br />
{<br />
int a = 1;<br />
char* bookNames;<br />
char bookId<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
== Team Members ==<br />
'''''Add table rows by replacing sample table row, cell values with yours'''''<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
|+ OOP344 - Team name<br />
! First Name !! Last Name !! Section !! Seneca Id & email !! wiki id !! IRC nick !! GITHUB ID !! Blog URL<br />
|-<br />
|[[User:Ji Jungmin | Jungmin]]|| Ji ||A||[mailto:jjungmin@myseneca.ca?subject=oop344- jjungmin]||[[Special:Contributions/Ji Jungmin|Ji Jungmin]]||Mistysnake||jungminji|| [http://jungmin-ji.tumblr.com/ WAKE UP]<br />
|-<br />
|[[User:Brad Stuart | Brad]]||Stuart||B||[mailto:bstuart!myseneca.ca?subject=opp344- bstuart1]||<br />
||LesterNormal||BradStuart||[http://brackethunter.blogspot.ca/ BracketHunter]<br />
<br />
|-<br />
<br />
|}<br />
<br />
== Discussions ==</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Team_I_-_OOP344_-_20132&diff=96346Team I - OOP344 - 201322013-06-13T18:43:17Z<p>Brad Stuart: /* Team Members */</p>
<hr />
<div>'''''Modify this page to the needs of your team.'''''<br />
{{OOP344 Index | 20132}}<br />
== Repository ==<br />
* Github: https://github.com/Seneca-OOP344/whatever<br />
=== Master Status ===<br />
* Master ('''last pushed/being pushed''') by ''Team Member name''<br />
== Announcements ==<br />
Jungmin Ji - Programmer2 tasks are done. Please review and let me know if there are errors.<br />
<br />
== Programming Style ==<br />
=== Indentation===<br />
* 2 spaces for indentation<br />
* Do not use tab character<br />
=== Blocks ===<br />
<syntaxhighlight lang="cpp"><br />
if(condition){<br />
whatever;<br />
}</syntaxhighlight><br />
=== Variable Naming ===<br />
<syntaxhighlight lang="cpp"><br />
int main()<br />
{<br />
int a = 1;<br />
char* bookNames;<br />
char bookId<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
== Team Members ==<br />
'''''Add table rows by replacing sample table row, cell values with yours'''''<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
|+ OOP344 - Team name<br />
! First Name !! Last Name !! Section !! Seneca Id & email !! wiki id !! IRC nick !! GITHUB ID !! Blog URL<br />
|-<br />
|[[User:Ji Jungmin | Jungmin]]|| Ji ||A||[mailto:jjungmin@myseneca.ca?subject=oop344- jjungmin]||[[Special:Contributions/Ji Jungmin|Ji Jungmin]]||Mistysnake||jungminji|| [http://jungmin-ji.tumblr.com/ WAKE UP]<br />
|-<br />
|[[User:Brad Stuart | Brad]]||Stuart||B||[mailto:bstuart!myseneca.ca?subject=opp344- bstuart1]||<br />
[[Special:Contributions/Brad Stuart|Brad Stuart]]|||LesterNormal||BradStuart||[http://brackethunter.blogspot.ca/ BracketHunter]<br />
<br />
|-<br />
<br />
|}<br />
<br />
== Discussions ==</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Team_I_-_OOP344_-_20132&diff=96342Team I - OOP344 - 201322013-06-13T18:42:06Z<p>Brad Stuart: /* Team Members */</p>
<hr />
<div>'''''Modify this page to the needs of your team.'''''<br />
{{OOP344 Index | 20132}}<br />
== Repository ==<br />
* Github: https://github.com/Seneca-OOP344/whatever<br />
=== Master Status ===<br />
* Master ('''last pushed/being pushed''') by ''Team Member name''<br />
== Announcements ==<br />
Jungmin Ji - Programmer2 tasks are done. Please review and let me know if there are errors.<br />
<br />
== Programming Style ==<br />
=== Indentation===<br />
* 2 spaces for indentation<br />
* Do not use tab character<br />
=== Blocks ===<br />
<syntaxhighlight lang="cpp"><br />
if(condition){<br />
whatever;<br />
}</syntaxhighlight><br />
=== Variable Naming ===<br />
<syntaxhighlight lang="cpp"><br />
int main()<br />
{<br />
int a = 1;<br />
char* bookNames;<br />
char bookId<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
== Team Members ==<br />
'''''Add table rows by replacing sample table row, cell values with yours'''''<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
|+ OOP344 - Team name<br />
! First Name !! Last Name !! Section !! Seneca Id & email !! wiki id !! IRC nick !! GITHUB ID !! Blog URL<br />
|-<br />
|[[User:Ji Jungmin | Jungmin]]|| Ji ||A||[mailto:jjungmin@myseneca.ca?subject=oop344- jjungmin]||[[Special:Contributions/Ji Jungmin|Ji Jungmin]]||Mistysnake||jungminji|| [http://jungmin-ji.tumblr.com/ WAKE UP]<br />
|-<br />
|[[User:Brad Stuart | Brad]]||Stuart||B||[mailto:bstuart!myseneca.ca?subject=opp344- bstuart1]||<br />
[[Special:Contributions/Brad Stuart|Brad Stuart]]||LesterNormal||BradStuart||[http://brackethunter.blogspot.ca/ BracketHunter]<br />
<br />
|-<br />
<br />
|}<br />
<br />
== Discussions ==</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Team_I_-_OOP344_-_20132&diff=96341Team I - OOP344 - 201322013-06-13T18:41:09Z<p>Brad Stuart: /* Team Members */</p>
<hr />
<div>'''''Modify this page to the needs of your team.'''''<br />
{{OOP344 Index | 20132}}<br />
== Repository ==<br />
* Github: https://github.com/Seneca-OOP344/whatever<br />
=== Master Status ===<br />
* Master ('''last pushed/being pushed''') by ''Team Member name''<br />
== Announcements ==<br />
Jungmin Ji - Programmer2 tasks are done. Please review and let me know if there are errors.<br />
<br />
== Programming Style ==<br />
=== Indentation===<br />
* 2 spaces for indentation<br />
* Do not use tab character<br />
=== Blocks ===<br />
<syntaxhighlight lang="cpp"><br />
if(condition){<br />
whatever;<br />
}</syntaxhighlight><br />
=== Variable Naming ===<br />
<syntaxhighlight lang="cpp"><br />
int main()<br />
{<br />
int a = 1;<br />
char* bookNames;<br />
char bookId<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
== Team Members ==<br />
'''''Add table rows by replacing sample table row, cell values with yours'''''<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
|+ OOP344 - Team name<br />
! First Name !! Last Name !! Section !! Seneca Id & email !! wiki id !! IRC nick !! GITHUB ID !! Blog URL<br />
|-<br />
|[[User:Ji Jungmin | Jungmin]]|| Ji ||A||[mailto:jjungmin@myseneca.ca?subject=oop344- jjungmin]||[[Special:Contributions/Ji Jungmin|Ji Jungmin]]||Mistysnake||jungminji|| [http://jungmin-ji.tumblr.com/ WAKE UP]<br />
|-<br />
|[[User:Brad Stuart | Brad]]||Stuart||B||[mailto:bstuart!myseneca.ca?subject=opp344- bstuart1]||<br />
[[Special:Contributions/Brad Stuart|Brad Stuart]]||LesterNormal||BradStuart||[http://brackethunter.blogspot.ca/ BracketHunter]<br />
|-<br />
|}<br />
<br />
== Discussions ==</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Team_I_-_OOP344_-_20132&diff=96334Team I - OOP344 - 201322013-06-13T18:37:52Z<p>Brad Stuart: /* Team Members */</p>
<hr />
<div>'''''Modify this page to the needs of your team.'''''<br />
{{OOP344 Index | 20132}}<br />
== Repository ==<br />
* Github: https://github.com/Seneca-OOP344/whatever<br />
=== Master Status ===<br />
* Master ('''last pushed/being pushed''') by ''Team Member name''<br />
== Announcements ==<br />
Jungmin Ji - Programmer2 tasks are done. Please review and let me know if there are errors.<br />
<br />
== Programming Style ==<br />
=== Indentation===<br />
* 2 spaces for indentation<br />
* Do not use tab character<br />
=== Blocks ===<br />
<syntaxhighlight lang="cpp"><br />
if(condition){<br />
whatever;<br />
}</syntaxhighlight><br />
=== Variable Naming ===<br />
<syntaxhighlight lang="cpp"><br />
int main()<br />
{<br />
int a = 1;<br />
char* bookNames;<br />
char bookId<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
== Team Members ==<br />
'''''Add table rows by replacing sample table row, cell values with yours'''''<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
|+ OOP344 - Team name<br />
! First Name !! Last Name !! Section !! Seneca Id & email !! wiki id !! IRC nick !! GITHUB ID !! Blog URL<br />
|-<br />
|[[User:Ji Jungmin | Jungmin]]|| Ji ||A||[mailto:jjungmin@myseneca.ca?subject=oop344- jjungmin]||[[Special:Contributions/Ji Jungmin|Ji Jungmin]]||Mistysnake||jungminji|| [http://jungmin-ji.tumblr.com/ WAKE UP]<br />
|-<br />
|[[User:Brad Stuart | Brad]]||Stuart||B||[mailto:bstuart!myseneca.ca?subject=opp344- bstuart1]||<br />
[[Special:Contributions/Brad Stuart|Brad Stuart]]||LesterNormal||BradStuart||[http://brackethunter.blogspot.ca/ BracketHunter]<br />
|-}<br />
<br />
== Discussions ==</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Team_I_-_OOP344_-_20132&diff=96332Team I - OOP344 - 201322013-06-13T18:36:57Z<p>Brad Stuart: /* Team Members */</p>
<hr />
<div>'''''Modify this page to the needs of your team.'''''<br />
{{OOP344 Index | 20132}}<br />
== Repository ==<br />
* Github: https://github.com/Seneca-OOP344/whatever<br />
=== Master Status ===<br />
* Master ('''last pushed/being pushed''') by ''Team Member name''<br />
== Announcements ==<br />
Jungmin Ji - Programmer2 tasks are done. Please review and let me know if there are errors.<br />
<br />
== Programming Style ==<br />
=== Indentation===<br />
* 2 spaces for indentation<br />
* Do not use tab character<br />
=== Blocks ===<br />
<syntaxhighlight lang="cpp"><br />
if(condition){<br />
whatever;<br />
}</syntaxhighlight><br />
=== Variable Naming ===<br />
<syntaxhighlight lang="cpp"><br />
int main()<br />
{<br />
int a = 1;<br />
char* bookNames;<br />
char bookId<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
== Team Members ==<br />
'''''Add table rows by replacing sample table row, cell values with yours'''''<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
|+ OOP344 - Team name<br />
! First Name !! Last Name !! Section !! Seneca Id & email !! wiki id !! IRC nick !! GITHUB ID !! Blog URL<br />
|-<br />
|[[User:Ji Jungmin | Jungmin]]|| Ji ||A||[mailto:jjungmin@myseneca.ca?subject=oop344- jjungmin]||[[Special:Contributions/Ji Jungmin|Ji Jungmin]]||Mistysnake||jungminji|| [http://jungmin-ji.tumblr.com/ WAKE UP]<br />
|-<br />
|[[User:Brad Stuart | Brad]]||Stuart||B||[mailto:bstuart!myseneca.ca?subject=opp344- bstuart1]||<br />
[[Special:Contributions/Brad Stuart|Brad Stuart]]||LesterNormal||BradStuart||[http://brackethunter.blogspot.ca/ BracketHunter]<br />
|-<br />
|-}<br />
<br />
== Discussions ==</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Team_I_-_OOP344_-_20132&diff=96329Team I - OOP344 - 201322013-06-13T18:34:59Z<p>Brad Stuart: /* Team Members */</p>
<hr />
<div>'''''Modify this page to the needs of your team.'''''<br />
{{OOP344 Index | 20132}}<br />
== Repository ==<br />
* Github: https://github.com/Seneca-OOP344/whatever<br />
=== Master Status ===<br />
* Master ('''last pushed/being pushed''') by ''Team Member name''<br />
== Announcements ==<br />
Jungmin Ji - Programmer2 tasks are done. Please review and let me know if there are errors.<br />
<br />
== Programming Style ==<br />
=== Indentation===<br />
* 2 spaces for indentation<br />
* Do not use tab character<br />
=== Blocks ===<br />
<syntaxhighlight lang="cpp"><br />
if(condition){<br />
whatever;<br />
}</syntaxhighlight><br />
=== Variable Naming ===<br />
<syntaxhighlight lang="cpp"><br />
int main()<br />
{<br />
int a = 1;<br />
char* bookNames;<br />
char bookId<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
== Team Members ==<br />
'''''Add table rows by replacing sample table row, cell values with yours'''''<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
|+ OOP344 - Team name<br />
! First Name !! Last Name !! Section !! Seneca Id & email !! wiki id !! IRC nick !! GITHUB ID !! Blog URL<br />
|-<br />
|[[User:Ji Jungmin | Jungmin]]|| Ji ||A||[mailto:jjungmin@myseneca.ca?subject=oop344- jjungmin]||[[Special:Contributions/Ji Jungmin|Ji Jungmin]]||Mistysnake||jungminji|| [http://jungmin-ji.tumblr.com/ WAKE UP]<br />
|-<br />
|[[User:Brad Stuart | Brad]]||Stuart||B||[mailto:bstuart!myseneca.ca?subject=opp344- bstuart1]||<br />
[[Special:Contributions/Brad Stuart|Brad Stuart]]||LesterNormal||BradStuart||[http://brackethunter.blogspot.ca/ BracketHunter]<br />
|-}<br />
<br />
== Discussions ==</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Team_I_-_OOP344_-_20132&diff=96327Team I - OOP344 - 201322013-06-13T18:34:22Z<p>Brad Stuart: /* Team Members */</p>
<hr />
<div>'''''Modify this page to the needs of your team.'''''<br />
{{OOP344 Index | 20132}}<br />
== Repository ==<br />
* Github: https://github.com/Seneca-OOP344/whatever<br />
=== Master Status ===<br />
* Master ('''last pushed/being pushed''') by ''Team Member name''<br />
== Announcements ==<br />
Jungmin Ji - Programmer2 tasks are done. Please review and let me know if there are errors.<br />
<br />
== Programming Style ==<br />
=== Indentation===<br />
* 2 spaces for indentation<br />
* Do not use tab character<br />
=== Blocks ===<br />
<syntaxhighlight lang="cpp"><br />
if(condition){<br />
whatever;<br />
}</syntaxhighlight><br />
=== Variable Naming ===<br />
<syntaxhighlight lang="cpp"><br />
int main()<br />
{<br />
int a = 1;<br />
char* bookNames;<br />
char bookId<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
== Team Members ==<br />
'''''Add table rows by replacing sample table row, cell values with yours'''''<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
|+ OOP344 - Team name<br />
! First Name !! Last Name !! Section !! Seneca Id & email !! wiki id !! IRC nick !! GITHUB ID !! Blog URL<br />
|-<br />
|[[User:Ji Jungmin | Jungmin]]|| Ji ||A||[mailto:jjungmin@myseneca.ca?subject=oop344- jjungmin]||[[Special:Contributions/Ji Jungmin|Ji Jungmin]]||Mistysnake||jungminji|| [http://jungmin-ji.tumblr.com/ WAKE UP]<br />
|-<br />
|[[User:Brad Stuart | Brad]]||Stuart||B||[mailto:bstuart!myseneca.ca?subject=opp344- bstuart1]||<br />
[[Special:Contributions/Brad Stuart]]||LesterNormal||BradStuart||[http://brackethunter.blogspot.ca/ BracketHunter]<br />
|-}<br />
<br />
== Discussions ==</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Team_I_-_OOP344_-_20132&diff=96325Team I - OOP344 - 201322013-06-13T18:33:18Z<p>Brad Stuart: /* Team Members */</p>
<hr />
<div>'''''Modify this page to the needs of your team.'''''<br />
{{OOP344 Index | 20132}}<br />
== Repository ==<br />
* Github: https://github.com/Seneca-OOP344/whatever<br />
=== Master Status ===<br />
* Master ('''last pushed/being pushed''') by ''Team Member name''<br />
== Announcements ==<br />
Jungmin Ji - Programmer2 tasks are done. Please review and let me know if there are errors.<br />
<br />
== Programming Style ==<br />
=== Indentation===<br />
* 2 spaces for indentation<br />
* Do not use tab character<br />
=== Blocks ===<br />
<syntaxhighlight lang="cpp"><br />
if(condition){<br />
whatever;<br />
}</syntaxhighlight><br />
=== Variable Naming ===<br />
<syntaxhighlight lang="cpp"><br />
int main()<br />
{<br />
int a = 1;<br />
char* bookNames;<br />
char bookId<br />
return 0;<br />
}<br />
</syntaxhighlight><br />
<br />
== Team Members ==<br />
'''''Add table rows by replacing sample table row, cell values with yours'''''<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
|+ OOP344 - Team name<br />
! First Name !! Last Name !! Section !! Seneca Id & email !! wiki id !! IRC nick !! GITHUB ID !! Blog URL<br />
|-<br />
|[[User:Ji Jungmin | Jungmin]]|| Ji ||A||[mailto:jjungmin@myseneca.ca?subject=oop344- jjungmin]||[[Special:Contributions/Ji Jungmin|Ji Jungmin]]||Mistysnake||jungminji|| [http://jungmin-ji.tumblr.com/ WAKE UP]<br />
|-<br />
|[[User:Brad Stuart | Brad]]||Stuart||B||[mailto:bstuart!myseneca.ca?subject=opp344- bstuart1]||<br />
[[Special:]]||LesterNormal||BradStuart||[http://brackethunter.blogspot.ca/ BracketHunter]<br />
|-}<br />
<br />
== Discussions ==</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Teams%27_List_20132_-_OOP344&diff=96318Teams' List 20132 - OOP3442013-06-13T18:28:23Z<p>Brad Stuart: /* Team I */</p>
<hr />
<div>{{OOP344 Index | 20132}}<br />
<br />
* Add your name and information to your Team Section following '''''Team X''''' Sample<br />
* Make sure your emailid is added to '''Email All''' link too<br />
* update and modify your individual team pages by clicking on your team page and editing the page. <br />
<br />
===[[Team X - OOP344 - 20132 |Team X (SAMPLE)]]===<br />
* [mailto:EmailId1@myseneca.ca?subject=oop344- name1 surname1 (EmailId1)] <br />
* [mailto:EmailId2@myseneca.ca?subject=oop344- name2 surname2 (EmailId2)] <br />
* [mailto:EmailId3@myseneca.ca?subject=oop344- name3 surname3 (EmailId3)] <br />
* [mailto:EmailId1@myseneca.ca;EmailId1@myseneca.ca;EmailId1@myseneca.ca?subject=oop344- Email All]<br />
===[[Team A - OOP344 - 20132|Team A]]=== <br />
===[[Team B - OOP344 - 20132|Team B]]===<br />
<br />
* [mailto:dolifer@myseneca.ca?subject=oop344 Dmitry Olifer (dolifer@myseneca.ca)]<br />
<br />
===[[Team C - OOP344 - 20132|Team C]]===<br />
<br />
* [mailto:plau7@myseneca.ca?subject=oop344- Philip Lau (PLau7)]<br />
<br />
===[[Team D - OOP344 - 20132|Team D]]===<br />
* [mailto:osnurnikov@myseneca.ca?subject=oop344- Oleksandr Snurnikov (osnurnikov)]<br />
* [mailto:mcmaceachern@myseneca.ca?subject=oop344- Matthew Conner Maceachern (mcmaceachern)]<br />
* [mailto:hhhum@myseneca.ca?subject=oop344- Herman Ho Ming Hum (hhhum)]<br />
* [mailto:osnurnikov@myseneca.ca;mcmaceachern@myseneca.ca;hhhum@myseneca.ca?subject=oop344- Email All]<br />
<br />
===[[Team E - OOP344 - 20132|Team E]]===<br />
<br />
Vadim Namniak [mailto:vnamnyak@myseneca.ca?subject=oop344- vnamnyak]<br />
<br />
Michael Allison (mailto:malliso1@myseneca.ca)<br />
<br />
===[[Team F - OOP344 - 20132|Team F]]===<br />
* [mailto:dkamin@myseneca.ca?subject=oop344- Dimple Amin (dkamin)]<br />
* [mailto:dkamin@myseneca.ca;?subject=oop344- Email All]<br />
<br />
===[[Team G - OOP344 - 20132|Team G]]=== <br />
===[[Team H - OOP344 - 20132|Team H]]===<br />
* [mailto:dtkerr@myseneca.ca?subject=oop344- Drew Kerr (dtkerr)]<br />
<br />
* [mailto:dtkerr@myseneca.ca;EmailId1@myseneca.ca;EmailId1@myseneca.ca?subject=oop344- Email All]<br />
<br />
===[[Team I - OOP344 - 20132|Team I]]===<br />
* [mailto:jjungmin@myseneca.ca?subject=oop344- Jungmin Ji (Jungmin)]<br />
* [mailto:bstuart1@myseneca.ca?subject=oop344- Brad Stuart (BradStuart)]<br />
* [mailto:@myseneca.ca?subject=oop344- ()]<br />
* [mailto:jjungmin@myseneca.ca;@myseneca.ca;@myseneca.ca?subject=oop344- Email All]<br />
<br />
===[[Team J - OOP344 - 20132|Team J]]=== <br />
===[[Team K - OOP344 - 20132|Team K]]=== <br />
===[[Team L - OOP344 - 20132|Team L]]===<br />
* [mailto:cxu38@myseneca.ca?subject=oop344- Chenming Xu (cxu38)]<br />
* [mailto:@myseneca.ca?subject=oop344- ()]<br />
* [mailto:@myseneca.ca?subject=oop344- ()]<br />
* [mailto:jjungmin@myseneca.ca;@myseneca.ca;@myseneca.ca?subject=oop344- Email All]<br />
<br />
===[[Team M - OOP344 - 20132|Team M]]=== <br />
===[[Team N - OOP344 - 20132|Team N]]===</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=User:Brad_Stuart&diff=95935User:Brad Stuart2013-06-01T17:53:54Z<p>Brad Stuart: /* Contact Info */</p>
<hr />
<div>==Brad Stuart==<br />
===Contact Info===<br />
*Email: bstuart1@learn.senecac.on.ca<br />
*IRC: Lester_Normal/Brad_S<br />
*[http://brackethunter.blogspot.ca/ My Blog]<br />
<br />
----<br />
<br />
** [http://brackethunter.blogspot.ca/2013/05/variadic-example-3.html Variadic Function Sample #3]<br />
** [http://brackethunter.blogspot.ca/2013/05/rewinding-variadic-lists.html Rewinding va_list's]<br />
** [http://brackethunter.blogspot.ca/2013/06/fun-with-cui.html Fun with CUI]</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Weekly_Schedule_20132_-_OOP344&diff=95934Weekly Schedule 20132 - OOP3442013-06-01T13:57:53Z<p>Brad Stuart: /* blog posts 4 */</p>
<hr />
<div>{{OOP344 Index | 20132}}<br />
<br />
Under Construction!<br />
<br />
== Week 1 - May 5 ==<br />
<br />
=== This Week 1 ===<br />
<br />
* Introduction to Open Source development.<br />
* Collaboration Tools:<br />
** Wiki<br />
** Blog<br />
** IRC<br />
** Code Repository<br />
**: Git, Svn, ....<br />
** Big Blue Button<br />
* Etherpad<br />
** [http://etherpad.proximity.on.ca:9001 Seneca Etherpad]<br />
** http://primarypad.com/<br />
* Object Orientation Review<br />
* C Review<br />
*: pointers<br />
*: pointers and arrays<br />
<br />
=== To Do 1===<br />
==== Due May 7th (Tuesday) 18:00 ====<br />
# Create an account on [https://github.com github]<br />
## Make sure your account name is presentable. This name will stay with you forever.<br />
## Make sure your information on github is complete (real name, email, etc...) <br />
# Send ONE email to [mailto:fardad.soleimanloo@senecacollege.ca?subject=344Github20132 me] containing your git hub id<br />
#: subject of the email should be '''''344Github20132'''''<br />
#: '''''email content'''''<br />
#: name: Your Name (exactly as it appears on your Seneca student card)<br />
#: nickname: Your Nick name<br />
#: Git hub ID: your Github id <br />
==== Due by May 13th, 23:59 ====<br />
# Create a [http://en.wikipedia.org/wiki/Blog blog] (anywhere you like)<br />
# Join the IRC by [http://www.wikihow.com/Register-a-User-Name-on-Freenode registering your nickname on freenode] server and joining the #seneca-oop344 channel for 344 related dialog<br />
#: Additional channels of interest: #seneca to interact with all Seneca students participating in opensource projects, and #seneca-social for Social (off-topic) dialog.<br />
# Read [http://git-scm.com/book Pro-git book]<br />
#: Chapter One and Chapter Two<br />
# Create an account on this wiki: send an email to [mailto:cdot-wiki-admin@senecac.on.ca?subject=Wiki+account+request cdot-wiki-admin@senecac.on.ca] and ask for an account, an email will be sent back to you with your userid and a temporary password; make sure you have the following included in your email.<br />
#* Email subject: Wiki Account Request<br />
#* The subject you are enrolled in: "OOP344"<br />
#* Your Seneca user id<br />
#* Send this email from your Seneca Account only<br />
# Learn how to do basic editing in a wiki<br />
<br />
=== Resources 1 ===<br />
* Git<br />
** [http://git-scm.com/book Pro-git book]<br />
** [[GIT for OOP344 Projects]]<br />
** Great 15 minutes tutorial that will give you basic understanding of Git<br />
**: [http://try.github.com/levels/1/challenges/1 Try GitHub]<br />
** [http://www.sourcetreeapp.com Git GUI Client for Mac ] <br />
** [http://windows.github.com/ Github Client for Windows] <br />
** [https://help.github.com/articles/generating-ssh-keys Generating SSH keys for github]<br />
* Wiki<br />
* [http://www.wikihow.com/Register-a-User-Name-on-Freenode How to register your IRC nickname on freenode]<br />
* [http://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients Compare IRC clients]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:How_to_edit_a_page How To edit Wiki pages]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet How To edit Wiki Cheatsheet]<br />
* Blogs<br />
** [http://wordpress.com/ Wordpress]<br />
** [http://www.blogger.com/ Blogger]<br />
** [https://www.tumblr.com/ Tumblr]<br />
* IRC Clients:<br />
** [http://www.silverex.org/download/ XChat 2 (Windows)]<br />
** [http://colloquy.info/downloads.html Colloquy Colloguy (Mac)] <br />
** [https://addons.mozilla.org/en-US/firefox/addon/chatzilla/ ChatZilla (Multi-platform)]<br />
** [http://clicksandwhistles.com/download.php Clicks & Whistles (Windows)]<br />
* How to Install <br />
** [http://wiki.tryphon.eu/how_to_install_xchat XChat]<br />
== Week 2 - May 12==<br />
=== This Week 2===<br />
* Git review<br />
*: [http://git-scm.com/docs/git-clone clone], [http://git-scm.com/docs/git-pull pull], [http://git-scm.com/docs/git-push push]<br />
*: [http://git-scm.com/docs/git-add add], [http://git-scm.com/docs/git-commit commit], [http://git-scm.com/docs/git-branch branch]<br />
* Operators<br />
*: review<br />
*: Logical<br />
*: Arithmetic<br />
*: Lazy evaluation<br />
*: operators in C <br />
* pointers (continued)<br />
*: arrays<br />
*: arithmetic<br />
*: void<br />
*: functions<br />
* Default Args<br />
<br />
=== To Do 2===<br />
=== Resources 2===<br />
<br />
* [http://www.cplusplus.com/doc/tutorial/pointers/ Everything you always wanted to know about pointers, but were afraid to ask]<br />
*: Single resource that will give you all the knowledge you need about pointers, including information given in the last two classes. WARNING! Reading online tutorials is NOT a substitute to visiting in-class lectures.<br />
<br />
=== blog posts 2===<br />
<br />
* [http://www.admix-dev.tumblr.com/post/50621074633/oliver-steele-created-a-great-image-explaining-how Easy picture explanation of how the Git works]<br />
*: Easy and detailed explanation of Git transfer procedures using schema.<br />
* [http://admix-dev.tumblr.com/post/50350903940/adding-auto-completion-to-the-git-commands-mac-os Adding auto-completion to the git commands on Mac OS X]<br />
*: Short guide how to set up auto-completion for the '''git''' commands on your Mac (using '''Tab''' to complete commands).<br />
<br />
== Week 3 - May 19==<br />
=== This Week 3===<br />
* Real Signature of main()<br />
* Pre-Processor directives<br />
*: define (macros)<br />
*: include<br />
* typedefs<br />
* Variable Argument list<br />
* [http://www.cplusplus.com/doc/tutorial/namespaces/ Namespaces]<br />
* friends<br />
<br />
=== To Do 3===<br />
* program: int AscToInt(const char *num);<br />
* program: char* nstrcat(char* name, ...) //Basically strcat with >= 1 arguments<br />
<br />
=== Resources 3===<br />
=== Blog posts 3===<br />
* <u>'''AscToInt Solutions'''</u><br />
<br />
:[http://lisyonok85.wordpress.com/?p=7 SecA Artem's Solution]<br />
<br />
:[http://dongdli.wordpress.com/2013/05/21/codes-of-the-function-int-asctoint-const-char-num/ Codes from SECTION_B DONG LI]<br />
<br />
:[http://malliso1.wordpress.com/2013/05/21/converting-a-string-of-numbers-to-an-integer/ Converting a string of numbers to an integer.]<br />
<br />
:[http://matthewtorrance.blogspot.ca/2013/05/asctoint.html AscToInt Function]<br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/21/the-ascii-conversion-challenge/ SecA Drew Terrance Kerr]<br />
<br />
:[http://ssuduruk.blogspot.ca/2013/05/asctointconst-char-num.html SecA Chiyoung Choi]<br />
<br />
:[http://admix-dev.tumblr.com/post/51005560090/conversion-char-into-int SecB Oleksandr Snurnikov, (ascToInt() function) ]<br />
<br />
:[http://happyivyli.blogspot.ca/2013/05/solution-of-int-asctointconst-char-num.html SecB Na Li]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/blog-post.html SecA Herman Hum]<br />
<br />
:[http://shahzyn.blogspot.ca/2013/05/ascii-to-int.html SecA Shehzin Arshad]<br />
<br />
:[http://joshem31.wordpress.com/2013/05/21/my-first-challenge-my-first-asctoint-function/ SecA Jose Ramirez]<br />
<br />
:[http://mattmaceachern.blogspot.ca/2013/05/blog-post.html SecA Matt MacEachern]<br />
<br />
:[http://jijungmin90.tumblr.com/post/51031179606/simple-char-to-intlI SecA Jungmin Ji]<br />
<br />
:[http://namniak.blogspot.ca/2013/05/asctoint.html Vadim Namniak's Solution]<br />
<br />
:[http://zhunxue1912.wordpress.com/2013/05/21/int-asctointconst-char-num/ Zhun Xue]<br />
<br />
:[http://brackethunter.blogspot.ca/2013/05/asctoint-11-now-with-range-checking-and.html Brad Stuart's Improved Solution]<br />
<br />
:[http://markieta.blogspot.ca/2013/05/asctoint.html Christopher Markieta]<br />
<br />
:[http://haydeezpluto.wordpress.com/2013/05/26/ascii-to-integer-conversion/ Amal Khandelwal]<br />
<br />
:[http://tthaninayagam.blogspot.ca/2013/05/asctoint.html SecB Thanushaa Thaninayagam]<br />
<br />
:[http://chisa-takata.tumblr.com/ SecA Chisa Takata]<br />
<br />
:[http://dimpleamin204.blogspot.ca/ SecA Dimple Amin]<br />
<br />
:[http://ksidhucode.blogspot.ca/2013/05/asctoint_30.html SecB Kevin Sidhu]<br />
<br />
* <u>'''nstrcat Solutions'''</u><br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/22/concatenating-an-arbitrary-number-of-strings/ SecA Drew Terrance Kerr]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/const-char-nstrcatchar-des.html SecA Herman Hum]<br />
<br />
:[http://admix-dev.tumblr.com/post/51133316724/const-char-nstrcat-char-to-strcat-with-1 SecB Oleksandr Snurnikov]<br />
:*[https://github.com/admix/admixSoft/blob/master/OOP344/nstrcat.cpp direct link to the source code on the github]<br />
<br />
:[http://brackethunter.blogspot.ca/2013/05/frustrationnstrcatdes.html Brad Stuart]<br />
<br />
:[http://mattmaceachern.blogspot.ca/2013/05/nstrcatcpp-no-fail-safe-yet-to-be-added.html SecA Matt MacEachern]<br />
<br />
:[http://dongdli.wordpress.com/2013/05/27/code-of-nstrcat-a-function-to-concatinate-unknow-amount-of-strings/ SECTION_B DONG LI]<br />
<br />
:[http://ksidhucode.blogspot.ca/2013/05/nstrcat.html SecB Kevin Sidhu]<br />
<br />
:[http://nstrcat.blogspot.ca/ SecB Prabhleen Bhupal]<br />
<br />
== Week 4 - May 26==<br />
=== This Week 4 ===<br />
* Project introduction<br />
* [http://lisyonok85.wordpress.com/2013/05/29/project/ Project Diagram (as drawn in class)]<br />
*: bio, cio<br />
* Declaration modifiers <br />
*: auto<br />
*: [http://www.learncpp.com/cpp-tutorial/811-static-member-variables/ static]<br />
*: extern<br />
** const<br />
**: pointers<br />
**: methods<br />
* compilation process<br />
* pre-processor directives<br />
*: Include safe guards<br />
* [http://www.learncpp.com/cpp-tutorial/122-virtual-functions/ Virtuals] <br />
*: Review<br />
*: Pure Virtual<br />
*: Abstract Base Classes<br />
<br />
=== To Do 4===<br />
<br />
=== Resources 4===<br />
=== blog posts 4===<br />
*[http://brackethunter.blogspot.ca/2013/06/moveboxcpp.html SecB Brad Stuart - Movebox.cpp]<br />
<br />
== Week 5 - June 2==<br />
=== This Week 5===<br />
=== To Do 5===<br />
=== Resources 5===<br />
=== blog posts 5===<br />
== Week 6 - June 9==<br />
=== This Week 6===<br />
=== To Do 6===<br />
=== Resources 6===<br />
=== blog posts 6===<br />
== Week 7 - June 16==<br />
=== This Week 7===<br />
=== To Do 7===<br />
=== Resources 7===<br />
=== blog posts ===<br />
== Week 8 - June 23 (Study Break)==<br />
=== This Week 8===<br />
=== To Do 8===<br />
=== Resources 8===<br />
=== blog posts 8===<br />
== Week 9 - June 30==<br />
=== This Week 9===<br />
=== To Do 9===<br />
=== Resources 9===<br />
=== blog posts 9===<br />
== Week 10 - July 7==<br />
=== This Week 10===<br />
=== To Do 10===<br />
=== Resources 10===<br />
=== blog posts 10===<br />
== Week 11 - July 14==<br />
=== This Week 11===<br />
=== To Do 11===<br />
=== Resources 11===<br />
=== blog posts 11===<br />
== Week 12 - July 21==<br />
=== This Week 12===<br />
=== To Do 12===<br />
=== Resources 12===<br />
=== blog posts 12===<br />
== Week 13 - July 28==<br />
=== This Week 13===<br />
=== To Do 13===<br />
=== Resources 13===<br />
=== blog posts 13===<br />
== Week 14 - August 4==<br />
=== This Week 14===<br />
=== To Do 14===<br />
=== Resources 14===<br />
=== blog posts 14===<br />
== Week 15 - August 11 (Exam Week)==<br />
=== This Week 15===<br />
=== To Do 15===<br />
=== Resources 15===<br />
=== blog posts 15===</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=OOP344_Student_Resources&diff=95894OOP344 Student Resources2013-05-29T13:05:33Z<p>Brad Stuart: /* Online C++ tutorials */</p>
<hr />
<div>{{OOP344 Index | 20131}}<br />
===Quick Link===<br />
*[[Tortoise in 5]]<br />
*[[Linked List]]<br />
<br /><br />
<br />
This page will serve as a hub for all OOP344 students to create wiki pages related to the course for the purpose of aiding their fellow students. Got a handy trick that makes programming easier? Feel free to build a page about it and link it here for all your classmates to use!<br />
<br />
== Standards ==<br />
To add a new page, simply put a link at the top of the page and a section below with a link and short description of what the page is about. Simple enough?<br />
<br />
<br />
== Webpages (Useful links)==<br />
<br />
*https://scs.senecac.on.ca/~btp300 <-- the degree version of oop344. Good for an indepth look at the material. Includes Workshops and Walkthroughs<br />
*https://cs.senecac.on.ca/~fardad.soleimanloo/oop344/notes/ <-- Notes only up to Oct 28, 2009. Includes past tests<br />
*svn://zenit.senecac.on.ca/oop344 <-- Up to Date Notes shown in all lectures<br />
*[http://zenit.senecac.on.ca/wiki/index.php/How_to_set_up_tab_spaces Changing Tab Key Behaviour in Certain IDEs]<br />
<br />
== GIT ==<br />
[[GIT for OOP344 Projects]]<br />
<br />
<br />
* This is by far the best tutorial for Github, actually the best tutorial ever! Check it out. (http://pcottle.github.com/learnGitBranching/) -Mohammed Al Zubair<br />
<br />
== Creating Projects in Visual Studio for Console Applications ==<br />
Visual Studio is available for download from [http://acs.senecac.on.ca/ ACS] <br /><br /><br />
To create a new project for console applications:<br />
* From the File menu, select New > Project<br />
* Select Project Type as Visual C++ > Win32<br />
* Select template <i>Win32 Console Application</i><br />
* Assign project name and choose local directory<br />
* Uncheck the box <i>Create directory for solution</i><br />
* In the wizard, click on <i>Application Settings</i><br />
* Application type of <i>Console application</i> should be selected<br />
* Check the box beside <i>Empty project</i><br />
In "Solution Explorer", add new item to Header Files or Source Files.<br />
<br />
==IRC==<br />
<br />
=== The Basics of IRC ===<br />
IRC is also known as Internet Relay Chat. The principal of it is essentially to provide accessible chat rooms for people over the internet over multiple operating systems. To be able to connect and interact with IRC, one must first have an IRC client of some sort.<br />
<br />
===IRC Clients===<br />
There is a wide variety of different IRC clients on all platforms. Here is a list of just a few:<br />
* [https://addons.mozilla.org/en-US/firefox/addon/16 Chatzilla] (Add-on for Firefox)<br />
* [http://www.mirc.com/ mIRC] (Windows)<br />
* [http://www.hydrairc.com/ HydraIRC] (Windows)<br />
* [http://colloquy.info/ Colloquy] (MacOS)<br />
* [http://www.aquaticx.com/ xIRC] (MacOS)<br />
* [http://www.babbelirc.com/ Babbel] (Windows/MacOS)<br />
* [http://xchat.org/ XChat] (Windows/Linux)<br />
* [http://www.irssi.org/ irssi] (Windows/MacOS/Linux)<br />
* [http://webchat.freenode.net/ Freenode] (Windows/MacOS/Linux (Web Based IRC)<br />
* [http://www.hexchat.org/ HexChat] (Windows)<br />
<br />
Once installed and running, you will have such options as connecting to various servers. We're particularly interested in the one which the seneca chatroom is located.<br />
<br />
===Basic Commands===<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
! Command !! Description<br />
|-<br />
| <code>/server irc.freenode.net</code> || Connects your client to an IRC server. In this case, it is the freenode server<br />
|-<br />
|-<br />
| <code>/join #seneca </code> || Join #seneca channel<br />
|-<br />
|-<br />
| <code>/nick YOURNEWNICKNAME</code> || Change your nickname<br />
|-<br />
|-<br />
| <code>/leave #seneca</code> || Leave #seneca channel<br />
|-<br />
| <code>/part #seneca</code> || Another fancy (more elegant) way of leaving<br />
|-<br />
|-<br />
| <code>/query NICKNAME</code> || Open a private chat with someone<br />
|-<br />
|}<br />
<br />
See [http://toxin.jottit.com/freenode_chanserv_commands this] for more advanced (and fun) IRC commands that works at Freenode.<br />
<br />
<br />
===Protecting your Nickname===<br />
<br />
Once connected to the server, it is a good idea to register your nick, otherwise someone can impersonate you and steal your nick -- Forcing you to change your name again.<br />
<br />
To register, one uses the following command:<br />
<code><br />
/msg nickserv REGISTER foo foo@bar.com<br />
</code><br />
<br />
This will associate your account with the e-mail foo@bar.com, as well as have your password be foo.<br />
To identify yourself, you do a similar command:<br />
<code><br />
/msg nickserv IDENTIFY foo<br />
</code><br />
<br />
If someone has taken your registered nick, or you have a zombie in the channel (Where you drop connection but you still appear in the channel), there is a command to fix that.<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
! Command !! Description<br />
|-<br />
| <code>/msg NickServ RECOVER [nick] [personal password]</code> || <code>RECOVER</code> Kill another user who has taken your nick (leave out the brackets [])<br />
|-<br />
|-<br />
| <code>/msg NickServ GHOST [nick] [personal password]</code> || <code>GHOST</code> Kills the nickname (NOTE: Please use the Ghost command instead for now and leave out the brackets [])<br />
|-<br />
|}<br />
<br />
NOTE: Stick with <code>GHOST</code> for now, as <code>RECOVER</code> is becoming more obsolete.<br />
<br />
<br />
===Seneca @ Freenode===<br />
[http://freenode.net/ Freenode] is an IRC server/network. It is the largest free and open source software-focused IRC network.<br />
<br />
Seneca's official IRC channels such as [http://webchat.freenode.net/?channels=seneca%2Cseneca-social%2Cseneca-oop344&uio=d4 #seneca, #seneca-social, #seneca-oop344] and more are all at Freenode.<br />
<br />
To connect to Freenode, one has to have an IRC client. If you are too lazy to download and install an IRC client, Freenode has an alternate way to connect to their network called [http://webchat.freenode.net/ freenode Web IRC]. It is an IRC webapp client written in javascript. You will not need to install anything, just visit [http://webchat.freenode.net/ http://webchat.freenode.net/] and follow instructions. Everything will work in your browser as if it's magic.<br />
<br />
<br />
===How To Log IRC Conversations on mIRC===<br />
To log conversations on mIRC, you need to :<br />
<ol><br />
<li>Right click on the channel on the Switchbar (The bar with the channel names on it)</li><br />
<li>Select <b>Logging</b></li><br />
<li>Select <b>On</b></li><br />
</ol><br />
<br /><br />
To view a logged conversation:<br />
<ol><br />
<li>Click on <b>Tools</b></li><br />
<li>Click on <b>Log Files...</b></li><br />
<li>Find you log file and double click it</li><br />
</ol><br />
<br /><br />
<br />
===How To Identify on IRC Automatically via mIRC (and Join #Seneca-OOP344 Channel)===<br />
If you are using mIRC to connect to IRC and wish to automatically identify your nickname after its been registered so you do not have to type it out every time you connect to Freenode do the following:<br />
<br />
#. In the mIRC GUI, go to Tools > Script Editor<br />
#. Click on the Remote tab<br />
#. Add the following code to the page and click OK. (Remember to replace your PASSWORD with your password you set when you registered)<br />
<br /><br />
<pre><br />
ON 1:NOTICE:*registered*identify*:?:{<br />
/msg nickserv identify PASSWORD<br />
/join #seneca-oop344<br />
}<br />
</pre><br />
<br />
=== How To Identify on IRC Automatically via XChat (linux) and Join #Seneca-OOP344 Channel) ===<br />
If you are using linux, the best IRC client I can find is xchat, but identiy and join every time you log in became a hassle, here is the fix:<br />
<br />
# Click on the xchat option on the menu bar > Server list (ctrl+s)<br />
# Type in your nickname, registered ID and information on freenode<br />
# In Networks, scroll down and select freenode<br />
# On the right side, click on "edit"<br />
# Under connecting, check the option "auto connect to this network at startup"<br />
# Type your password in "Nickserv password"<br />
# close the window and click "connect"<br />
<br />
=== Some IRC short cuts for xchat ===<br />
If you use xchat these short cuts will save you from having to type a lot.<br />
<br />
# /ns identify "password" = /msg nickserv identify "password"<br />
# /id "password" = /msg nickserv identify "password"<br />
# /j "channel name" = /join "channel name"<br />
# /cs = /msg chanserv<br />
<br />
=== Hiding or Cloaking your IP Address ===<br />
<br />
One of the ways is to simply send an email to support@freenode.net with a request to hide your IP Address. Make sure to provide your registered nickname on the freenode IRC server. Your will get a reply in couple of days, so be patient.<br />
Another way, is to join #freenode chat and try to contact a chat moderator there.<br />
<br />
=== Useful Links ===<br />
* [http://freenode.net/faq.shtml Freenode FAQ]<br />
<br />
== Online C++ tutorials == <br />
[http://www.parashift.com/c++-faq-lite/ FAQs (Really great site)]<br /><br />
[http://www.functionx.com/cpp/ C++ tutorial site1]<br /><br />
[http://www.cplusplus.com/doc/tutorial/ C++ tutorial site2]<br /><br />
[http://www.learncpp.com/ C++ tutorial site3]<br /><br />
[http://www.cprogramming.com/tutorial.html C/C++ tutorial site]<br /><br />
<br />
*[http://www.eskimo.com/~scs/cclass/int/sx11c.html Variadic Function help]<br />
*[http://www.programr.com/zone/cpp C++ Tutorials and Exercises]<br />
<br />
== Linked List Explained ==<br />
[[Linked List]] <br /><br />
If you don't really understand how linked lists work or why we should even use them then this page is made for you!<br /><br />
[http://richardbowles.tripod.com/cpp/linklist/linklist.htm Another Linked List Tutorial]<br />
<br />This is another tutorial for linked lists that will walk you through how to program one.<br />
== Practice Questions/Solutions ==<br />
* [[q1 A linked list question]] - [[q1sol the solution]]<br />
* [[q2 A binary file question]] - [[q2sol the solution]]<br />
* [[walk1 a walkthrough with templates]] - [[walk1sol the solution]]<br />
<br />
== C++ Casts Explained By Fardad 14/04/2011 ==<br />
For those that did not attend Thursday's class the week before the exam, Fardad explained how to use C++ casting<br /><br />
that can also be found in OOP244's notes by C++ Wizard Chris Szalwinski.<br /><br />
<br />
[https://cs.senecac.on.ca/~oop244/pages/content/ansis.html Chris Szalwinski's OOP244 Notes<br />
<br />
<br />
== OS Key-Codes ==<br />
=== Mac OS X ===<br />
* #define '''UP_KEY''' 259<br />
* #define ''' DOWN_KEY''' 258<br />
* #define ''' LEFT_KEY''' 260<br />
* #define ''' RIGHT_KEY''' 261<br />
* #define ''' PGUP_KEY''' 6 ''/* Control + f */''<br />
* #define ''' PGDN_KEY''' 2 ''/* Control + b */''<br />
* #define ''' ENTER_KEY''' 10<br />
* #define ''' TAB_KEY''' 9<br />
* #define ''' BACKSPACE_KEY''' 127<br />
* #define ''' DEL_KEY''' 330 ''/* FN + Delete */''<br />
* #define ''' HOME_KEY''' 1 ''/* Control + a */''<br />
* #define ''' END_KEY''' 5 ''/* Control + e */''<br />
* #define ''' ESCAPE_KEY''' 27<br />
* #define ''' INSERT_KEY''' 16 ''/* Control + p */''<br />
* #define ''' SPACE_KEY''' 32<br />
<br />
''FN + ALT + Function Keys with Mac Special Function Key Setup''<br />
<br />
''ALT + Function Keys as Standard Function Keys Setup''<br />
<br />
* #define ''' F1_KEY''' 270<br />
* #define ''' F2_KEY''' 271<br />
* #define ''' F3_KEY''' 272<br />
* #define ''' F4_KEY''' 273<br />
* #define ''' F5_KEY''' 274<br />
* #define ''' F6_KEY''' 275<br />
* #define ''' F7_KEY''' 276<br />
* #define ''' F8_KEY''' 277<br />
* #define ''' F9_KEY''' 278<br />
* #define ''' F10_KEY''' 279<br />
* #define ''' F11_KEY''' 280<br />
* #define ''' F12_KEY''' 281<br />
== Obsolete Stuff ==<br />
=== SVN ===<br />
<p>[[Development and submission steps using SVN - OOP344 20121]] This is a quick way to get everyone familiar with SVN in a brain friendly manner without the need to sift through pages of unnecessary documentation.</p><br />
<p><br />
[http://lmgtfy.com/?q=what+is+svn What is SVN?] Subversion or SVN is a control system where it allows you to properly organize and manage files and directories and the changes to them over time. SVN allows you to recover older versions of your data, or examine the history of how your data changed. In this regard, many people think of a version control system as a sort of “time machine”. [http://svnbook.red-bean.com/en/1.4/svn.intro.whatis.html]<br />
</p><br />
=== SVN Clients ===<br />
* [[Tortoise in 5]] - This page is dedicated to those poor souls that have to use SVN but don't have time to read through chapter upon chapter about it just to be able to participate in assignment 2.<br />
* [[RabbitVCS]] - RabbitVCS is a Linux alternative to TortoiseSVN. This page will help describe how to install and use RabbitVCS.<br />
* [http://rapidsvn.tigris.org/ RapidSVN] - Another SVN client for Linux - a very simple and straight-forward SVN client.<br />
* [http://www.lachoseinteractive.net/en/community/subversion/svnx/features/?sid=337041a90a9f11841f9f77fda5224723 svnX] - A very competent SVN client for Mac OS X.<br />
<br />
=== SVN Hosts ===<br />
<p>The best way to learn SVN is to experiment it, we programmers, love to explore. Though Seneca already provides us SVN hosting, there are other free SVN hosting out there that you can use and experiment around (since you might not want to mess around with your team's account if you don't know what you're doing). One of the best SVN hosts out there is probably [http://code.google.com/hosting/ Google Code Hosting] because it has many cool features such as web presentation of [http://code.google.com/p/rainulf/source/browse/trunk/core.php syntax highlighted sources], [http://code.google.com/p/rainulf/source/diff?path=/trunk/core.php&format=side&r=4&old_path=/trunk/core.php&old=3 diff], [http://code.google.com/p/rainulf/w/list wiki] and more (which you can do also within a client program) of sources and it does show what SVNs are truly for: ease.</p><br />
<p>Here's a few SVN hosts:</p><br />
* Google Code Hosting - create account [http://code.google.com/hosting/createProject here]<br />
* [http://sourceforge.net/ SourceForge]<br />
* [https://www.bountysource.com/ Bounty Source]<br />
* And [http://lmgtfy.com/?q=svn+hosts more], ranging from free to paid hosting.<br />
NOTE: Seneca already provides us SVN hosting (SVN login and pass), all of our work academic work should be all there.<br />
<br />
=== Doing a task in SVN ===<br />
Below is a quick guide to follow to complete a task under SVN.<br />
<br />
<br />
1. Create subdirectories in "branches" under your Seneca email ID. This is your ROOT.<br />
Repo<br />
|__ Branches<br />
|__ SenecaEmailID<br />
<br />
<br />
2. Create a subdirectory under your brach under the task name. (ex. BkSpcBug)<br />
Repo<br />
|__ Branches<br />
|__ SenecaEmailID<br />
|____ BkSpcBug<br />
<br />
<br />
<br />
3. Update your branch to set the files in (BkSpcBug)<br />
Repo<br />
|__ Branches<br />
|__ SenecaEmailID<br />
|____ BkSpcBug<br />
|_____file1.cpp<br />
|_____file2.cpp<br />
<br />
4. Start working on (BkSpcBug).<br />
<br />
5. When complete (Bug Fixed).<br />
<br />
5.1 Set the trunk status on the team page to: COMITTING by your Seneca ID.<br />
<br />
5.2 Merge the branch (BkSpcBug) to Trunk.<br />
<br />
5.2.1 Edit possible conflicts.<br />
<br />
5.2.2 Set conflicts to resolved.<br />
<br />
5.3. Recompile the trunk.<br />
<br />
5.4 Set the trunk status on the team page to: COMITTED by your Seneca ID.</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Weekly_Schedule_20132_-_OOP344&diff=95875Weekly Schedule 20132 - OOP3442013-05-27T14:47:11Z<p>Brad Stuart: /* Blog posts 3 */</p>
<hr />
<div>{{OOP344 Index | 20132}}<br />
<br />
Under Construction!<br />
<br />
== Week 1 - May 5 ==<br />
<br />
=== This Week 1 ===<br />
<br />
* Introduction to Open Source development.<br />
* Collaboration Tools:<br />
** Wiki<br />
** Blog<br />
** IRC<br />
** Code Repository<br />
**: Git, Svn, ....<br />
** Big Blue Button<br />
* Etherpad<br />
** [http://etherpad.proximity.on.ca:9001 Seneca Etherpad]<br />
** http://primarypad.com/<br />
* Object Orientation Review<br />
* C Review<br />
*: pointers<br />
*: pointers and arrays<br />
<br />
=== To Do 1===<br />
==== Due May 7th (Tuesday) 18:00 ====<br />
# Create an account on [https://github.com github]<br />
## Make sure your account name is presentable. This name will stay with you forever.<br />
## Make sure your information on github is complete (real name, email, etc...) <br />
# Send ONE email to [mailto:fardad.soleimanloo@senecacollege.ca?subject=344Github20132 me] containing your git hub id<br />
#: subject of the email should be '''''344Github20132'''''<br />
#: '''''email content'''''<br />
#: name: Your Name (exactly as it appears on your Seneca student card)<br />
#: nickname: Your Nick name<br />
#: Git hub ID: your Github id <br />
==== Due by May 13th, 23:59 ====<br />
# Create a [http://en.wikipedia.org/wiki/Blog blog] (anywhere you like)<br />
# Join the IRC by [http://www.wikihow.com/Register-a-User-Name-on-Freenode registering your nickname on freenode] server and joining the #seneca-oop344 channel for 344 related dialog<br />
#: Additional channels of interest: #seneca to interact with all Seneca students participating in opensource projects, and #seneca-social for Social (off-topic) dialog.<br />
# Read [http://git-scm.com/book Pro-git book]<br />
#: Chapter One and Chapter Two<br />
# Create an account on this wiki: send an email to [mailto:cdot-wiki-admin@senecac.on.ca?subject=Wiki+account+request cdot-wiki-admin@senecac.on.ca] and ask for an account, an email will be sent back to you with your userid and a temporary password; make sure you have the following included in your email.<br />
#* Email subject: Wiki Account Request<br />
#* The subject you are enrolled in: "OOP344"<br />
#* Your Seneca user id<br />
#* Send this email from your Seneca Account only<br />
# Learn how to do basic editing in a wiki<br />
<br />
=== Resources 1 ===<br />
* Git<br />
** [http://git-scm.com/book Pro-git book]<br />
** [[GIT for OOP344 Projects]]<br />
** Great 15 minutes tutorial that will give you basic understanding of Git<br />
**: [http://try.github.com/levels/1/challenges/1 Try GitHub]<br />
** [http://www.sourcetreeapp.com Git GUI Client for Mac ] <br />
** [http://windows.github.com/ Github Client for Windows] <br />
** [https://help.github.com/articles/generating-ssh-keys Generating SSH keys for github]<br />
* Wiki<br />
* [http://www.wikihow.com/Register-a-User-Name-on-Freenode How to register your IRC nickname on freenode]<br />
* [http://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients Compare IRC clients]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:How_to_edit_a_page How To edit Wiki pages]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet How To edit Wiki Cheatsheet]<br />
* Blogs<br />
** [http://wordpress.com/ Wordpress]<br />
** [http://www.blogger.com/ Blogger]<br />
** [https://www.tumblr.com/ Tumblr]<br />
* IRC Clients:<br />
** [http://www.silverex.org/download/ XChat 2 (Windows)]<br />
** [http://colloquy.info/downloads.html Colloquy Colloguy (Mac)] <br />
** [https://addons.mozilla.org/en-US/firefox/addon/chatzilla/ ChatZilla (Multi-platform)]<br />
** [http://clicksandwhistles.com/download.php Clicks & Whistles (Windows)]<br />
* How to Install <br />
** [http://wiki.tryphon.eu/how_to_install_xchat XChat]<br />
== Week 2 - May 12==<br />
=== This Week 2===<br />
* Git review<br />
*: [http://git-scm.com/docs/git-clone clone], [http://git-scm.com/docs/git-pull pull], [http://git-scm.com/docs/git-push push]<br />
*: [http://git-scm.com/docs/git-add add], [http://git-scm.com/docs/git-commit commit], [http://git-scm.com/docs/git-branch branch]<br />
* Operators<br />
*: review<br />
*: Logical<br />
*: Arithmetic<br />
*: Lazy evaluation<br />
*: operators in C <br />
* pointers (continued)<br />
*: arrays<br />
*: arithmetic<br />
*: void<br />
*: functions<br />
* Default Args<br />
<br />
=== To Do 2===<br />
=== Resources 2===<br />
<br />
* [http://www.cplusplus.com/doc/tutorial/pointers/ Everything you always wanted to know about pointers, but were afraid to ask]<br />
*: Single resource that will give you all the knowledge you need about pointers, including information given in the last two classes. WARNING! Reading online tutorials is NOT a substitute to visiting in-class lectures.<br />
<br />
=== blog posts 2===<br />
<br />
* [http://www.admix-dev.tumblr.com/post/50621074633/oliver-steele-created-a-great-image-explaining-how Easy picture explanation of how the Git works]<br />
*: Easy and detailed explanation of Git transfer procedures using schema.<br />
* [http://admix-dev.tumblr.com/post/50350903940/adding-auto-completion-to-the-git-commands-mac-os Adding auto-completion to the git commands on Mac OS X]<br />
*: Short guide how to set up auto-completion for the '''git''' commands on your Mac (using '''Tab''' to complete commands).<br />
<br />
== Week 3 - May 19==<br />
=== This Week 3===<br />
* Real Signature of main()<br />
* Pre-Processor directives<br />
*: define (macros)<br />
*: include<br />
* typedefs<br />
* Variable Argument list<br />
* [http://www.cplusplus.com/doc/tutorial/namespaces/ Namespaces]<br />
* friends<br />
<br />
=== To Do 3===<br />
* program: int AscToInt(const char *num);<br />
* program: char* nstrcat(char* name, ...) //Basically strcat with >= 1 arguments<br />
<br />
=== Resources 3===<br />
=== Blog posts 3===<br />
* <u>'''AscToInt Solutions'''</u><br />
<br />
:[http://lisyonok85.wordpress.com/?p=7 SecA Artem's Solution]<br />
<br />
:[http://dongdli.wordpress.com/2013/05/21/codes-of-the-function-int-asctoint-const-char-num/ Codes from SECTION_B DONG LI]<br />
<br />
:[http://malliso1.wordpress.com/2013/05/21/converting-a-string-of-numbers-to-an-integer/ Converting a string of numbers to an integer.]<br />
<br />
:[http://matthewtorrance.blogspot.ca/2013/05/asctoint.html AscToInt Function]<br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/21/the-ascii-conversion-challenge/ SecA Drew Terrance Kerr]<br />
<br />
:[http://ssuduruk.blogspot.ca/2013/05/asctointconst-char-num.html SecA Chiyoung Choi]<br />
<br />
:[http://admix-dev.tumblr.com/post/51005560090/conversion-char-into-int SecB Oleksandr Snurnikov, (ascToInt() function) ]<br />
<br />
:[http://happyivyli.blogspot.ca/2013/05/solution-of-int-asctointconst-char-num.html SecB Na Li]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/blog-post.html SecA Herman Hum]<br />
<br />
:[http://shahzyn.blogspot.ca/2013/05/ascii-to-int.html SecA Shehzin Arshad]<br />
<br />
:[http://joshem31.wordpress.com/2013/05/21/my-first-challenge-my-first-asctoint-function/ SecA Jose Ramirez]<br />
<br />
:[http://mattmaceachern.blogspot.ca/2013/05/blog-post.html SecA Matt MacEachern]<br />
<br />
:[http://jijungmin90.tumblr.com/post/51031179606/simple-char-to-intlI SecA Jungmin Ji]<br />
<br />
:[http://namniak.blogspot.ca/2013/05/asctoint.html Vadim Namniak's Solution]<br />
<br />
:[http://zhunxue1912.wordpress.com/2013/05/21/int-asctointconst-char-num/ Zhun Xue]<br />
<br />
:[http://brackethunter.blogspot.ca/2013/05/asctoint-11-now-with-range-checking-and.html Brad Stuart's Improved Solution]<br />
<br />
:[http://markieta.blogspot.ca/2013/05/asctoint.html Christopher Markieta]<br />
<br />
:[http://haydeezpluto.wordpress.com/2013/05/26/ascii-to-integer-conversion/ Amal Khandelwal]<br />
<br />
:[http://tthaninayagam.blogspot.ca/2013/05/asctoint.html SecB Thanushaa Thaninayagam]<br />
<br />
* <u>'''nstrcat Solutions'''</u><br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/22/concatenating-an-arbitrary-number-of-strings/ SecA Drew Terrance Kerr]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/const-char-nstrcatchar-des.html SecA Herman Hum]<br />
<br />
:[http://admix-dev.tumblr.com/post/51133316724/const-char-nstrcat-char-to-strcat-with-1 SecB Oleksandr Snurnikov]<br />
:*[https://github.com/admix/admixSoft/blob/master/OOP344/nstrcat.cpp direct link to the source code on the github]<br />
<br />
:[http://brackethunter.blogspot.ca/2013/05/frustrationnstrcatdes.html Brad Stuart]<br />
<br />
:[http://mattmaceachern.blogspot.ca/2013/05/nstrcatcpp-no-fail-safe-yet-to-be-added.html SecA Matt MacEachern]<br />
<br />
:[http://dongdli.wordpress.com/2013/05/27/code-of-nstrcat-a-function-to-concatinate-unknow-amount-of-strings/ SECTION_B DONG LI]<br />
<br />
== Week 4 - May 26==<br />
=== This Week 4 ===<br />
* Project introduction<br />
*: bio, cio<br />
* Virtuals<br />
*: Review<br />
*: Pure Virtual<br />
*: Abstract Base Classes<br />
<br />
=== To Do 4===<br />
<br />
=== Resources 4===<br />
=== blog posts 4===<br />
<br />
== Week 5 - June 2==<br />
=== This Week 5===<br />
=== To Do 5===<br />
=== Resources 5===<br />
=== blog posts 5===<br />
== Week 6 - June 9==<br />
=== This Week 6===<br />
=== To Do 6===<br />
=== Resources 6===<br />
=== blog posts 6===<br />
== Week 7 - June 16==<br />
=== This Week 7===<br />
=== To Do 7===<br />
=== Resources 7===<br />
=== blog posts ===<br />
== Week 8 - June 23 (Study Break)==<br />
=== This Week 8===<br />
=== To Do 8===<br />
=== Resources 8===<br />
=== blog posts 8===<br />
== Week 9 - June 30==<br />
=== This Week 9===<br />
=== To Do 9===<br />
=== Resources 9===<br />
=== blog posts 9===<br />
== Week 10 - July 7==<br />
=== This Week 10===<br />
=== To Do 10===<br />
=== Resources 10===<br />
=== blog posts 10===<br />
== Week 11 - July 14==<br />
=== This Week 11===<br />
=== To Do 11===<br />
=== Resources 11===<br />
=== blog posts 11===<br />
== Week 12 - July 21==<br />
=== This Week 12===<br />
=== To Do 12===<br />
=== Resources 12===<br />
=== blog posts 12===<br />
== Week 13 - July 28==<br />
=== This Week 13===<br />
=== To Do 13===<br />
=== Resources 13===<br />
=== blog posts 13===<br />
== Week 14 - August 4==<br />
=== This Week 14===<br />
=== To Do 14===<br />
=== Resources 14===<br />
=== blog posts 14===<br />
== Week 15 - August 11 (Exam Week)==<br />
=== This Week 15===<br />
=== To Do 15===<br />
=== Resources 15===<br />
=== blog posts 15===</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=User:Brad_Stuart&diff=95858User:Brad Stuart2013-05-24T17:22:30Z<p>Brad Stuart: /* Contact Info */</p>
<hr />
<div>==Brad Stuart==<br />
===Contact Info===<br />
*Email: bstuart1@learn.senecac.on.ca<br />
*IRC: Lester_Normal/Brad_S<br />
*[http://brackethunter.blogspot.ca/ My Blog]<br />
<br />
----<br />
<br />
** [http://brackethunter.blogspot.ca/2013/05/variadic-example-3.html Variadic Function Sample #3]<br />
** [http://brackethunter.blogspot.ca/2013/05/rewinding-variadic-lists.html Rewinding va_list's]</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=OOP344_Student_Resources&diff=95857OOP344 Student Resources2013-05-24T17:01:50Z<p>Brad Stuart: /* Online C++ tutorials */</p>
<hr />
<div>{{OOP344 Index | 20131}}<br />
===Quick Link===<br />
*[[Tortoise in 5]]<br />
*[[Linked List]]<br />
<br /><br />
<br />
This page will serve as a hub for all OOP344 students to create wiki pages related to the course for the purpose of aiding their fellow students. Got a handy trick that makes programming easier? Feel free to build a page about it and link it here for all your classmates to use!<br />
<br />
== Standards ==<br />
To add a new page, simply put a link at the top of the page and a section below with a link and short description of what the page is about. Simple enough?<br />
<br />
<br />
== Webpages (Useful links)==<br />
<br />
*https://scs.senecac.on.ca/~btp300 <-- the degree version of oop344. Good for an indepth look at the material. Includes Workshops and Walkthroughs<br />
*https://cs.senecac.on.ca/~fardad.soleimanloo/oop344/notes/ <-- Notes only up to Oct 28, 2009. Includes past tests<br />
*svn://zenit.senecac.on.ca/oop344 <-- Up to Date Notes shown in all lectures<br />
*[http://zenit.senecac.on.ca/wiki/index.php/How_to_set_up_tab_spaces Changing Tab Key Behaviour in Certain IDEs]<br />
<br />
== GIT ==<br />
[[GIT for OOP344 Projects]]<br />
<br />
<br />
* This is by far the best tutorial for Github, actually the best tutorial ever! Check it out. (http://pcottle.github.com/learnGitBranching/) -Mohammed Al Zubair<br />
<br />
== Creating Projects in Visual Studio for Console Applications ==<br />
Visual Studio is available for download from [http://acs.senecac.on.ca/ ACS] <br /><br /><br />
To create a new project for console applications:<br />
* From the File menu, select New > Project<br />
* Select Project Type as Visual C++ > Win32<br />
* Select template <i>Win32 Console Application</i><br />
* Assign project name and choose local directory<br />
* Uncheck the box <i>Create directory for solution</i><br />
* In the wizard, click on <i>Application Settings</i><br />
* Application type of <i>Console application</i> should be selected<br />
* Check the box beside <i>Empty project</i><br />
In "Solution Explorer", add new item to Header Files or Source Files.<br />
<br />
==IRC==<br />
<br />
=== The Basics of IRC ===<br />
IRC is also known as Internet Relay Chat. The principal of it is essentially to provide accessible chat rooms for people over the internet over multiple operating systems. To be able to connect and interact with IRC, one must first have an IRC client of some sort.<br />
<br />
===IRC Clients===<br />
There is a wide variety of different IRC clients on all platforms. Here is a list of just a few:<br />
* [https://addons.mozilla.org/en-US/firefox/addon/16 Chatzilla] (Add-on for Firefox)<br />
* [http://www.mirc.com/ mIRC] (Windows)<br />
* [http://www.hydrairc.com/ HydraIRC] (Windows)<br />
* [http://colloquy.info/ Colloquy] (MacOS)<br />
* [http://www.aquaticx.com/ xIRC] (MacOS)<br />
* [http://www.babbelirc.com/ Babbel] (Windows/MacOS)<br />
* [http://xchat.org/ XChat] (Windows/Linux)<br />
* [http://www.irssi.org/ irssi] (Windows/MacOS/Linux)<br />
* [http://webchat.freenode.net/ Freenode] (Windows/MacOS/Linux (Web Based IRC)<br />
* [http://www.hexchat.org/ HexChat] (Windows)<br />
<br />
Once installed and running, you will have such options as connecting to various servers. We're particularly interested in the one which the seneca chatroom is located.<br />
<br />
===Basic Commands===<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
! Command !! Description<br />
|-<br />
| <code>/server irc.freenode.net</code> || Connects your client to an IRC server. In this case, it is the freenode server<br />
|-<br />
|-<br />
| <code>/join #seneca </code> || Join #seneca channel<br />
|-<br />
|-<br />
| <code>/nick YOURNEWNICKNAME</code> || Change your nickname<br />
|-<br />
|-<br />
| <code>/leave #seneca</code> || Leave #seneca channel<br />
|-<br />
| <code>/part #seneca</code> || Another fancy (more elegant) way of leaving<br />
|-<br />
|-<br />
| <code>/query NICKNAME</code> || Open a private chat with someone<br />
|-<br />
|}<br />
<br />
See [http://toxin.jottit.com/freenode_chanserv_commands this] for more advanced (and fun) IRC commands that works at Freenode.<br />
<br />
<br />
===Protecting your Nickname===<br />
<br />
Once connected to the server, it is a good idea to register your nick, otherwise someone can impersonate you and steal your nick -- Forcing you to change your name again.<br />
<br />
To register, one uses the following command:<br />
<code><br />
/msg nickserv REGISTER foo foo@bar.com<br />
</code><br />
<br />
This will associate your account with the e-mail foo@bar.com, as well as have your password be foo.<br />
To identify yourself, you do a similar command:<br />
<code><br />
/msg nickserv IDENTIFY foo<br />
</code><br />
<br />
If someone has taken your registered nick, or you have a zombie in the channel (Where you drop connection but you still appear in the channel), there is a command to fix that.<br />
<br />
{| class="wikitable sortable" border="1" cellpadding="5"<br />
! Command !! Description<br />
|-<br />
| <code>/msg NickServ RECOVER [nick] [personal password]</code> || <code>RECOVER</code> Kill another user who has taken your nick (leave out the brackets [])<br />
|-<br />
|-<br />
| <code>/msg NickServ GHOST [nick] [personal password]</code> || <code>GHOST</code> Kills the nickname (NOTE: Please use the Ghost command instead for now and leave out the brackets [])<br />
|-<br />
|}<br />
<br />
NOTE: Stick with <code>GHOST</code> for now, as <code>RECOVER</code> is becoming more obsolete.<br />
<br />
<br />
===Seneca @ Freenode===<br />
[http://freenode.net/ Freenode] is an IRC server/network. It is the largest free and open source software-focused IRC network.<br />
<br />
Seneca's official IRC channels such as [http://webchat.freenode.net/?channels=seneca%2Cseneca-social%2Cseneca-oop344&uio=d4 #seneca, #seneca-social, #seneca-oop344] and more are all at Freenode.<br />
<br />
To connect to Freenode, one has to have an IRC client. If you are too lazy to download and install an IRC client, Freenode has an alternate way to connect to their network called [http://webchat.freenode.net/ freenode Web IRC]. It is an IRC webapp client written in javascript. You will not need to install anything, just visit [http://webchat.freenode.net/ http://webchat.freenode.net/] and follow instructions. Everything will work in your browser as if it's magic.<br />
<br />
<br />
===How To Log IRC Conversations on mIRC===<br />
To log conversations on mIRC, you need to :<br />
<ol><br />
<li>Right click on the channel on the Switchbar (The bar with the channel names on it)</li><br />
<li>Select <b>Logging</b></li><br />
<li>Select <b>On</b></li><br />
</ol><br />
<br /><br />
To view a logged conversation:<br />
<ol><br />
<li>Click on <b>Tools</b></li><br />
<li>Click on <b>Log Files...</b></li><br />
<li>Find you log file and double click it</li><br />
</ol><br />
<br /><br />
<br />
===How To Identify on IRC Automatically via mIRC (and Join #Seneca-OOP344 Channel)===<br />
If you are using mIRC to connect to IRC and wish to automatically identify your nickname after its been registered so you do not have to type it out every time you connect to Freenode do the following:<br />
<br />
#. In the mIRC GUI, go to Tools > Script Editor<br />
#. Click on the Remote tab<br />
#. Add the following code to the page and click OK. (Remember to replace your PASSWORD with your password you set when you registered)<br />
<br /><br />
<pre><br />
ON 1:NOTICE:*registered*identify*:?:{<br />
/msg nickserv identify PASSWORD<br />
/join #seneca-oop344<br />
}<br />
</pre><br />
<br />
=== How To Identify on IRC Automatically via XChat (linux) and Join #Seneca-OOP344 Channel) ===<br />
If you are using linux, the best IRC client I can find is xchat, but identiy and join every time you log in became a hassle, here is the fix:<br />
<br />
# Click on the xchat option on the menu bar > Server list (ctrl+s)<br />
# Type in your nickname, registered ID and information on freenode<br />
# In Networks, scroll down and select freenode<br />
# On the right side, click on "edit"<br />
# Under connecting, check the option "auto connect to this network at startup"<br />
# Type your password in "Nickserv password"<br />
# close the window and click "connect"<br />
<br />
=== Some IRC short cuts for xchat ===<br />
If you use xchat these short cuts will save you from having to type a lot.<br />
<br />
# /ns identify "password" = /msg nickserv identify "password"<br />
# /id "password" = /msg nickserv identify "password"<br />
# /j "channel name" = /join "channel name"<br />
# /cs = /msg chanserv<br />
<br />
=== Hiding or Cloaking your IP Address ===<br />
<br />
One of the ways is to simply send an email to support@freenode.net with a request to hide your IP Address. Make sure to provide your registered nickname on the freenode IRC server. Your will get a reply in couple of days, so be patient.<br />
Another way, is to join #freenode chat and try to contact a chat moderator there.<br />
<br />
=== Useful Links ===<br />
* [http://freenode.net/faq.shtml Freenode FAQ]<br />
<br />
== Online C++ tutorials == <br />
[http://www.parashift.com/c++-faq-lite/ FAQs (Really great site)]<br /><br />
[http://www.functionx.com/cpp/ C++ tutorial site1]<br /><br />
[http://www.cplusplus.com/doc/tutorial/ C++ tutorial site2]<br /><br />
[http://www.learncpp.com/ C++ tutorial site3]<br /><br />
[http://www.cprogramming.com/tutorial.html C/C++ tutorial site]<br /><br />
<br />
*[http://www.eskimo.com/~scs/cclass/int/sx11c.html Variadic Function help]<br />
<br />
== Linked List Explained ==<br />
[[Linked List]] <br /><br />
If you don't really understand how linked lists work or why we should even use them then this page is made for you!<br /><br />
[http://richardbowles.tripod.com/cpp/linklist/linklist.htm Another Linked List Tutorial]<br />
<br />This is another tutorial for linked lists that will walk you through how to program one.<br />
== Practice Questions/Solutions ==<br />
* [[q1 A linked list question]] - [[q1sol the solution]]<br />
* [[q2 A binary file question]] - [[q2sol the solution]]<br />
* [[walk1 a walkthrough with templates]] - [[walk1sol the solution]]<br />
<br />
== C++ Casts Explained By Fardad 14/04/2011 ==<br />
For those that did not attend Thursday's class the week before the exam, Fardad explained how to use C++ casting<br /><br />
that can also be found in OOP244's notes by C++ Wizard Chris Szalwinski.<br /><br />
<br />
[https://cs.senecac.on.ca/~oop244/pages/content/ansis.html Chris Szalwinski's OOP244 Notes<br />
<br />
<br />
== OS Key-Codes ==<br />
=== Mac OS X ===<br />
* #define '''UP_KEY''' 259<br />
* #define ''' DOWN_KEY''' 258<br />
* #define ''' LEFT_KEY''' 260<br />
* #define ''' RIGHT_KEY''' 261<br />
* #define ''' PGUP_KEY''' 6 ''/* Control + f */''<br />
* #define ''' PGDN_KEY''' 2 ''/* Control + b */''<br />
* #define ''' ENTER_KEY''' 10<br />
* #define ''' TAB_KEY''' 9<br />
* #define ''' BACKSPACE_KEY''' 127<br />
* #define ''' DEL_KEY''' 330 ''/* FN + Delete */''<br />
* #define ''' HOME_KEY''' 1 ''/* Control + a */''<br />
* #define ''' END_KEY''' 5 ''/* Control + e */''<br />
* #define ''' ESCAPE_KEY''' 27<br />
* #define ''' INSERT_KEY''' 16 ''/* Control + p */''<br />
* #define ''' SPACE_KEY''' 32<br />
<br />
''FN + ALT + Function Keys with Mac Special Function Key Setup''<br />
<br />
''ALT + Function Keys as Standard Function Keys Setup''<br />
<br />
* #define ''' F1_KEY''' 270<br />
* #define ''' F2_KEY''' 271<br />
* #define ''' F3_KEY''' 272<br />
* #define ''' F4_KEY''' 273<br />
* #define ''' F5_KEY''' 274<br />
* #define ''' F6_KEY''' 275<br />
* #define ''' F7_KEY''' 276<br />
* #define ''' F8_KEY''' 277<br />
* #define ''' F9_KEY''' 278<br />
* #define ''' F10_KEY''' 279<br />
* #define ''' F11_KEY''' 280<br />
* #define ''' F12_KEY''' 281<br />
== Obsolete Stuff ==<br />
=== SVN ===<br />
<p>[[Development and submission steps using SVN - OOP344 20121]] This is a quick way to get everyone familiar with SVN in a brain friendly manner without the need to sift through pages of unnecessary documentation.</p><br />
<p><br />
[http://lmgtfy.com/?q=what+is+svn What is SVN?] Subversion or SVN is a control system where it allows you to properly organize and manage files and directories and the changes to them over time. SVN allows you to recover older versions of your data, or examine the history of how your data changed. In this regard, many people think of a version control system as a sort of “time machine”. [http://svnbook.red-bean.com/en/1.4/svn.intro.whatis.html]<br />
</p><br />
=== SVN Clients ===<br />
* [[Tortoise in 5]] - This page is dedicated to those poor souls that have to use SVN but don't have time to read through chapter upon chapter about it just to be able to participate in assignment 2.<br />
* [[RabbitVCS]] - RabbitVCS is a Linux alternative to TortoiseSVN. This page will help describe how to install and use RabbitVCS.<br />
* [http://rapidsvn.tigris.org/ RapidSVN] - Another SVN client for Linux - a very simple and straight-forward SVN client.<br />
* [http://www.lachoseinteractive.net/en/community/subversion/svnx/features/?sid=337041a90a9f11841f9f77fda5224723 svnX] - A very competent SVN client for Mac OS X.<br />
<br />
=== SVN Hosts ===<br />
<p>The best way to learn SVN is to experiment it, we programmers, love to explore. Though Seneca already provides us SVN hosting, there are other free SVN hosting out there that you can use and experiment around (since you might not want to mess around with your team's account if you don't know what you're doing). One of the best SVN hosts out there is probably [http://code.google.com/hosting/ Google Code Hosting] because it has many cool features such as web presentation of [http://code.google.com/p/rainulf/source/browse/trunk/core.php syntax highlighted sources], [http://code.google.com/p/rainulf/source/diff?path=/trunk/core.php&format=side&r=4&old_path=/trunk/core.php&old=3 diff], [http://code.google.com/p/rainulf/w/list wiki] and more (which you can do also within a client program) of sources and it does show what SVNs are truly for: ease.</p><br />
<p>Here's a few SVN hosts:</p><br />
* Google Code Hosting - create account [http://code.google.com/hosting/createProject here]<br />
* [http://sourceforge.net/ SourceForge]<br />
* [https://www.bountysource.com/ Bounty Source]<br />
* And [http://lmgtfy.com/?q=svn+hosts more], ranging from free to paid hosting.<br />
NOTE: Seneca already provides us SVN hosting (SVN login and pass), all of our work academic work should be all there.<br />
<br />
=== Doing a task in SVN ===<br />
Below is a quick guide to follow to complete a task under SVN.<br />
<br />
<br />
1. Create subdirectories in "branches" under your Seneca email ID. This is your ROOT.<br />
Repo<br />
|__ Branches<br />
|__ SenecaEmailID<br />
<br />
<br />
2. Create a subdirectory under your brach under the task name. (ex. BkSpcBug)<br />
Repo<br />
|__ Branches<br />
|__ SenecaEmailID<br />
|____ BkSpcBug<br />
<br />
<br />
<br />
3. Update your branch to set the files in (BkSpcBug)<br />
Repo<br />
|__ Branches<br />
|__ SenecaEmailID<br />
|____ BkSpcBug<br />
|_____file1.cpp<br />
|_____file2.cpp<br />
<br />
4. Start working on (BkSpcBug).<br />
<br />
5. When complete (Bug Fixed).<br />
<br />
5.1 Set the trunk status on the team page to: COMITTING by your Seneca ID.<br />
<br />
5.2 Merge the branch (BkSpcBug) to Trunk.<br />
<br />
5.2.1 Edit possible conflicts.<br />
<br />
5.2.2 Set conflicts to resolved.<br />
<br />
5.3. Recompile the trunk.<br />
<br />
5.4 Set the trunk status on the team page to: COMITTED by your Seneca ID.</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=User:Brad_Stuart&diff=95834User:Brad Stuart2013-05-23T22:14:07Z<p>Brad Stuart: /* Contact Info */</p>
<hr />
<div>==Brad Stuart==<br />
===Contact Info===<br />
*Email: bstuart1@learn.senecac.on.ca<br />
*IRC: Lester_Normal/Brad_S<br />
*[http://brackethunter.blogspot.ca/ My Blog]<br />
<br />
----<br />
<br />
** [http://brackethunter.blogspot.ca/2013/05/variadic-example-3.html Variadic Function Sample #3]</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Weekly_Schedule_20132_-_OOP344&diff=95827Weekly Schedule 20132 - OOP3442013-05-23T18:05:28Z<p>Brad Stuart: /* Blog posts 3 */</p>
<hr />
<div>{{OOP344 Index | 20132}}<br />
<br />
Under Construction!<br />
<br />
== Week 1 - May 5 ==<br />
<br />
=== This Week 1 ===<br />
<br />
* Introduction to Open Source development.<br />
* Collaboration Tools:<br />
** Wiki<br />
** Blog<br />
** IRC<br />
** Code Repository<br />
**: Git, Svn, ....<br />
** Big Blue Button<br />
* Etherpad<br />
** [http://etherpad.proximity.on.ca:9001 Seneca Etherpad]<br />
** http://primarypad.com/<br />
* Object Orientation Review<br />
* C Review<br />
*: pointers<br />
*: pointers and arrays<br />
<br />
=== To Do 1===<br />
==== Due May 7th (Tuesday) 18:00 ====<br />
# Create an account on [https://github.com github]<br />
## Make sure your account name is presentable. This name will stay with you forever.<br />
## Make sure your information on github is complete (real name, email, etc...) <br />
# Send ONE email to [mailto:fardad.soleimanloo@senecacollege.ca?subject=344Github20132 me] containing your git hub id<br />
#: subject of the email should be '''''344Github20132'''''<br />
#: '''''email content'''''<br />
#: name: Your Name (exactly as it appears on your Seneca student card)<br />
#: nickname: Your Nick name<br />
#: Git hub ID: your Github id <br />
==== Due by May 13th, 23:59 ====<br />
# Create a [http://en.wikipedia.org/wiki/Blog blog] (anywhere you like)<br />
# Join the IRC by [http://www.wikihow.com/Register-a-User-Name-on-Freenode registering your nickname on freenode] server and joining the #seneca-oop344 channel for 344 related dialog<br />
#: Additional channels of interest: #seneca to interact with all Seneca students participating in opensource projects, and #seneca-social for Social (off-topic) dialog.<br />
# Read [http://git-scm.com/book Pro-git book]<br />
#: Chapter One and Chapter Two<br />
# Create an account on this wiki: send an email to [mailto:cdot-wiki-admin@senecac.on.ca?subject=Wiki+account+request cdot-wiki-admin@senecac.on.ca] and ask for an account, an email will be sent back to you with your userid and a temporary password; make sure you have the following included in your email.<br />
#* Email subject: Wiki Account Request<br />
#* The subject you are enrolled in: "OOP344"<br />
#* Your Seneca user id<br />
#* Send this email from your Seneca Account only<br />
# Learn how to do basic editing in a wiki<br />
<br />
=== Resources 1 ===<br />
* Git<br />
** [http://git-scm.com/book Pro-git book]<br />
** [[GIT for OOP344 Projects]]<br />
** Great 15 minutes tutorial that will give you basic understanding of Git<br />
**: [http://try.github.com/levels/1/challenges/1 Try GitHub]<br />
** [http://www.sourcetreeapp.com Git GUI Client for Mac ] <br />
** [http://windows.github.com/ Github Client for Windows] <br />
** [https://help.github.com/articles/generating-ssh-keys Generating SSH keys for github]<br />
* Wiki<br />
* [http://www.wikihow.com/Register-a-User-Name-on-Freenode How to register your IRC nickname on freenode]<br />
* [http://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients Compare IRC clients]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:How_to_edit_a_page How To edit Wiki pages]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet How To edit Wiki Cheatsheet]<br />
* Blogs<br />
** [http://wordpress.com/ Wordpress]<br />
** [http://www.blogger.com/ Blogger]<br />
** [https://www.tumblr.com/ Tumblr]<br />
* IRC Clients:<br />
** [http://www.silverex.org/download/ XChat 2 (Windows)]<br />
** [http://colloquy.info/downloads.html Colloquy Colloguy (Mac)] <br />
** [https://addons.mozilla.org/en-US/firefox/addon/chatzilla/ ChatZilla (Multi-platform)]<br />
** [http://clicksandwhistles.com/download.php Clicks & Whistles (Windows)]<br />
* How to Install <br />
** [http://wiki.tryphon.eu/how_to_install_xchat XChat]<br />
== Week 2 - May 12==<br />
=== This Week 2===<br />
* Git review<br />
*: [http://git-scm.com/docs/git-clone clone], [http://git-scm.com/docs/git-pull pull], [http://git-scm.com/docs/git-push push]<br />
*: [http://git-scm.com/docs/git-add add], [http://git-scm.com/docs/git-commit commit], [http://git-scm.com/docs/git-branch branch]<br />
* Operators<br />
*: review<br />
*: Logical<br />
*: Arithmetic<br />
*: Lazy evaluation<br />
*: operators in C <br />
* pointers (continued)<br />
*: arrays<br />
*: arithmetic<br />
*: void<br />
*: functions<br />
* Default Args<br />
<br />
=== To Do 2===<br />
=== Resources 2===<br />
<br />
* [http://www.cplusplus.com/doc/tutorial/pointers/ Everything you always wanted to know about pointers, but were afraid to ask]<br />
*: Single resource that will give you all the knowledge you need about pointers, including information given in the last two classes. WARNING! Reading online tutorials is NOT a substitute to visiting in-class lectures.<br />
<br />
=== blog posts 2===<br />
<br />
* [http://www.admix-dev.tumblr.com/post/50621074633/oliver-steele-created-a-great-image-explaining-how Easy picture explanation of how the Git works]<br />
*: Easy and detailed explanation of Git transfer procedures using schema.<br />
* [http://admix-dev.tumblr.com/post/50350903940/adding-auto-completion-to-the-git-commands-mac-os Adding auto-completion to the git commands on Mac OS X]<br />
*: Short guide how to set up auto-completion for the '''git''' commands on your Mac (using '''Tab''' to complete commands).<br />
<br />
== Week 3 - May 19==<br />
=== This Week 3===<br />
* Real Signature of main()<br />
* Pre-Processor directives<br />
*: define (macros)<br />
*: include<br />
* typedefs<br />
* Variable Argument list<br />
* [http://www.cplusplus.com/doc/tutorial/namespaces/ Namespaces]<br />
* friends<br />
<br />
=== To Do 3===<br />
* program: int AscToInt(const char *num);<br />
* program: char* nstrcat(char* name, ...) //Basically strcat with >= 1 arguments<br />
<br />
=== Resources 3===<br />
=== Blog posts 3===<br />
* <u>'''AscToInt Solutions'''</u><br />
<br />
:[http://lisyonok85.wordpress.com/?p=7 SecA Artem's Solution]<br />
<br />
:[http://dongdli.wordpress.com/2013/05/21/codes-of-the-function-int-asctoint-const-char-num/ Codes from SECTION_B DONG LI]<br />
<br />
:[http://malliso1.wordpress.com/2013/05/21/converting-a-string-of-numbers-to-an-integer/ Converting a string of numbers to an integer.]<br />
<br />
:[http://matthewtorrance.blogspot.ca/2013/05/asctoint.html AscToInt Function]<br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/21/the-ascii-conversion-challenge/ SecA Drew Terrance Kerr]<br />
<br />
:[http://ssuduruk.blogspot.ca/2013/05/asctointconst-char-num.html SecA Chiyoung Choi]<br />
<br />
:[http://admix-dev.tumblr.com/post/51005560090/conversion-char-into-int SecB Oleksandr Snurnikov, (ascToInt() function) ]<br />
<br />
:[http://happyivyli.blogspot.ca/2013/05/solution-of-int-asctointconst-char-num.html SecB Na Li]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/blog-post.html SecA Herman Hum]<br />
<br />
:[http://shahzyn.blogspot.ca/2013/05/ascii-to-int.html SecA Shehzin Arshad]<br />
<br />
:[http://joshem31.wordpress.com/2013/05/21/my-first-challenge-my-first-asctoint-function/ SecA Jose Ramirez]<br />
<br />
:[http://mattmaceachern.blogspot.ca/2013/05/blog-post.html SecA Matt MacEachern]<br />
<br />
:[http://jijungmin90.tumblr.com/post/51031179606/simple-char-to-intlI think SecA Jungmin Ji]<br />
<br />
:[http://namniak.blogspot.ca/2013/05/asctoint.html Vadim Namniak's Solution]<br />
<br />
:[http://zhunxue1912.wordpress.com/2013/05/21/int-asctointconst-char-num/ Zhun Xue]<br />
<br />
:[http://brackethunter.blogspot.ca/2013/05/asctoint-11-now-with-range-checking-and.html Brad Stuart's Improved Solution]<br />
<br />
* <u>'''nstrcat Solutions'''</u><br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/22/concatenating-an-arbitrary-number-of-strings/ SecA Drew Terrance Kerr]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/const-char-nstrcatchar-des.html SecA Herman Hum]<br />
<br />
:[http://admix-dev.tumblr.com/post/51133316724/const-char-nstrcat-char-to-strcat-with-1 SecB Oleksandr Snurnikov]<br />
:*[https://github.com/admix/admixSoft/blob/master/OOP344/nstrcat.cpp direct link to the source code on the github]<br />
<br />
:[http://brackethunter.blogspot.ca/2013/05/frustrationnstrcatdes.html Brad Stuart]<br />
<br />
== Week 4 - May 26==<br />
=== This Week 4 ===<br />
* Project introduction<br />
*: bio, cio<br />
* Virtuals<br />
*: Review<br />
*: Pure Virtual<br />
*: Abstract Base Classes<br />
<br />
=== To Do 4===<br />
<br />
=== Resources 4===<br />
=== blog posts 4===<br />
<br />
== Week 5 - June 2==<br />
=== This Week 5===<br />
=== To Do 5===<br />
=== Resources 5===<br />
=== blog posts 5===<br />
== Week 6 - June 9==<br />
=== This Week 6===<br />
=== To Do 6===<br />
=== Resources 6===<br />
=== blog posts 6===<br />
== Week 7 - June 16==<br />
=== This Week 7===<br />
=== To Do 7===<br />
=== Resources 7===<br />
=== blog posts ===<br />
== Week 8 - June 23 (Study Break)==<br />
=== This Week 8===<br />
=== To Do 8===<br />
=== Resources 8===<br />
=== blog posts 8===<br />
== Week 9 - June 30==<br />
=== This Week 9===<br />
=== To Do 9===<br />
=== Resources 9===<br />
=== blog posts 9===<br />
== Week 10 - July 7==<br />
=== This Week 10===<br />
=== To Do 10===<br />
=== Resources 10===<br />
=== blog posts 10===<br />
== Week 11 - July 14==<br />
=== This Week 11===<br />
=== To Do 11===<br />
=== Resources 11===<br />
=== blog posts 11===<br />
== Week 12 - July 21==<br />
=== This Week 12===<br />
=== To Do 12===<br />
=== Resources 12===<br />
=== blog posts 12===<br />
== Week 13 - July 28==<br />
=== This Week 13===<br />
=== To Do 13===<br />
=== Resources 13===<br />
=== blog posts 13===<br />
== Week 14 - August 4==<br />
=== This Week 14===<br />
=== To Do 14===<br />
=== Resources 14===<br />
=== blog posts 14===<br />
== Week 15 - August 11 (Exam Week)==<br />
=== This Week 15===<br />
=== To Do 15===<br />
=== Resources 15===<br />
=== blog posts 15===</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Weekly_Schedule_20132_-_OOP344&diff=95819Weekly Schedule 20132 - OOP3442013-05-23T14:24:06Z<p>Brad Stuart: /* Blog posts 3 */</p>
<hr />
<div>{{OOP344 Index | 20132}}<br />
<br />
Under Construction!<br />
<br />
== Week 1 - May 5 ==<br />
<br />
=== This Week 1 ===<br />
<br />
* Introduction to Open Source development.<br />
* Collaboration Tools:<br />
** Wiki<br />
** Blog<br />
** IRC<br />
** Code Repository<br />
**: Git, Svn, ....<br />
** Big Blue Button<br />
* Etherpad<br />
** [http://etherpad.proximity.on.ca:9001 Seneca Etherpad]<br />
** http://primarypad.com/<br />
* Object Orientation Review<br />
* C Review<br />
*: pointers<br />
*: pointers and arrays<br />
<br />
=== To Do 1===<br />
==== Due May 7th (Tuesday) 18:00 ====<br />
# Create an account on [https://github.com github]<br />
## Make sure your account name is presentable. This name will stay with you forever.<br />
## Make sure your information on github is complete (real name, email, etc...) <br />
# Send ONE email to [mailto:fardad.soleimanloo@senecacollege.ca?subject=344Github20132 me] containing your git hub id<br />
#: subject of the email should be '''''344Github20132'''''<br />
#: '''''email content'''''<br />
#: name: Your Name (exactly as it appears on your Seneca student card)<br />
#: nickname: Your Nick name<br />
#: Git hub ID: your Github id <br />
==== Due by May 13th, 23:59 ====<br />
# Create a [http://en.wikipedia.org/wiki/Blog blog] (anywhere you like)<br />
# Join the IRC by [http://www.wikihow.com/Register-a-User-Name-on-Freenode registering your nickname on freenode] server and joining the #seneca-oop344 channel for 344 related dialog<br />
#: Additional channels of interest: #seneca to interact with all Seneca students participating in opensource projects, and #seneca-social for Social (off-topic) dialog.<br />
# Read [http://git-scm.com/book Pro-git book]<br />
#: Chapter One and Chapter Two<br />
# Create an account on this wiki: send an email to [mailto:cdot-wiki-admin@senecac.on.ca?subject=Wiki+account+request cdot-wiki-admin@senecac.on.ca] and ask for an account, an email will be sent back to you with your userid and a temporary password; make sure you have the following included in your email.<br />
#* Email subject: Wiki Account Request<br />
#* The subject you are enrolled in: "OOP344"<br />
#* Your Seneca user id<br />
#* Send this email from your Seneca Account only<br />
# Learn how to do basic editing in a wiki<br />
<br />
=== Resources 1 ===<br />
* Git<br />
** [http://git-scm.com/book Pro-git book]<br />
** [[GIT for OOP344 Projects]]<br />
** Great 15 minutes tutorial that will give you basic understanding of Git<br />
**: [http://try.github.com/levels/1/challenges/1 Try GitHub]<br />
** [http://www.sourcetreeapp.com Git GUI Client for Mac ] <br />
** [http://windows.github.com/ Github Client for Windows] <br />
** [https://help.github.com/articles/generating-ssh-keys Generating SSH keys for github]<br />
* Wiki<br />
* [http://www.wikihow.com/Register-a-User-Name-on-Freenode How to register your IRC nickname on freenode]<br />
* [http://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients Compare IRC clients]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:How_to_edit_a_page How To edit Wiki pages]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet How To edit Wiki Cheatsheet]<br />
* Blogs<br />
** [http://wordpress.com/ Wordpress]<br />
** [http://www.blogger.com/ Blogger]<br />
** [https://www.tumblr.com/ Tumblr]<br />
* IRC Clients:<br />
** [http://www.silverex.org/download/ XChat 2 (Windows)]<br />
** [http://colloquy.info/downloads.html Colloquy Colloguy (Mac)] <br />
** [https://addons.mozilla.org/en-US/firefox/addon/chatzilla/ ChatZilla (Multi-platform)]<br />
** [http://clicksandwhistles.com/download.php Clicks & Whistles (Windows)]<br />
* How to Install <br />
** [http://wiki.tryphon.eu/how_to_install_xchat XChat]<br />
== Week 2 - May 12==<br />
=== This Week 2===<br />
* Git review<br />
*: [http://git-scm.com/docs/git-clone clone], [http://git-scm.com/docs/git-pull pull], [http://git-scm.com/docs/git-push push]<br />
*: [http://git-scm.com/docs/git-add add], [http://git-scm.com/docs/git-commit commit], [http://git-scm.com/docs/git-branch branch]<br />
* Operators<br />
*: review<br />
*: Logical<br />
*: Arithmetic<br />
*: Lazy evaluation<br />
*: operators in C <br />
* pointers (continued)<br />
*: arrays<br />
*: arithmetic<br />
*: void<br />
*: functions<br />
* Default Args<br />
<br />
=== To Do 2===<br />
=== Resources 2===<br />
<br />
* [http://www.cplusplus.com/doc/tutorial/pointers/ Everything you always wanted to know about pointers, but were afraid to ask]<br />
*: Single resource that will give you all the knowledge you need about pointers, including information given in the last two classes. WARNING! Reading online tutorials is NOT a substitute to visiting in-class lectures.<br />
<br />
=== blog posts 2===<br />
<br />
* [http://www.admix-dev.tumblr.com/post/50621074633/oliver-steele-created-a-great-image-explaining-how Easy picture explanation of how the Git works]<br />
*: Easy and detailed explanation of Git transfer procedures using schema.<br />
* [http://admix-dev.tumblr.com/post/50350903940/adding-auto-completion-to-the-git-commands-mac-os Adding auto-completion to the git commands on Mac OS X]<br />
*: Short guide how to set up auto-completion for the '''git''' commands on your Mac (using '''Tab''' to complete commands).<br />
<br />
== Week 3 - May 19==<br />
=== This Week 3===<br />
* Real Signature of main()<br />
* Pre-Processor directives<br />
*: define (macros)<br />
*: include<br />
* typedefs<br />
* Variable Argument list<br />
* [http://www.cplusplus.com/doc/tutorial/namespaces/ Namespaces]<br />
* friends<br />
<br />
=== To Do 3===<br />
* program: int AscToInt(const char *num);<br />
* program: char* nstrcat(char* name, ...) //Basically strcat with >= 1 arguments<br />
<br />
=== Resources 3===<br />
=== Blog posts 3===<br />
* <u>'''AscToInt Solutions'''</u><br />
<br />
:[http://lisyonok85.wordpress.com/?p=7 SecA Artem's Solution]<br />
<br />
:[http://dongdli.wordpress.com/2013/05/21/codes-of-the-function-int-asctoint-const-char-num/ Codes from SECTION_B DONG LI]<br />
<br />
:[http://malliso1.wordpress.com/2013/05/21/converting-a-string-of-numbers-to-an-integer/ Converting a string of numbers to an integer.]<br />
<br />
:[http://matthewtorrance.blogspot.ca/2013/05/asctoint.html AscToInt Function]<br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/21/the-ascii-conversion-challenge/ SecA Drew Terrance Kerr]<br />
<br />
:[http://ssuduruk.blogspot.ca/2013/05/asctointconst-char-num.html SecA Chiyoung Choi]<br />
<br />
:[http://admix-dev.tumblr.com/post/51005560090/conversion-char-into-int SecB Oleksandr Snurnikov, (ascToInt() function) ]<br />
<br />
:[http://happyivyli.blogspot.ca/2013/05/solution-of-int-asctointconst-char-num.html SecB Na Li]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/blog-post.html SecA Herman Hum]<br />
<br />
:[http://shahzyn.blogspot.ca/2013/05/ascii-to-int.html SecA Shehzin Arshad]<br />
<br />
:[http://joshem31.wordpress.com/2013/05/21/my-first-challenge-my-first-asctoint-function/ SecA Jose Ramirez]<br />
<br />
:[http://mattmaceachern.blogspot.ca/2013/05/blog-post.html SecA Matt MacEachern]<br />
<br />
:[http://jijungmin90.tumblr.com/post/51031179606/simple-char-to-intlI think SecA Jungmin Ji]<br />
<br />
:[http://namniak.blogspot.ca/2013/05/asctoint.html Vadim Namniak's Solution]<br />
<br />
:[http://zhunxue1912.wordpress.com/2013/05/21/int-asctointconst-char-num/ Zhun Xue]<br />
<br />
:[http://brackethunter.blogspot.ca/2013/05/asctoint-11-now-with-range-checking-and.html Brad Stuart's Improved Solution]<br />
<br />
* <u>'''nstrcat Solutions'''</u><br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/22/concatenating-an-arbitrary-number-of-strings/ SecA Drew Terrance Kerr]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/const-char-nstrcatchar-des.html SecA Herman Hum]<br />
<br />
:[http://admix-dev.tumblr.com/post/51133316724/const-char-nstrcat-char-to-strcat-with-1 SecB Oleksandr Snurnikov]<br />
:*[https://github.com/admix/admixSoft/blob/master/OOP344/nstrcat.cpp direct link to the source code on the github]<br />
<br />
== Week 4 - May 26==<br />
=== This Week 4 ===<br />
* Project introduction<br />
*: bio, cio<br />
* Virtuals<br />
*: Review<br />
*: Pure Virtual<br />
*: Abstract Base Classes<br />
<br />
=== To Do 4===<br />
<br />
=== Resources 4===<br />
=== blog posts 4===<br />
<br />
== Week 5 - June 2==<br />
=== This Week 5===<br />
=== To Do 5===<br />
=== Resources 5===<br />
=== blog posts 5===<br />
== Week 6 - June 9==<br />
=== This Week 6===<br />
=== To Do 6===<br />
=== Resources 6===<br />
=== blog posts 6===<br />
== Week 7 - June 16==<br />
=== This Week 7===<br />
=== To Do 7===<br />
=== Resources 7===<br />
=== blog posts ===<br />
== Week 8 - June 23 (Study Break)==<br />
=== This Week 8===<br />
=== To Do 8===<br />
=== Resources 8===<br />
=== blog posts 8===<br />
== Week 9 - June 30==<br />
=== This Week 9===<br />
=== To Do 9===<br />
=== Resources 9===<br />
=== blog posts 9===<br />
== Week 10 - July 7==<br />
=== This Week 10===<br />
=== To Do 10===<br />
=== Resources 10===<br />
=== blog posts 10===<br />
== Week 11 - July 14==<br />
=== This Week 11===<br />
=== To Do 11===<br />
=== Resources 11===<br />
=== blog posts 11===<br />
== Week 12 - July 21==<br />
=== This Week 12===<br />
=== To Do 12===<br />
=== Resources 12===<br />
=== blog posts 12===<br />
== Week 13 - July 28==<br />
=== This Week 13===<br />
=== To Do 13===<br />
=== Resources 13===<br />
=== blog posts 13===<br />
== Week 14 - August 4==<br />
=== This Week 14===<br />
=== To Do 14===<br />
=== Resources 14===<br />
=== blog posts 14===<br />
== Week 15 - August 11 (Exam Week)==<br />
=== This Week 15===<br />
=== To Do 15===<br />
=== Resources 15===<br />
=== blog posts 15===</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=Weekly_Schedule_20132_-_OOP344&diff=95817Weekly Schedule 20132 - OOP3442013-05-23T14:07:40Z<p>Brad Stuart: /* Blog posts 3 */</p>
<hr />
<div>{{OOP344 Index | 20132}}<br />
<br />
Under Construction!<br />
<br />
== Week 1 - May 5 ==<br />
<br />
=== This Week 1 ===<br />
<br />
* Introduction to Open Source development.<br />
* Collaboration Tools:<br />
** Wiki<br />
** Blog<br />
** IRC<br />
** Code Repository<br />
**: Git, Svn, ....<br />
** Big Blue Button<br />
* Etherpad<br />
** [http://etherpad.proximity.on.ca:9001 Seneca Etherpad]<br />
** http://primarypad.com/<br />
* Object Orientation Review<br />
* C Review<br />
*: pointers<br />
*: pointers and arrays<br />
<br />
=== To Do 1===<br />
==== Due May 7th (Tuesday) 18:00 ====<br />
# Create an account on [https://github.com github]<br />
## Make sure your account name is presentable. This name will stay with you forever.<br />
## Make sure your information on github is complete (real name, email, etc...) <br />
# Send ONE email to [mailto:fardad.soleimanloo@senecacollege.ca?subject=344Github20132 me] containing your git hub id<br />
#: subject of the email should be '''''344Github20132'''''<br />
#: '''''email content'''''<br />
#: name: Your Name (exactly as it appears on your Seneca student card)<br />
#: nickname: Your Nick name<br />
#: Git hub ID: your Github id <br />
==== Due by May 13th, 23:59 ====<br />
# Create a [http://en.wikipedia.org/wiki/Blog blog] (anywhere you like)<br />
# Join the IRC by [http://www.wikihow.com/Register-a-User-Name-on-Freenode registering your nickname on freenode] server and joining the #seneca-oop344 channel for 344 related dialog<br />
#: Additional channels of interest: #seneca to interact with all Seneca students participating in opensource projects, and #seneca-social for Social (off-topic) dialog.<br />
# Read [http://git-scm.com/book Pro-git book]<br />
#: Chapter One and Chapter Two<br />
# Create an account on this wiki: send an email to [mailto:cdot-wiki-admin@senecac.on.ca?subject=Wiki+account+request cdot-wiki-admin@senecac.on.ca] and ask for an account, an email will be sent back to you with your userid and a temporary password; make sure you have the following included in your email.<br />
#* Email subject: Wiki Account Request<br />
#* The subject you are enrolled in: "OOP344"<br />
#* Your Seneca user id<br />
#* Send this email from your Seneca Account only<br />
# Learn how to do basic editing in a wiki<br />
<br />
=== Resources 1 ===<br />
* Git<br />
** [http://git-scm.com/book Pro-git book]<br />
** [[GIT for OOP344 Projects]]<br />
** Great 15 minutes tutorial that will give you basic understanding of Git<br />
**: [http://try.github.com/levels/1/challenges/1 Try GitHub]<br />
** [http://www.sourcetreeapp.com Git GUI Client for Mac ] <br />
** [http://windows.github.com/ Github Client for Windows] <br />
** [https://help.github.com/articles/generating-ssh-keys Generating SSH keys for github]<br />
* Wiki<br />
* [http://www.wikihow.com/Register-a-User-Name-on-Freenode How to register your IRC nickname on freenode]<br />
* [http://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients Compare IRC clients]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:How_to_edit_a_page How To edit Wiki pages]<br />
* [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet How To edit Wiki Cheatsheet]<br />
* Blogs<br />
** [http://wordpress.com/ Wordpress]<br />
** [http://www.blogger.com/ Blogger]<br />
** [https://www.tumblr.com/ Tumblr]<br />
* IRC Clients:<br />
** [http://www.silverex.org/download/ XChat 2 (Windows)]<br />
** [http://colloquy.info/downloads.html Colloquy Colloguy (Mac)] <br />
** [https://addons.mozilla.org/en-US/firefox/addon/chatzilla/ ChatZilla (Multi-platform)]<br />
** [http://clicksandwhistles.com/download.php Clicks & Whistles (Windows)]<br />
* How to Install <br />
** [http://wiki.tryphon.eu/how_to_install_xchat XChat]<br />
== Week 2 - May 12==<br />
=== This Week 2===<br />
* Git review<br />
*: [http://git-scm.com/docs/git-clone clone], [http://git-scm.com/docs/git-pull pull], [http://git-scm.com/docs/git-push push]<br />
*: [http://git-scm.com/docs/git-add add], [http://git-scm.com/docs/git-commit commit], [http://git-scm.com/docs/git-branch branch]<br />
* Operators<br />
*: review<br />
*: Logical<br />
*: Arithmetic<br />
*: Lazy evaluation<br />
*: operators in C <br />
* pointers (continued)<br />
*: arrays<br />
*: arithmetic<br />
*: void<br />
*: functions<br />
* Default Args<br />
<br />
=== To Do 2===<br />
=== Resources 2===<br />
<br />
* [http://www.cplusplus.com/doc/tutorial/pointers/ Everything you always wanted to know about pointers, but were afraid to ask]<br />
*: Single resource that will give you all the knowledge you need about pointers, including information given in the last two classes. WARNING! Reading online tutorials is NOT a substitute to visiting in-class lectures.<br />
<br />
=== blog posts 2===<br />
<br />
* [http://www.admix-dev.tumblr.com/post/50621074633/oliver-steele-created-a-great-image-explaining-how Easy picture explanation of how the Git works]<br />
*: Easy and detailed explanation of Git transfer procedures using schema.<br />
* [http://admix-dev.tumblr.com/post/50350903940/adding-auto-completion-to-the-git-commands-mac-os Adding auto-completion to the git commands on Mac OS X]<br />
*: Short guide how to set up auto-completion for the '''git''' commands on your Mac (using '''Tab''' to complete commands).<br />
<br />
== Week 3 - May 19==<br />
=== This Week 3===<br />
* Real Signature of main()<br />
* Pre-Processor directives<br />
*: define (macros)<br />
*: include<br />
* typedefs<br />
* Variable Argument list<br />
* [http://www.cplusplus.com/doc/tutorial/namespaces/ Namespaces]<br />
* friends<br />
<br />
=== To Do 3===<br />
* program: int AscToInt(const char *num);<br />
* program: char* nstrcat(char* name, ...) //Basically strcat with >= 1 arguments<br />
<br />
=== Resources 3===<br />
=== Blog posts 3===<br />
* <u>'''AscToInt Solutions'''</u><br />
<br />
:[http://lisyonok85.wordpress.com/?p=7 SecA Artem's Solution]<br />
<br />
:[http://dongdli.wordpress.com/2013/05/21/codes-of-the-function-int-asctoint-const-char-num/ Codes from SECTION_B DONG LI]<br />
<br />
:[http://malliso1.wordpress.com/2013/05/21/converting-a-string-of-numbers-to-an-integer/ Converting a string of numbers to an integer.]<br />
<br />
:[http://matthewtorrance.blogspot.ca/2013/05/asctoint.html AscToInt Function]<br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/21/the-ascii-conversion-challenge/ SecA Drew Terrance Kerr]<br />
<br />
:[http://ssuduruk.blogspot.ca/2013/05/asctointconst-char-num.html SecA Chiyoung Choi]<br />
<br />
:[http://admix-dev.tumblr.com/post/51005560090/conversion-char-into-int SecB Oleksandr Snurnikov, (ascToInt() function) ]<br />
<br />
:[http://happyivyli.blogspot.ca/2013/05/solution-of-int-asctointconst-char-num.html SecB Na Li]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/blog-post.html SecA Herman Hum]<br />
<br />
:[http://shahzyn.blogspot.ca/2013/05/ascii-to-int.html SecA Shehzin Arshad]<br />
<br />
:[http://joshem31.wordpress.com/2013/05/21/my-first-challenge-my-first-asctoint-function/ SecA Jose Ramirez]<br />
<br />
:[http://mattmaceachern.blogspot.ca/2013/05/blog-post.html SecA Matt MacEachern]<br />
<br />
:[http://jijungmin90.tumblr.com/post/51031179606/simple-char-to-intlI think SecA Jungmin Ji]<br />
<br />
:[http://namniak.blogspot.ca/2013/05/asctoint.html Vadim Namniak's Solution]<br />
<br />
:[http://zhunxue1912.wordpress.com/2013/05/21/int-asctointconst-char-num/ Zhun Xue]<br />
<br />
:[http://brackethunter.blogspot.ca/2013/05/asctoint.html Brad Stuart's Solution]<br />
<br />
* <u>'''nstrcat Solutions'''</u><br />
<br />
:[http://dtkerroop344.wordpress.com/2013/05/22/concatenating-an-arbitrary-number-of-strings/ SecA Drew Terrance Kerr]<br />
<br />
:[http://hhhum0.blogspot.ca/2013/05/const-char-nstrcatchar-des.html SecA Herman Hum]<br />
<br />
:[http://admix-dev.tumblr.com/post/51133316724/const-char-nstrcat-char-to-strcat-with-1 SecB Oleksandr Snurnikov]<br />
:*[https://github.com/admix/admixSoft/blob/master/OOP344/nstrcat.cpp direct link to the source code on the github]<br />
<br />
== Week 4 - May 26==<br />
=== This Week 4 ===<br />
* Project introduction<br />
*: bio, cio<br />
* Virtuals<br />
*: Review<br />
*: Pure Virtual<br />
*: Abstract Base Classes<br />
<br />
=== To Do 4===<br />
<br />
=== Resources 4===<br />
=== blog posts 4===<br />
<br />
== Week 5 - June 2==<br />
=== This Week 5===<br />
=== To Do 5===<br />
=== Resources 5===<br />
=== blog posts 5===<br />
== Week 6 - June 9==<br />
=== This Week 6===<br />
=== To Do 6===<br />
=== Resources 6===<br />
=== blog posts 6===<br />
== Week 7 - June 16==<br />
=== This Week 7===<br />
=== To Do 7===<br />
=== Resources 7===<br />
=== blog posts ===<br />
== Week 8 - June 23 (Study Break)==<br />
=== This Week 8===<br />
=== To Do 8===<br />
=== Resources 8===<br />
=== blog posts 8===<br />
== Week 9 - June 30==<br />
=== This Week 9===<br />
=== To Do 9===<br />
=== Resources 9===<br />
=== blog posts 9===<br />
== Week 10 - July 7==<br />
=== This Week 10===<br />
=== To Do 10===<br />
=== Resources 10===<br />
=== blog posts 10===<br />
== Week 11 - July 14==<br />
=== This Week 11===<br />
=== To Do 11===<br />
=== Resources 11===<br />
=== blog posts 11===<br />
== Week 12 - July 21==<br />
=== This Week 12===<br />
=== To Do 12===<br />
=== Resources 12===<br />
=== blog posts 12===<br />
== Week 13 - July 28==<br />
=== This Week 13===<br />
=== To Do 13===<br />
=== Resources 13===<br />
=== blog posts 13===<br />
== Week 14 - August 4==<br />
=== This Week 14===<br />
=== To Do 14===<br />
=== Resources 14===<br />
=== blog posts 14===<br />
== Week 15 - August 11 (Exam Week)==<br />
=== This Week 15===<br />
=== To Do 15===<br />
=== Resources 15===<br />
=== blog posts 15===</div>Brad Stuarthttps://wiki.cdot.senecacollege.ca/w/index.php?title=User:Brad_Stuart&diff=95618User:Brad Stuart2013-05-16T01:59:50Z<p>Brad Stuart: Created page with '==Brad Stuart== ===Contact Info=== *Email: bstuart1@learn.senecac.on.ca *IRC: Lester_Normal/Brad_S *[http://brackethunter.blogspot.ca/ My Blog]'</p>
<hr />
<div>==Brad Stuart==<br />
===Contact Info===<br />
*Email: bstuart1@learn.senecac.on.ca<br />
*IRC: Lester_Normal/Brad_S<br />
*[http://brackethunter.blogspot.ca/ My Blog]</div>Brad Stuart