Posts Tagged ‘Objective C’

Programming issues. Writing a tax calculator: part 2.

Posted in Internet & technology on August 16th, 2007 by atma – Be the first to comment

After playing around with the tax calculator I managed to write the zero or negative number control inside the method as I wanted before. It may seem too easy for expert programmers but for me was a bit tricky. First I used the while loop keyword and saw the printf line printing itself on the screen inside an infinite loop! Then I woke up and used the if/else statements.
The next problem was stopping the program from printing the lines that were at the main() function. The print method call, was printing 0′s anyway. So another if/else control on the print method was enough. I did change the print method, at the header file, in order to make it accept a single argument. I’m not sure if it was necessary for print to work as I wanted. Stop! Let’s test it! No! Here is the error: ‘p’ undeclared (first use in this function) which is quite normal, because the method doesn’t expect any variable or argument. However, I could try to declare the variable inside the method, but when I did that and try to compile the program, xcode crashed! Yeah! Am I good or what? Anyway, declaring inside a method a value that should be retrieved from outside doesn’t make much sense anyway.
So here is the code:

The .h file:

#import
#import 
 
@interface TAX: Object
{
double price;
}
 
-(void) setPrice: (int) p;
-(void) print: (int) p;
 
@end

and the .m file:

#import
#import
#import "ivacalc.h"
 
@implementation TAX
 
-(void) print: (int) p
{
price = p;
 
if ( p < 0 )
{
printf("The price is %.2f and the tax is %.2f.\nThe sum is %.2f\n", price, price * 0.19, price + (price*0.19));
}
else
{
printf("exiting\n");
}
}
 
-(void) setPrice: (int) p
{
if (p < 1) // don't do calculation for negative numbers
{
printf("The price is 0 or negative!\n");
p = 0;
}
else
p = price;
}
 
@end
 
int main(int argc, char *argv[])
{
int j;
 
TAX *myTax = [[TAX alloc] init]; // allocating and initializing a TAX-fellow class!
 
printf("Price: ");
scanf("%i", &amp;j);
printf("\n");
 
[myTax setPrice: j];
[myTax print: j];
 
[myTax free];
 
return 0;
}

Now the program does check if the number entered is 0 or negative and prints an error message if it is.

Programming issues. Writing a tax calculator.

Posted in Programming on August 15th, 2007 by atma – Be the first to comment

My Objective C reading doesn’t go as I would like to, but in a way proceeds. Today I forgot the ObjC manual in the military chamber, while going home, so I couldn’t read much. I decide to solve a simple self assigned exercise. Nothing complicated, it could be done in less than 4 seconds using Python or even C.
Anyway the good thing about this book is that, as Stephen Kochan explains, I’ll start programming using the specific object oriented programming mindset, avoiding some issues that more experienced programmers have when they try to learn objective C and object oriented programming. First, I’ll show you my code:

The header file

// ivacalc.h header
 
#import
#import
 
@interface TAX: Object
{
	double price;
}
 
-(void) setPrice: (int) p;
-(double) price;
 
 
@end

The main program (implementation/main function)

// Calculating the tax of a give price v1.1
// main program
// ivacalc.m
 
#import
#import
#import "ivacalc.h"
 
@implementation TAX;
 
-(void) print
{
	printf("The price is %.2f and the tax is %.2f.\nThe sum is %.2f\n", price, price * 0.19, price + (price*0.19));
}
 
-(double) price
{
	return price;
}
 
-(void) setPrice: (int) p
{
	price = p;
}
 
@end
 
int main(int argc, char *argv[])
{
	int j;
 
	TAX *myTax = [[TAX alloc] init]; // allocating and initializing a TAX-fellow class!
 
	printf("Price: ");
	scanf("%i", &j);
	printf("\n");
 
	[myTax setPrice: j];
	[myTax print];
 
	[myTax free];
 
	return 0;
}

As you can see the program above is quite simple. It does not much. The hard part was defining correctly the interface and implementation sections and the inner goal is to get more familiar with methods and classes. However the first issue I’ve encountered was the data encapsulation. Which raises the question: What would have happened if I had put the scanf code inside the setPrice method? I could change the method, in order to make the method perform all the test + scanf execution internally. I tried to do it, I wrote the code but I` didn’t manage to get the print method accept a variable that is calculated from a method within the same class of the implementation section. I’m quite that this is possible though.
The problem is, which programming style is correct? When must I write a function or perform a specific operation inside the method and not on the main() function, as a C-style program, and then must I put the more possible options inside the method? Is there a universal answer or there are many, depending on the program?
I’ll continue writing code tomorrow! Bye

Creating a Calculator Class

Posted in Internet & technology on November 20th, 2006 by atma – 5 Comments

Creating a calculator class in Objective C is not an easy task! Oh, c’mon sure it ;-) . I’ve been reading about operators lately. Arithmetic operators, bit operators, assignment operators etc. The fact that many of these things were known helps me gap the lack of time to proceed with reading as I wanted too. Here is my last code:

#import <objc/Object.h>
#import <stdio.h>
 
@interface Calculator: Object
{
	double accumulator;
}
 
// accumulator methods
 
-(void) setAccumulator: (double) value;
-(void) clear;
-(double) accumulator;
 
// arithmetic methods
 
-(void) add: (double) value;
-(void) subtract: (double) value;
-(void) multiply: (double) value;
-(void) divide: (double) value;
 
@end
 
@implementation Calculator
 
-(void) setAccumulator: (double) value
{
	accumulator = value;
}
 
-(void) clear
{
	accumulator = 0;
}
 
-(double) accumulator
{
	return accumulator;
}
 
-(void) add: (double) value
{
	accumulator += value;
}
 
-(void) subtract: (double) value
{
	accumulator -= value;
}
 
-(void) multiply: (double) value
{
	accumulator *= value;
}
 
-(void) divide: (double) value
{
       accumulator /= value;
}
 
@end
 
int main (int argc, char *argv[])
{
	Calculator *calc;
 
	calc = [[Calculator alloc] init];
 
	[calc clear];
	[calc setAccumulator: 100.00];
	[calc add: 200.00];
	[calc divide: 15.00];
	[calc subtract: 10.00];
	[calc multiply: 5.00];
 
	printf("The result is %g\n", [calc accumulator]);
	[calc free];
 
	return 0;
}

Okay, pretty simple you’ll say! But it’s not! Actually for the first time some things came natural! The allocation and initialisation of memory, I didn’t even think about the right syntax after the first line [calc clear]; which helped write the program quickly. However I made some mistakes the first I wrote the program. The first one was not paying attention that the accumulator was of type “double” and not “void” which caused some warning but not fatal errors

TextMate blogging & the Objective C book intro

Posted in Internet & technology on November 3rd, 2006 by atma – 2 Comments

Following the this video I did not managed to post through TextMate the famous MacOSX all-in-one editor. Although the blog functionality seems quite elegant doesn’t work as it should.
First all when fetching post’s through wordpress.com it fetches my Dashboard articles and not my previous posts. I don’t know why, maybe WordPress API is not working as it should? I’m quite positive that Allan’s blog should be a WordPress blog although from the video I didn’t understand if it’s WordPress or webpress, the spelling was not clear enough plus the fact I don’t speak native English, so I can’t be sure. He uses Markdown instead of HTML though. When I post I get error cannot post to this blog or category – (401). So if anyone reading this (Hello?) has managed to use TextMate with wordpress.com please let me know. Anyway..
I purchased from Amazon the following book: Programming in Objective-C by Stephen Kochan.
The first impression is good. The book seems to be what I needed in first place and has some positive feedback at Amazon’s website.

Jeez, writing in simple html for blog post’s in TextMate is much more easy then using other editors! Actually most of my posts were written in TextEdit which I like very much for it’s power and simplicity, but it’s not an HTML editor to make an acceptable comparison!

I noticed that most of the mac programs like the one’s already mentioned, QuickSilver, VoodooPad, etc. are made in a very smart, elegant, simple yet powerful way. It’s not just the operating system, it’s the entire community that has a genius mindset :-)
uhh!!
I need to get some sleep and read a bit about instances and methods!!!

Cheerz!

EDIT: Update! I’m editing through TextMate!

My mistake was putting the this line:

oxyCo http://atma@wordpress.com/xmlrpc.php

instead of this:

oxyCo http://atma@atma.wordpress.com/xmlrpc.php

Now seems to work perfectly! :-)

EDIT2: I just purchased TextMate. Hope it’s worth the 39$!!

Hello Objective C!

Posted in Internet & technology on November 2nd, 2006 by atma – Be the first to comment

Hello Objective C!

This is my new blog, entirely dedicated in Objective C. I am a starter, never had experience with programming languages, although I was/am able to write small scripts in bash and / or python. Nothing fancy but enough to keep my GNU/Linux tuned!
So a Mac lover with a Linux background in the world of Objective C and object oriented programming! Today I wrote my first program:

Hello world

Surprise ha? :-)

The reason I choose Objective C and not C, Python, Ruby or something else is the cocoa framework which is the best environment I’ve ever seen. I bought 2 books, the first is an extensive guide into Objective C for starters – non programmers – and the second one is an introduction to cocoa framework! I hope that books will speed up the learning process. Due to my work I don’t very much free time but I’ll try to finish the book in a reasonable time.

Cya

[myObject Free];


Convalesco is using WP-Gravatar