Avatar billede japping Nybegynder
22. november 2008 - 14:01 Der er 15 kommentarer og
1 løsning

IF sætning, hvad betyder den ?

Hvordan oversættes ovenstående kode ? Jeg mener der er tale om VB kode og vil gerne vide om der er tale om en IF sætning. Betyder det f.eks.

If xa=sqr(s) and xb=F then Gosub 600

og betyder sqr(s) kvadratet af s eller kvadratroden af s ?
Avatar billede erikjacobsen Ekspert
22. november 2008 - 14:04 #1
Ja, gammeldags Basic. Sqr er kvadrat-funktionen, ikke kvadratrod
Avatar billede arne_v Ekspert
22. november 2008 - 14:43 #2
oversat fra engelsk til dansk:

hvis xa=s*s og xb=f så hop til label 600
Avatar billede erikjacobsen Ekspert
22. november 2008 - 15:04 #3
Nu står der "gosub", ikke "goto".  En "gosub" er et slags procedure/metode-kald. Koden ved linie 600 og efterfølgende skal så lave en "return", hvorefter udførelsen fortsætter efter linien med "gosub".
Avatar billede arne_v Ekspert
22. november 2008 - 22:37 #4
Ja. Men den skifter ikke scope ligesom ved at rigtigt sub/function call.
Avatar billede erikjacobsen Ekspert
22. november 2008 - 22:45 #5
Mind mig ikke om det ;) Jeg har splidt en del af min ungdom med det :(
Avatar billede kjulius Novice
23. november 2008 - 00:57 #6
--> erikjakobsen: Jeg mener det er forkert, når du skriver, at sqr ikke er kvadratrodsfunktionen. Det ér kvadratrodsfunktionen (allerede i gammeldags basic, altså både GWBASIC/BASICA (BASICA = IBMs version af Microsofts GWBASIC - eller var det omvendt) og efterfølgeren QBASIC (som var forløberen for Visual Basic) betød SQR SQareRoot), hvilket også betyder, at den givne sætning oversat til "dansk" er:

Hvis s = xa * xa og xb=f så spring til underrutinen i linie 600

Og dengang GWBASIC/BASICA var højeste mode, var alle variable ganske rigtigt globale.
Avatar billede arne_v Ekspert
23. november 2008 - 02:07 #8
Du har ret.

Vi har ladet os snyde af at kvadratroden er sqrt i de fleste andre sprog.
Avatar billede erikjacobsen Ekspert
23. november 2008 - 08:56 #9
Enig ;)

Math-biblioteket i .NET, og dermed også VB.NET har ingen Math.Sqr, men en Math.Sqrt.

VBScript (fra fx ASP) har Sqr som kvadratrod: http://www.w3schools.com/VBScript/func_sqr.asp

Selv i "Business Basic", som jeg husker som et mareridt, er det kvadratrod: http://docs.hp.com/cgi-bin/doc3k/B3271590001.10189/295

I en anden boldgade: I C++ er det sqrt: http://www.cplusplus.com/reference/clibrary/cmath/sqrt.html og den indeholder ingen sqr.

Så hvad er grunden til vores forvirring?

I Delphi Pascal er kvadrat: http://www.delphibasics.co.uk/RTL.asp?Name=Sqr&ExpandCode1=Yes og kvadratroden hedder: sqrt  - tilsvarende i andre Pascal-varianter
Avatar billede japping Nybegynder
23. november 2008 - 11:26 #10
Tak for alle jeres input.

Jeg er med på IF-sætningen og SQR er kvadratroden, hvilket jeg også mener at huske fra min Pascal tid.

Arne_v og Kjulius --> læg et svar.
Avatar billede japping Nybegynder
23. november 2008 - 11:30 #11
UPS, den oprindelige kodelinie så egentlig således ud:

xa = SQR(s): xb = F: GOSUB 600

Er vi stadigvæk enige om at det betyder

hvis xa=kvadratroden(s) og xb=F så GoSub 600

Er ":" det samme som "og" ?
Avatar billede erikjacobsen Ekspert
23. november 2008 - 15:14 #12
Nej ":" er det samme som ";" i Pascal. Det er bare flere sætninger på samme linie.
Det svarer altså til

xa = SQR(s)
xb = F
GOSUB 600

Dvs. 2 tilordninger og en GOSUB
Avatar billede japping Nybegynder
23. november 2008 - 15:23 #13
Åhhhh så kan jeg bedre forstå ligningen ikke løses korrekt (det er en del af et program til kurvetilpasning i flere dimensioner).
Avatar billede erikjacobsen Ekspert
23. november 2008 - 16:31 #14
Uden at kende resten af programmet, vil jeg gætte på det simulere en funktion på en eller anden måde i retning af:

val=f600(sqr(s),f)

function f600(xa,xb)
  result = ...xa...xb...
  return result
end function

Gammeldags Basic er noget rod - men det er ok, hvis man er på timeløn ;)
Avatar billede kjulius Novice
26. november 2008 - 21:31 #15
Ja, og i de tidligste Basic versioner kunne varabelnavne kun være på to tegn!!! Flere tegn kunne godt nok angives, men det var kun de to der gjalt (shudrrr !!!).

Det kunne give anledning til mange timers hovedbrud, når man havde brugt to variable med næsten samme navn (blev opfattet som det samme).
Avatar billede japping Nybegynder
10. januar 2009 - 10:23 #16
Der kom ingen svar, så jeg lukker nu.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester