Permalänk
Medlem

while-sats till en for-sats

Någon som kan hjälpa mig med att komma fram till ett svar? Fattar absolut ingenting.

Konvertera följande while-sats till en for-sats, förklara koden i detalj och beskriv vad blir utskriften blir efter körning (efter lämplig komplettering av koden).

int k = 0;
String s = "k:" ;
while( k < 6) {
s = s + " " + k;
k = k + 2;

Permalänk
Medlem

Vad är det som är oklart? Svårt att veta var man ska börja när du säger att du fattar absolut ingenting. Vet du vad en for-loop är?

Visa signatur

DAN Cases A4-SFX | AMD Ryzen 7 9800X3D | Thermalright AXP90-X47 Full Copper |
INNO3D GeForce RTX 4070 Ti SUPER 16GB Twin X2 | Kingston 32GB (2x16GB) DDR5 6000MHz CL30 | ASUS ROG Strix B650E-I Gaming WIFI | Samsung 960 EVO 1TB | Corsair SF-600

Permalänk
Medlem

Utskriften borde iaf bli såhär om man skriver ut s (vilket inte sker i nuvarande kod. Just nu skriver programmet inte ut något):

k: 0 2 4

Visa signatur

DAN Cases A4-SFX | AMD Ryzen 7 9800X3D | Thermalright AXP90-X47 Full Copper |
INNO3D GeForce RTX 4070 Ti SUPER 16GB Twin X2 | Kingston 32GB (2x16GB) DDR5 6000MHz CL30 | ASUS ROG Strix B650E-I Gaming WIFI | Samsung 960 EVO 1TB | Corsair SF-600

Permalänk
Medlem

Nej, vet faktiskt inte vad det är. Började programmering 1 nyligen på komvux och detta var en av frågorna jag inte förstod så jag tänkte om jag kunde få lite hjälp här.

Permalänk
Medlem
Skrivet av mrex:

Nej, vet faktiskt inte vad det är. Började programmering 1 nyligen på komvux och detta var en av frågorna jag inte förstod så jag tänkte om jag kunde få lite hjälp här.

En for-loop är en loop som snurrar tills ett test uppfylls. Väldigt likt en while-loop men skrivs lite annorlunda. Detta är verkligen super basic. Jag föreslår att du kollar i kursmaterialet/boken så kommer de säkert beskriva bättre än jag kan här.

Visa signatur

DAN Cases A4-SFX | AMD Ryzen 7 9800X3D | Thermalright AXP90-X47 Full Copper |
INNO3D GeForce RTX 4070 Ti SUPER 16GB Twin X2 | Kingston 32GB (2x16GB) DDR5 6000MHz CL30 | ASUS ROG Strix B650E-I Gaming WIFI | Samsung 960 EVO 1TB | Corsair SF-600

Permalänk
Medlem

hur konvertade du while-satsen till for satsen?

Permalänk
Medlem

Hitta ett exempel på en enkel for-sats och fundera på vad de olika delarna gör (eller testa!). Och läs om while-satser och testa koden du har, och vad som händer när du ändrar lite. När du har en känsla för det så ska det vara ganska enkelt att förstå hur du kan återskapa while-satsen som en for-sats.

Permalänk
Medlem
Skrivet av mrex:

Någon som kan hjälpa mig med att komma fram till ett svar? Fattar absolut ingenting.

Konvertera följande while-sats till en for-sats, förklara koden i detalj och beskriv vad blir utskriften blir efter körning (efter lämplig komplettering av koden).

int k = 0;
String s = "k:" ;
while( k < 6) {
s = s + " " + k;
k = k + 2;

Lösningar på läxor är inget som kommer att hjälpa dig. Och inget "vi" (jag tar vissa friheter) brukar ge.

Länka istället kod där du har försökt lösa problemet och vad som inte funkar så kan vi försöka vägleda dig till ett svar.
Med andra ord läx"hjälp"

Permalänk
Medlem

Har lagt in denna kod på följande sida men får inte fram siffrorna
int k = 0;
String s = "k:" ;
while( k < 6) {
s = s + " " + k;
k = k + 2;

https://www.w3schools.com/js/tryit.asp?filename=tryjs_dowhile

Permalänk
Medlem

Försök bryta ner det hela i bitar och översätt det till pseudokod.
Du förstår inte mycket av vad som händer för du vet inte vad det gör.

Börja med toppen och jobba dig neråt.
Vad får du ut av int k = 0 t.ex?
Om du inte förstår vad koden gör så kommer det bli jobbigt att lära sig programmera.

Börja med att skriva ut vad du tror att den gör i ord så kanske det blir lite enklare att greppa.

Visa signatur

:: Fractal Design Define 7 :: ASUS Prime Z490-A :: Intel i9 10900K @ 5 GHz :: Corsair 32GB RAM @ 3600Mhz CL18 :: Kingston A2000 1TB M2 :: MSI RTX 3080 Gaming X Trio... :: Seasonic Focus PX 750W 80+ Platinum :: Noctua NH-D15 chromax.black ::

Permalänk
Medlem
Skrivet av mrex:

Har lagt in denna kod på följande sida men får inte fram siffrorna
int k = 0;
String s = "k:" ;
while( k < 6) {
s = s + " " + k;
k = k + 2;

https://www.w3schools.com/js/tryit.asp?filename=tryjs_dowhile

Vilket språk använder du? Javascipt?
Och vad försöker du göra på den sidan?

Permalänk
Medlem
Skrivet av mrex:

Har lagt in denna kod på följande sida men får inte fram siffrorna
int k = 0;
String s = "k:" ;
while( k < 6) {
s = s + " " + k;
k = k + 2;

https://www.w3schools.com/js/tryit.asp?filename=tryjs_dowhile

Som jag skrev tidigare så gör koden ingenting som den ser ut nu. Eller den gör saker, men den skriver inte ut nåt. Om du vill skriva ut strängen s så lägg till en rad i slutet som gör det.

Visa signatur

DAN Cases A4-SFX | AMD Ryzen 7 9800X3D | Thermalright AXP90-X47 Full Copper |
INNO3D GeForce RTX 4070 Ti SUPER 16GB Twin X2 | Kingston 32GB (2x16GB) DDR5 6000MHz CL30 | ASUS ROG Strix B650E-I Gaming WIFI | Samsung 960 EVO 1TB | Corsair SF-600

Permalänk
Medlem
Skrivet av mrex:

Har lagt in denna kod på följande sida men får inte fram siffrorna
int k = 0;
String s = "k:" ;
while( k < 6) {
s = s + " " + k;
k = k + 2;

https://www.w3schools.com/js/tryit.asp?filename=tryjs_dowhile

Din kod ser ut att vara endera C# eller Java, vilket innebär att du inte kan köra den på sidan du länkar (eftersom den bara kan köra JavaScript). Dessutom finns det inget anrop till någon utskriftsfunktion i din kod, så även om du kör den kommer du inte få något resultat.

En while-loop kommer att köra så länge ett villkor är sant - i ditt fall så länge k är mindre än 6.
En for-loop fungerar på samma sätt, men är annorlunda uppbyggd.
Här finns många exempel på for-loopar implementerade i olika språk.

Titta på ditt kodexempel och jämför med exemplet på sidan jag länkade och försök lista ut hur du skriver om koden.

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Hedersmedlem

Du saknar en bracket för att få ett fungerande exempel. Men om jag skriver lite kommentarer i din kod kanske det klarnar.

int k = 0; // initiera räknare String s = "k:" ; while( k < 6) { // villkor s = s + " " + k; k = k + 2; // öka räknare }

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk

Tips är att titta på en Youtube video (eller kursboken) om loopar.
Samtliga loopar kör till dess att villkoret är uppnått, både while-loopen och for-loopen.

Här kan du jämföra looparna med varandra:
For-loop: https://www.w3schools.com/js/js_loop_for.asp
While-loop: https://www.w3schools.com/js/js_loop_while.asp

Tips:
Du initierar värdet för villkoret (inte nödvändigtvis) i parenteserna i for-loopen, medan i while-loopen initieras detta värde före while-satsen.

Permalänk

for(int i = 0, i< 10,i = i + 1)
{
//kod
}
int i = 0, sätter i till 0

i < 10, kör koden innanför måsvingarna tills i är lika med 9

i = i +1, alt i++, efter varje iteration ökar i med värdet 1

Permalänk
Medlem

Dessa gör samma saker.

int k = 0; // initiera räknare String s = "k:" ; while( k < 6) { // villkor s = s + " " + k; k = k + 2; // öka räknare }

for(start, stop, incrementering) <-- detta är syntax för en for-loop.

String s = "k:"; for(int k=0; k<6; i+=2) { s = s + " " + k; }

Visa signatur

10700K | NVIDIA RTX 3080

Permalänk
Hedersmedlem
Skrivet av kwame:

Dessa gör samma saker.

int k = 0; // initiera räknare String s = "k:" ; while( k < 6) { // villkor s = s + " " + k; k = k + 2; // öka räknare }

for(start, stop, incrementering) <-- detta är syntax för en for-loop.

String s = "k:"; for(int k=0; k<6; i+=2) { s = s + " " + k; }

Grattis till att ha gett frågeställaren hela lösningen så slipper hen göra något själv.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem
Skrivet av giplet:

Grattis till att ha gett frågeställaren hela lösningen så slipper hen göra något själv.

Ibland är allt man vill ha ett komplett svar, inte direkt så att det är en tidskrävande uppgift - eller någonting som man får en banbrytande upplevelse/extra lärdom av att komma fram till på egen hand. Ibland lär man sig lika mycket av att bara se en lösning, fast det går betydligt snabbare.

Visa signatur

10700K | NVIDIA RTX 3080

Permalänk
Medlem
Skrivet av kwame:

Ibland är allt man vill ha ett komplett svar, inte direkt så att det är en tidskrävande uppgift - eller någonting som man får en banbrytande upplevelse/extra lärdom av att komma fram till på egen hand. Ibland lär man sig lika mycket av att bara se en lösning, fast det går betydligt snabbare.

Fast, det här är på en så basal nivå att om hen inte kan skapa och förstå en for-loop genom att själv läsa sig till det genom tips så är det inte lösningen som fattas utan snarare att hen måste lära sig hur man tar till sig text, hjälp och råd och hur man applicerar det på sitt problem.
Du hjälpte ingen, särskilt inte TS

Visa signatur

Oldschool [å:ldsku:l] adj. Användandet av datorprodukter som är äldre än 3 månader.