Tuesday, March 31, 2009

Some missing blog tasks...

It would appear that I have missed some blog tasks over the journey of my course so far. To be honest, I was under the impression that the tasks in question were being given out because some people in the class had expresses a concern that they didn't know what to blog on. I wasn't aware that they were compulsory topics. Nonetheless, they are, so I shall do them now.

We were supposed to list 2 VB resources. I listed the companion site that goes along with the book we use for class. You can find it in the archives if you would like to have a look at it. So I'm going to add 3 more resource sites for good measure:
  • http://www.freeprogrammingresources.com/vbtutor.html . This site covers VB from the early days onwards.
  • http://www.thevbzone.com/ . This site looks pretty good from what I've seen of it.
  • http://www.homeandlearn.co.uk/net/nets11p1.html . This is one that Rachael has listed also, but it comes with some pretty handy information on classes and what not.

ASCII and Unicode
Information on ASCII code was taken straight from the Wikipedia site:

American Standard Code for Information Interchange (ASCII), pronounced /ˈæski/[1] is a coding standard that can be used for interchanging information, if the information is expressed mainly by the written form of English words. It is implemented as a character-encoding scheme based on the ordering of the English alphabet. ASCII codes represent text in computers, communicationscharacter-encoding schemes—which support many more characters than did the original—have a historical basis in ASCII. equipment, and other devices that work with text. Most modern

Historically, ASCII developed from telegraphic codes. Its first commercial use was as a seven-bit teleprinter code promoted by Bell data services. Work on ASCII formally began October 6, 1960, with the first meeting of the American Standards Association's (ASA) X3.2 subcommittee. The first edition of the standard was published in 1963,[2][3] a major revision in 1967,[4] and the most recent update in 1986.[5] Compared to earlier telegraph codes, the proposed Bell code and ASCII were both ordered for more convenient sorting (i.e., alphabetization) of lists, and added features for devices other than teleprinters.

ASCII includes definitions for 128 characters: 33 are non-printing, mostly obsolete control characters that affect how text is processed;[6] 94 are printable characters, and the space is considered an invisible graphic.[7] The most commonly used character encoding on the World Wide Web was US-ASCII[8] until 2008, when it was surpassed by UTF-8.[9]

For more information, go to http://en.wikipedia.org/wiki/ASCII .

Unicode information was also taken from Wikipedia:

Unicode is a computing industry standard allowing computers to consistently represent and manipulate text expressed in most of the world's writing systems. Developed in tandem with the Universal Character Set standard and published in book form as The Unicode Standard, Unicode consists of a repertoire of more than 100,000 characters, a set of code charts for visual reference, an encoding methodology and set of standard character encodings, an enumeration of character properties such as upper and lower case, a set of reference data computer files, and a number of related items, such as character properties, rules for normalization, decomposition, collation, rendering and bidirectional display order (for the correct display of text containing both right-to-left scripts, such as Arabic or Hebrew, and left-to-right scripts).[1]

The Unicode Consortium, the non-profit organization that coordinates Unicode's development, has the ambitious goal of eventually replacing existing character encoding schemes with Unicode and its standard Unicode Transformation Format (UTF) schemes, as many of the existing schemes are limited in size and scope and are incompatible with multilingual environments.

Unicode's success at unifying character sets has led to its widespread and predominant use in the internationalization and localization of computer software. The standard has been implemented in many recent technologies, including XML, the Java programming language, the Microsoft .NET Framework and modern operating systems.

Unicode can be implemented by different character encodings. The most commonly used encodings are UTF-8 (which uses 1 byte for all ASCII characters, which have the same code values as in the standard ASCII encoding, and up to 4 bytes for other characters), the now-obsolete UCS-2 (which uses 2 bytes for all characters, but does not include every character in the Unicode standard), and UTF-16 (which extends UCS-2, using 4 bytes to encode characters missing from UCS-2).

And you can find further information here ( http://en.wikipedia.org/wiki/Unicode ) and here ( http://unicode.org/ ).

VB.NET OpenFileDialog
I'm going to go out on a limb here and say that the VB.NET OpenFileDialog has to do with opening and saving files. In all seriousness though, according to VB Helper ( http://www.vb-helper.com/howto_net_use_restoredirectory.html ):
When you use an OpenFileDialog and the user changes directories, the dialog changes the application's current directory. If you set the dialog's RestoreDirectory property to True, then the dialog resets the current directory to its original value when it closes. Note that the dialog still keeps the new directory as its starting point the next time you display it.
UML Class Diagram
UML stands for Unified Modeling Language and is useful in all aspects of the design process as stated by Donald Bell ( http://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/ ):
Structure diagrams are useful throughout the software lifecycle for a variety of team members. In general, these diagrams allow for design validation and design communication between individuals and teams. For example, business analysts can use class or object diagrams to model a business's current assets and resources, such as account ledgers, products, or geographic hierarchy. Architects can use the component and deployment diagrams to test/verify that their design is sound. Developers can use class diagrams to design and document the system's coded (or soon-to-be-coded) classes.
This is one area that I will be looking into over the break starting at the end of this week.

I was also supposed to do a description of the cat and dog classes that we're working on at the moment, however, I need a little more information from Rachael to find out just what it is that she needs in the post.

So until then, I hope all's well for you.

All the best,

Tim.

Monday, March 23, 2009

Classes and Object in Visual Basic.NET

We were asked today to do a blog on classes and objects, so after doing some research, I have come up with the following information.

Visual Basic.NET is what is known as an Object Oriented language. This means that the programs designed using this language run based around a series of objects. The amount of objects will depend on the complexity of the program, but they must have at least one object (the "form") in order to run (not that you would do this as there's no point in having just a form pop up. It would serve absolutely no purpose.) No matter whether your program is designed to run in a windows, web or mobile application, it will have to have a form that it uses as a "container" for the rest of the program.

For example, a button is an object. It must be placed on a form before it can be used as part of a program. The button itself will have a click event which is part of the button class. To use an explanation from Free computer Tutorials:
A Class is the code itself; the code becomes an Object when you start using it.
In other words, when you place a button on to the form and double click it, Visual Studio will create a class that can be used for that object. You then take that class and add more code to it to make the button usable. A clear button as an example can have code that will cause it to clear other objects (such as textboxes and labels) in your program. For instance, you may have a textbox on your form which will cause a label to be displayed once the user clicks on the submit button. The clear button can then be made to clear the text from the textbox, clear the text in the label and put the focus back on the textbox ready for more input from the user.

In the instance above, the button class "clear" will do all or any of those things mentioned and in this case, becomes the Clear Button object.

I hope this hasn't been too confusing, and if you understand it, please explain it to me... :-)

Wednesday, March 18, 2009

Visual Studio 2008 Express

I discovered during the week that you can't do mobile applications for Visual Basic on Visual Studio Express 2008. As the most recent chapter is the only one that requires mobile applications throughout this course however, it shouldn't pose to big a problem.

We'll be moving on to web apps soon, so I'm looking forward to that. I have the web version of express installed at home so I'll be able to use that for the web apps.

Also, we had our first in class test on Tuesday. Went ok!

Monday, March 9, 2009

Rather silly sleep calculator...

Let me start by saying that this exercise (p. 290) was far from pointless, even if the overall program is a complete waste of time. While you could never use a program that makes assumptions like, 8 hours sleep per night, 360 days per year and 30 days per month, you can learn from actually doing the work to set it up.

I learned how to keep an answer down to 2 decimal places. And the equation to work out the details entered in to the program was "fun" but like I said, it is hardly a program that can be used outside of being a learning tool -just ask anyone who has a birthday on the 31st of July for example.

We will also have to learn how to limit the number a person can enter in to a text field. And by that I mean a number numerically, not a number of digits. Unless of course you were one of those lucky people who has a birthday on the 85th of the 17th ;-). What's more, the whole equation could be worked out a lot easier with an if/else statement.

But I digress... So I came up with the following interface design:

I felt this was pretty close to what the description was after. It uses Jokerman regular 20pt for the main heading and CaliforniaFB for the other labels in various sizes. As with all of the other programs we worked on in this chapter, the calculate button does the major share of the work.

As you can see, the user enters the current date and then their birth date and presses the calculate button. The calculate click event then takes all of the information and runs its equation in the background before popping up a label with the result.

When I first did this, I used the decimal data type and it gave me one long number that was really hard to read. So after the ToString function, I gave it a forced literal of number and it comma separated the number, making it easier to read but also giving it 2 decimal places.

I couldn't use an integer because it would still make the result hard to read, so I had to use the number literal. What I did to get around the problem was was use ("N0") after the ToString function.

My code for this part looked like this:
lblTotalHoursSlept.Text = strFirstName.ToString & ", you have slept for a total of " & decTotalHoursSleep.ToString("N0") & " hours"
That took the label and displayed the result with comma separated thousands, minus the decimal places. That is N + zero by the way, not No.

The equation worked out a little differently. I spent the afternoon trying to come up with the best way to attack this problem, and in the end, I subtracted the number in the birth date field from the number in the corresponding current date field and then multiplied the result by the number we were given in the exercise. The numbers we were given (360 days for a year, 30 day for a month) were stored as constants.

My code to work out the equation looked like this:
decTotalHoursSleep = (((intDateYear - intBirthYear) * _cintDaysInYear) _
+ ((intDateMonth - intBirthMonth) * _cintDaysInMonth) _
+ (intDateDay - intBirthDay)) * _cintHoursSleepPerDay

and the constants were declared in the public class like this:
Const _cintHoursSleepPerDay As Integer = 8
Const _cintDaysInYear As Integer = 360
Const _cintDaysInMonth As Integer = 30

You will notice that the entire equation is bracketed so that it is worked out before multiplying it by the hours slept (8).

If anyone else came up with a more efficient way of doing this (under the directions given in the exercise of course), I'd love it if you could leave a comment.

Have a good one,

Tim.

Tuesday, March 3, 2009

I'm doing a combination of classes (not the programming type) in this post. I missed class on Monday but I still spent time reading and working through the book at home and read up on numeric data types. I didn't really come across any information that I found to be "blog worthy" in what I read, but we have to post at least once a week.

In one of my other classes, we're learning html. We're not using css or anything else, just html and I couldn't really see anywhere that I could use this -using html for layout and structure is kind of like hooking a slasher up to the back of your car to mow your lawn. Sure, you can do it, but it's messy and inconvenient- other than right here.

What I'm going to do is try to re-create the table from page 219 of the text book, Visual Basic 2008 by Shelley/Hoisington, using the edit html function on this blog:












Data TypeSample ValueMemory AllocationRange of Values
Integer484 Bytes-2,147,483,648 to 2,147,483,648
Decimal3.1451916 BytesDecimal values that may have up to 28 significant digits
Double5.3452307 or 673.65298 Bytes-1.79769313486232e308 to +1.79769313486232e308


So there it is. Unless blogger is completely inadequate at handling tables and html coding, this should look pretty similar to the table in the book.