Just nu i M3-nätverket
Gå till innehåll

Kan någon hjälpa mig att lösa detta tal? Vore mycket tacksam!


glacko

Rekommendera Poster

Hej, jag heter Robin och sitter å försöker lösa detta tal men har fastnat totalt!

Tror du att du skulle kunna hjälpa mig, eller vet du någon som kan??

MVH Robin

 

Uppgift 7).

Nedan följer ett kod-exempel som startar med händelsen Button1_Click.

Besvara föjlande:

a) Förklara vad variablerna har för värde steg för steg i koden

B) Om funktionen Berakna istället deklarerades som en Sub:

Visa vilka förändringar som skulle krävas för att erhålla samma

resultat som i fråga a).

 

Private Sub Button1_Click (...)

Dim sngTal As Single = 10.5

 

MsgBox(Talet = " & Berakna (sngTal))

 

End Sub

 

Private Funktion Berakna (ByVal Tal As Single) As Integer

Dim i As Integer

 

For i = 0 To 9 Step 2

Tal += i

Next

 

Return CInt (Tal)

 

End Funktion

 

(kommentar: uttryck av typen (Tal +=i) kan också skrivas på föjlande sätt: (Tal = Tal + i)

 

Länk till kommentar
Dela på andra webbplatser

  • 1 month later...

Jag kan inte förstå i vilken miljö du befinner dig i. Du använder nyckelord som Return i pascal men syntaxen liknar Basic och vissa inkrementeringsoperationer känns C-orienterade (Tal +=i).

Du har använt svenska namn som t.ex "Funktion" inte "Function" i din kod.

 

Angående fråga b, om du deklarerar funktionen Berakna som en subrutin skulle det inte vara en funktion eftersom en funktion returnerar ett värde, vilket inte en procedur gör, en subrutin kan faktiskt returnera varianter, som enstaka variabler och som vektorer.

 

Ta reda på vilken datatyp single är och ta sedan på vilken datatyp integer är och sedan kan du nog räkna ut vad returvärdet blir.

 

Du skickar ju 10.5 till din funktion.

sedan utförs följande operationer:

Tal = Tal + 0

Tal = Tal + 2

Tal = Tal + 4

Tal = Tal + 6

Tal = Tal + 8

 

Jag kanske har räknat fel, men tal borde bli 30,5 i din funktion. När du sedan får returvärdet väljer du att använda en funktion för att konvertera ett givet tal till ett heltal mellan -32767 och +32768 om jag inte minns fel.

Avrundningen torde ske uppåt och blir då 31.

 

//Me.Name

 

Real Programmers Code In Binary

 

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon
Jag kan inte förstå i vilken miljö du befinner dig i. Du använder nyckelord som Return i pascal men syntaxen liknar Basic och vissa inkrementeringsoperationer känns C-orienterade (Tal +=i).

Skulle tippa på VB.Net

 

Angående fråga b, om du deklarerar funktionen Berakna som en subrutin skulle det inte vara en funktion eftersom en funktion returnerar ett värde, vilket inte en procedur gör,

Där får man skicka in en parameter "by reference" istället.

 

Överlag känns det här som en skoluppgift och sådana löses med studier ;)

 

Länk till kommentar
Dela på andra webbplatser

Jag gjorde ett misstag, Cint avrundningen sker så att om talet har en decimaldel som är exakt 0.5 så kommer avrundningen att ske till närmaste jämna talet. Det vill säga: 0.5 avrundas till 0 och 1.5 avrundas till 2 eftersom 0 och 2 är jämna tal. Svaret blir alltså 30 och inte 31 eftersom 31 är ett ojämnt tal.

 

Notering:

I detta exempel spelar det ingen roll om variabelns adress eller variablens värde skickas till funktionen som en ny variabel.

 

Real Programmers Code In Binary

 

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Jo, det är så det är implementerat, även om det känns ologiskt (0.5 inleder ju trots allt övre halvan av talet). Dock så är det mer statistiskt korrekt att avrunda till närmaste jämna tal än uppåt och det är därför det är utformat så. (Samma sak gäller för Round())

 

Alternativet är att skriva en egen avrundningsfunktion.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...