Programmering

While loop og uligheder

18. august 2016 af Searchmath

Hej

Jeg har ofte set folk bruge uligheder med bestemte tal, når de anvender loops.

fx. hvorfor bruges tallene <1 og ==-1 i første eksempel og ikke nogle andre tal? Og hvorfor bruges ==0 og ~=2 i andet eksempel ?


Brugbart svar (0)

Svar #1
18. august 2016 af hesch

Du bør skrive at sproget er Matlab ( fornemmer jeg af en tidligere tråd ).

Værdierne 1 og -1 i første eksempel giver generelt ingen mening, når funktionen "strfind" ikke er kendt for udenforstående. Ej heller at y=fopen( . . . ) kan give resultatet -1.

I andet eksempel, hvor variablen "flag" anvendes, hvor navnet indikerer at der er tale om en boolsk variabel, der kan have værdierne true/false eller 1/0, giver det for udenforstående ingen mening at værdien overhovedet kan være == 2.

Så dit spørgsmål kræver en god portion insiderviden til Matlab for at kunne besvares.


Svar #2
18. august 2016 af Searchmath

Hvad kan jeg søge på Google eller matlab-hjælpefunktion for at finde ud af der så?

Brugbart svar (0)

Svar #3
18. august 2016 af hesch

1)  Du skal sætte dig ind i løkker som

---------------------------------------------------------------------------------------

while ( condition )
begin
    . . . . . . . . . .
end

( betingelse testes i begyndelsen af løkken )

------------------------------------------------------------------------------------------

repeat
   . . . . . . . . .
until (condition )

( betingelse testes i slutningen af løkken )

---------------------------------------------------------------------------------------------

2)  Du skal sætte dig ind i funktionværdier som:

flag = exist(filename)
y = fopen(filename)

så giver sammenhængen i eksemplerne mening ( tror jeg  )

Første eksempel er et skoleeksempel på dårlig programmering, for der står (omskrevet):

while A or B
    if A then
       . . . . . .
    elseif B then
       . . . . . .
end

Betingelsen B testes unødigt to gange, for løkken udføres kun hvis ( A or B ) er sand, og hvis løkken udføres og A er falsk, så må B jo være sand. Så koden skal rettes til ( nu det er et skoleeksempel ):

while A or B
    if A then
       . . . . . .
    else
       . . . . . .
end

Det er sådanne små spidsfindigheder, der kan øge en løkkes eksekveringshastighed med 50%, øger læsbarheden af koden, mm.


Skriv et svar til: While loop og uligheder

Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk? Klik her for at oprette en bruger.