Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 [tutorial] error proofing
Index -> Programming, Turing -> Turing Tutorials
View previous topic Printable versionDownload TopicRate TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
djlenny_3000




PostPosted: Fri Oct 29, 2004 8:45 am   Post subject: [tutorial] error proofing

for everyone who hates it when you need an integer but someone puts in a string here is a way to stop that

the key is STRINT and STRINTOK

here is an example

var num :int
put "enter a number and i will square it"
get num
put num*num

if someone enters "s" the program crashes

so here is how you fix that
code:

% declare variables
var num:int
%this variable is what you ask for
var input:string

put "enter a number  and i will square it"
%the key part
get input

loop
%this exits the loop when in the string there is a integer other forms are %strrreal intstr and realstr each converting from the first part to the       %second part. if ok is on the end then it checks it first
exit when strintok(input)
%keep trying till they get it right
put"bad input"
get input
end loop
%now to change it from string to integer
num:=strint(input)
put num*num


strintok checks for the integer in the string and strint converts it, if you have a question then ask. also dont forget you can use strrealok ans strreal to go from string to real and realstr or intstr to go back to string

hope this helped
Sponsor
Sponsor
Sponsor
sponsor
Delos




PostPosted: Fri Oct 29, 2004 10:42 am   Post subject: (No subject)

Hmm...ok the good parts first:
This is definitely an aspect of OOT that people new to it struggle to fix. This will be a good tutorial for people who need such help.

Bad parts:
First off, this was supposed to error proof (trap) the input. Sadly, this has only been restricted to catching errors in terms of int-string input. Try these inputs:
Ctrl + Z
A string/number of more than 255 characters long

Both of these crash.
In other words, you're not error proofed yet. Is this problem fixable? Of course it is, find out how and update your tutorial.
sw1tch




PostPosted: Sun Jan 02, 2005 4:21 pm   Post subject: (No subject)

Delos wrote:
Hmm...ok the good parts first:
This is definitely an aspect of OOT that people new to it struggle to fix. This will be a good tutorial for people who need such help.

Bad parts:
First off, this was supposed to error proof (trap) the input. Sadly, this has only been restricted to catching errors in terms of int-string input. Try these inputs:
Ctrl + Z
A string/number of more than 255 characters long

Both of these crash.
In other words, you're not error proofed yet. Is this problem fixable? Of course it is, find out how and update your tutorial.


Why dont you tell us sir? i'd Like to know
Andy




PostPosted: Sun Jan 02, 2005 7:08 pm   Post subject: (No subject)

well to avoid the buffer overflow, simply use
code:
get input : 255
instead since then you will only be getting the first 255 characters.. but as for the ctrl+d and ctrl+c.. i have no idea how to get rid of that using ur method.. i'd just use a gui text field haha Razz
Tony




PostPosted: Sun Jan 02, 2005 9:44 pm   Post subject: (No subject)

you can write your own keyboard handling methods that are based on Input.KeyDown()
lasworddeladreams




PostPosted: Wed Dec 21, 2005 8:05 pm   Post subject: Strintok great but not working

I'm in a grade 11 compsci class and we are using Turing v6.55 which resides on a DOS disk. We've been given the same task: Make our programs crashproof. Three so far have been able to figure it out (and to think I helped them!). I've tried for hours to try to get strintok to work but alas it doesn't. I think its a great command but i cant use it. Would someone please post telling me why the command wont work? Please? Sad
Cervantes




PostPosted: Wed Dec 21, 2005 8:36 pm   Post subject: Re: Strintok great but not working

lasworddeladreams wrote:
Turing v6.55

Gah?! Turing goes up to v4.1, and v4.1 is not too much more than a rumour at the moment.

lasworddeladreams wrote:
Would someone please post telling me why the command wont work? Please?

That's a tough question, since it will work. The reason that you haven't got it to work is unknown to us, so long we can't see your code.
do_pete




PostPosted: Wed Dec 21, 2005 10:30 pm   Post subject: (No subject)

Perhaps the old DOS based Turing goes up to v.6? As for Turing 4.1 tomorow I'll post something that'll make you believe...
Sponsor
Sponsor
Sponsor
sponsor
lasworddeladreams




PostPosted: Wed Dec 21, 2005 11:20 pm   Post subject: Thanks

Many thanks to you Cervates and do_pete. I wasn't really expecting a reply to my post. Thanks again and as for my code here it is:

var number : string
var number1 : int
get number : 255
loop
exit when strintok(number)
if number <= "/" or number >= ":" then
put "This is not a number. Please try again."
get number : 255
end if
end loop
number1 := strint(number)
put number1

This is the modified version of the code our teacher gave us.
Thanks again! Very Happy
McKenzie




PostPosted: Wed Dec 21, 2005 11:20 pm   Post subject: (No subject)

Ouch... DOS version 6 ???
DOS version 8 came out about 6 years ago. I recall using 7.x about 11 years ago. Version 6 has to be at least 15 years old.
McKenzie




PostPosted: Wed Dec 21, 2005 11:25 pm   Post subject: (No subject)

As for the problem at hand, use getch, or getchar to check each character one at a time to make sure they are valid digits.
Lastwords - get rid of your if in your loop "if number <= "/" or number >= ":" then" If it's a valid int the exit will kick you out of the loop. If you are still in the loop then you know it is invalid.
do_pete




PostPosted: Wed Dec 21, 2005 11:45 pm   Post subject: (No subject)

Yes you have to get rid of the if statement because it'll only ask for another number if the input is within that range. And dont bother with getch, get will work fine
lasworddeladreams




PostPosted: Thu Dec 22, 2005 7:47 am   Post subject: Thanks again!

I'd like to thank you McKenzie and do_pete for your posts. I have since modified my program. Unfortunately, it still does not work. Turing keeps telling me that strintok has not been declared. Guess it's because we're using Turing v6.55 for MS-DOS v6.22. Anyway, following your instructions, I came up with this:

var number : string
var number1 : int
loop
get number : 255
exit when strintok(number)
end loop
number1 := strint(number)
put number1

Thanks for all your help! Very Happy
Draymire




PostPosted: Thu Nov 20, 2008 9:08 am   Post subject: RE:[tutorial] error proofing

i Have found a way to crash proof a program completely from operations such as ctrl-z.

use this simple yet effective program to do it

var input:string(1)
var output:string:=""

loop

getch (input)
exit when input=chr(10)% a space
put input ..
output:=output+input
exit when length(output)=255
end loop

put""
put output

the answer was the simple use of getch.
if combined with the strintok commands you could completely idiot proof all your programs.
Display posts from previous:   
   Index -> Programming, Turing -> Turing Tutorials
View previous topic Tell A FriendPrintable versionDownload TopicRate TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 14 Posts ]
Jump to:   


Style:  
Search: