Sida 1 av 3

Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 12:39
av Lulle
Hej!
Jag har tjuvstartat min C++ kurs, jag har tillgång till kursmatrealet osv.
Men som att jag inte ska börja med denna kurs ännu så har jag ingen som kan säga om jag har gjort rätt eller inte.
Så därför tänkte jag posta lite resultat osv här och så hoppas jag på att någon vänlig person kan säga vad dom tycker osv om det.
Ge mig lite tips, visa om jag har gjort fel, kritisera mig ja, helt enkelt säg exakt vad ni tycker om mina lösningar.

Jag tjuvstartar för att jag tycker det är roligt med olika program språk + att jag vill vara redo och förberedd.
Så jag kommer posta mina svar osv som jag har gjort nedan varje dag då jag följer kursplanen.


Uppgifter:
Skriv först pseudokod och sedan flödesschema för följande resonemang:

1.
Om det är en vardag går man till arbetet, annars åker man och fiskar.
2.
Drick vatten så länge du är törstig.



Lösningar:

Pseudokod:
1:
Start -> Vardag? -> Ja -> gå till arbete. -> Stopp
Start -> Vardag? -> Nej -> Åker och fiskar -> Stopp

2:
Start -> törstig? -> Ja -> drick vatten -> Loop
Start -> törstig? -> Nej -> Stopp

Flödesscheman:
1: http://img522.imageshack.us/my.php?imag ... gifpr2.gif
2: http://img101.imageshack.us/my.php?image=gifup2sn4.gif

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 12:43
av Osprey
Det logiska resonemanget ser helt korrekt ut, förutom att jag inte vet om symbolerna är rätt enligt dagens skola... :)

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 12:48
av Lulle
Osprey skrev:Det logiska resonemanget ser helt korrekt ut, förutom att jag inte vet om symbolerna är rätt enligt dagens skola... :)

Okej, det låter ju kanon.

Jag är osäker på Pseudokod ¸ har jag gjort rätt angående den?


Någon som kan svaret på tecknen?


Det där var dagens uppgifter, kommer att posta morgondagens också då jag inte har tillgång till lärare ännu förens i februari, men vill börja köra C++ så fort som möjligt.

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 12:49
av micke_nordin
Om du vill göra "riktiga" sekvensdiagram eller aktivitetsdiagram enligt UML kan jag tipsa om dia som är ett jättebra verktyg. Här har jag skrivit en guide om hur man kan installera utvecklingsversionen från källkod eftersom jag fick problem med den som finns i förråden:

http://mickenordin.se/blog/index.php/20 ... n-kallkod/

Pseudokoden kan jag inte riktigt säga nått om eftersom jag brukar använda en hemmasnickrad variant.

/Micke

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 12:51
av Osprey
Ja flödesmässigt har du gjort rätt i Pseudokoden, men om det är rätt utseende på pseudokod enligt din skola vet jag inte. För min del ser det mer ut som ett flödesschema än pseudokod...

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 12:55
av Lulle
Osprey skrev:Ja flödesmässigt har du gjort rätt i Pseudokoden, men om det är rätt utseende på pseudokod enligt din skola vet jag inte. För min del ser det mer ut som ett flödesschema än pseudokod...
Okej, har du lust att göra en pseudokod av uppgift 1 så att jag ser hur dom ska se ut?

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 13:26
av Lars
Pseudokod kan se ut lite grand hur som helst, typ så här:

Kod: Markera allt

if vardag
  gå till arbetet
else
  åk och fiska
Det är ju bara kod som ska läsas av människor, så ingen kompilator behöver förstå den.

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 13:41
av Lulle
Lars skrev:Pseudokod kan se ut lite grand hur som helst, typ så här:

Kod: Markera allt

if vardag
  gå till arbetet
else
  åk och fiska
Det är ju bara kod som ska läsas av människor, så ingen kompilator behöver förstå den.
Aha okej, det är exakt så där jag tänkte när jag gjorde flödschemat.

Fan, detta kommer bli as roligt.
Längtar redan tills imorgon när jag ska bita i det ännu mer.

Sedan när jag ska göra kursen så kommer jag kunna allt redan men då kan man finslipa på olika saker istället.

Kommer att uppdatera denna tråd dagligen, skulle uppskatta om ni kikade in i den och rättade mig osv.


Stort tack till er alla som hjälper mig, en eloge till er alla som hjälper en medmänniska att lära sig detta underbara programmeringsspråk.
Kan inte fatta att jag satt med Delphi förut som är plattformlåst.


Edit:
Då är detta rätt för uppgift 2 right?

Kod: Markera allt

start 
  Törstig?
IF Ja
  Drick
WHILE Ja
Drick

IF Nej
   Stopp

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 14:17
av Osprey
Du kan ju helt enkelt korta ner det till:

Kod: Markera allt

Start
WHILE Törstig
    Drick
Stopp

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 14:24
av micke_nordin
Osprey skrev:Du kan ju helt enkelt korta ner det till:

Kod: Markera allt

Start
WHILE Törstig
    Drick
Stopp
Typ så där skriver jag också, fast jag använder "om", "annars", "så länge" i stället för "if", "else" och "while". :)

Sedan har jag inget start och stopp heller, men så är det ingen annan än jag som läser min pseudokod. På min javakurs rekommenderas förövrigt att man göör pseudokod i flera steg, man kanske börjar i Ospreys exempel ovan, men sedan utökar man så att man sedan kan direktöversätta till källkod.

/Micke

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 17:24
av Lulle
Nu har jag läst lite till och så, så nu va det dags för att kopiera en källkod av dom och sedan testa köra det.
Men det går inte så bra för mig.

Så här ser källkoden ut:

Kod: Markera allt

//test.cpp

#include <iostream>

int main(int argc, char** argv)
{
	cout << "\n";
	cout << "Testar detta program.";
	cout << "\n\n"
	
	return 0;
}
Och jag skriver detta i terminalen:
g++ test.cpp -o test


Då får jag detta error:
test.cpp: In function ‘int main()’:
test.cpp:28: error: ‘cout’ was not declared in this scope

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 17:54
av Lars
Det där är väl något som har ändrats lite över åren tror jag Jag har ingen stenkoll på C++, och speciellt inte namespaces. Hur som helst, antingen kan du lägga till using namespace std; före main, eller så kan du använda std::cout istället för cout.

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 18:30
av Lulle
Hej!
Lite nya uppgifter som ni kan kolla på om ni har lust och se om jag har gjort rätt.

LÄXA nr1:
Jag ska göra ett flödesschema + en pseudokod av denna text:

UPPGIFTER
1.
Plocka jordgubbar tills hinken är full (tips: skriv det som en repetition).

2.
Lägg en CD i CD-spelaren. Tryck på play. Om du ogillar musiken, tryck på stop.


LÖSNINGAR

1.
Flödesschema:
http://img368.imageshack.us/my.php?imag ... am1he6.png

Pseudokod

Kod: Markera allt

START Plocka Jordgubbar.
   Är hinken full?
WHILE Nej
   LOOP
ELSE
   STOPP
2.
Flödesschema:
http://img139.imageshack.us/my.php?imag ... am1qz2.png

Pseudokod

Kod: Markera allt

START Lägg i en cd skiva i spelaren!
THEN
   Tryck play
   Gillar du musiken?
IF Nej
   tryck på stopp
ELSE
STOPP


Läxa nr2
Man ska göra om dessa flödscheman till pseudokod

Uppifter:
1:
http://img338.imageshack.us/my.php?image=lxa1jh6.png

2:
http://img229.imageshack.us/my.php?image=lxa2fh9.png

Svar:
1.

Kod: Markera allt

START dammigtgolv?
IF Sant
   Ta fram dammsugare
   Damsuga rummet
   Ställa tillbaka dammsugare
ELSE
   Lägga er på soffan
STOPP
2

Kod: Markera allt

START titta ut genom fönster
   Regnar det?
IF sant
   Läsa bok
IF falskt
   Tvätta bilen
IF Är bilen smutsig?
WHILE sant
   Loop
IF falskt
   STOPP
Återigen tack om ni har lust att kolla över detta och kommentera samt rätta mig.

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 21:23
av Osprey
Lulle skrev:

Kod: Markera allt

START Plocka Jordgubbar.
   Är hinken full?
WHILE Nej
   LOOP
ELSE
   STOPP
START Plocka Jordgubbar.
Är hinken full? <----Känns lite onödigt att kolla om hinken är full redan innan du börjat plocka
WHILE Nej <----Borde vara typ "WHILE hink-not-full"
LOOP <----WHILE i sig är ju det som utgör loopen, så här borde stått "Plocka jordgubbar"
ELSE <----Else kan bara existera ihop med IF och inte WHILE, kombinationen WHILE/ELSE funkar inte riktigt ens i vanlig engelska
STOPP <----När villkoret i WHILE är uppfyllt/ej längre uppfylls så blir det ett automatiskt stopp

Jobba på... :)

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 21:53
av Lulle
Osprey skrev:
Lulle skrev:

Kod: Markera allt

START Plocka Jordgubbar.
   Är hinken full?
WHILE Nej
   LOOP
ELSE
   STOPP
START Plocka Jordgubbar.
Är hinken full? <----Känns lite onödigt att kolla om hinken är full redan innan du börjat plocka
WHILE Nej <----Borde vara typ "WHILE hink-not-full"
LOOP <----WHILE i sig är ju det som utgör loopen, så här borde stått "Plocka jordgubbar"
ELSE <----Else kan bara existera ihop med IF och inte WHILE, kombinationen WHILE/ELSE funkar inte riktigt ens i vanlig engelska
STOPP <----När villkoret i WHILE är uppfyllt/ej längre uppfylls så blir det ett automatiskt stopp

Jobba på... :)

Okej, jag förstår hur man gör ett flödschema har lite svårt för Pseudokod dock.
Men jag jobbar på som sagt, lika bra att lära sig nu så kan man finslipa när kursen startar.
Har hunnit med en uppgift till och har läst det du har skrivit så nu får vi se om jag har fått till det.
Vad tycker ni om flödschemat? Jag tycker att jag förstår men jag vet ju inte till 100%.

Läxan:
UPPGIFT:
Skapa en pseudokod och ett flödesschemat till följande algoritm som beskriver hur man tvättar händerna.

”Slå på vattenkranen. Skölj händerna. Tvätta händerna med tvål och vatten tills de är rena. Så länge händerna är tvåliga, skölj händerna. Slå av vattenkranen. Tag ned handduken från kroken och torka sedan händerna på handduken tills de är torra. Om handduken är smutsig, lägg den i tvättkorgen och hämta en ren i linneskåpet, annars hänger du upp handduken på tork.”

Krav på redovisning
Projektet utför du antingen genom att skissa upp det på ett papper eller använder ett program som kan rita upp symbolerna.
Redovisningen ska innehålla en pseudokod som följer den struktur som beskrivs i föreläsningarna och dokumenten på elevsidorna.
Ett grafiskt flödesschema med de symboler som beskrivs i i föreläsningarna och dokumenten på elevsidorna.
Den ursprungliga algoritmen (se ovan) ska finnas med i det dokument som lämnas in, så arbeta gärna direkt i det här dokumentet.
Projektet är individuellt.


Mina lösningar:

Flödschemat:
http://img168.imageshack.us/img168/3013 ... ng1il1.png

Pseudokod:

Kod: Markera allt

START
   slå på vattenkranen
   skölj händerna
   tvätta händerna tills dom är rena
   är händerna rena?
WHILE smutsiga
THEN
   skölj händerna
   år händerna tvåliga?
WHILE tvåliga
THEN
   slå av vattenkran
   ta ned handuk
   torka händerna
   Är händerna torra?
WHILE blöta
THEN
   är handduken smutsig?
IF smutsig
THEN
   lägg den i tvättkorgen
   hämta en ny i linneskåpet
ELSE
   häng upp handduken
STOPP

Tack igen till er alla som tar er tid att rätta mig och kommentera osv.

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 21:59
av Lars
Lulle skrev:Okej, jag förstår hur man gör ett flödschema har lite svårt för Pseudokod dock.
Jag vet ju inte hur mycket du har programmerat innan, det är kanske lättare med pseudokod när man redan kan ett språk eller två. Hur som helst så är det bara en typ av anteckning för att hjälpa en själv eller för att förklara en idé på hur ett problem kan lösas. Häng inte upp dig så mycket på det, det viktiga är att skriva och förstå riktig kod.

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 22:13
av Osprey
Ja precis, pseudokod är bara något man använder sedan för att liksom skissa upp hela programmets funktion på ett lättfattligt sätt, så att man kan ha det som grund för flödesschemat/kodningen och då är det mycket lättare om man kan programmera och vet vilka konstruktioner som är möjliga...

[Edit] Man kan ju faktiskt använda det innan man kan programmera också, för att tänka igenom ved det egentligen är som ska göras...

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 22 dec 2008, 22:50
av Lulle
Lars skrev:
Lulle skrev:Okej, jag förstår hur man gör ett flödschema har lite svårt för Pseudokod dock.
Jag vet ju inte hur mycket du har programmerat innan, det är kanske lättare med pseudokod när man redan kan ett språk eller två. Hur som helst så är det bara en typ av anteckning för att hjälpa en själv eller för att förklara en idé på hur ett problem kan lösas. Häng inte upp dig så mycket på det, det viktiga är att skriva och förstå riktig kod.
Okej, men gjorde jag rätt med den senaste Pseudokod?
Jag vill verkligen kunna det där med den koden då det är en del av programmering och jag vill kunna alla delar.

Jag har skrivit några program i Delphi men är självlärd där.
Jag har även gjort lite html.

Igentligen har jag inte förstått varför saker blir osv i dom språken utom jag har bara lärt mig vad man ska skriva.


EDIT:
Tänkte att jag kanske kan förstå koden om jag skriver på svenska istället som kursen är skriven på svenska.
Så här blev min svenska kod.

Kod: Markera allt

START
   slå på vattenkranen
   skölj händerna
REPETERA
   tvätta händerna tills dom är rena
   är händerna rena?
SÅ LÄNGE nej
REPETERA
   skölj händerna
   år händerna tvåliga?
SÅ LÄNGE ja
   slå av vattenkran
   ta ned handuk
REPETERA
   torka händerna
   Är händerna torra?
SÅ LÄNGE nej
   är handduken smutsig?
OM ja
   lägg den i tvättkorgen
   hämta en ny i linneskåpet
ANNARS
   häng upp handduken
STOPP
Hur ser det ut?

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 23 dec 2008, 01:23
av Lulle
Hoppas någon har lust att svara på min post ovan, gör en ny post för jag har nu pluggat lite mer och har kommit så attj ag skulle skriva mitt lilla egna program.
Detta program skrev jag utan hjälp, dvs jag hade bara läst tidigare jag hade inte boken vid min sida när jag skrev programmet.
Säg vad ni tycker om det. :)

Kod: Markera allt

#include <iostream> //Kallar/Inkluderar headfilen.
using namespace std; // Gör så att man kan skriva koden på ett förenklat sätt.

int main(int argc, char** argv) // Kallar/skriver information från processorn.


{ // Här startar koden. All kod inom detta tecken kallas för "block", all kod inom detta tecken är en och samma kod.
   cout << endl; // Byter rad ifrån sista tecknet, man kan även skriva "cout << "\n";"
   cout << "Mitt första fristånde program i C++."; // Denna text kommer att visas i programmet.
   cout << endl;
   cout << "Relativt simpelt, men detta är bara ett av många kommande program från min sida.";
	return 0; // Skickar tillbaka värdet 0 åt oss, till int main () detta resulterar i att programmet stängs ner.
} // Detta tecken avslutar kodblocket, så här slutar koden.
Men är osäker på vad "cout" gör för oss.
Jag tror att "cout" gör så att programmet kan visa min text men är inte säker.
Någon som kommer ihåg?
Annars kan jag alltid kolla iboken senare innan jag lägger mig.


Edit:
varför fungerar inte:

Kod: Markera allt

#include <conio> 
för mig?

Jag får detta felmedelande:
untitled.cpp:8:18: error: conio: No such file or directory


Lika så fungerar inte getch();
Men jag kom på att man kan skriva getchar(); istället vilket fungerar exakt lika bra.

Re: Tänker jag rätt? Har jag gjort rätt? C++, rätt mig.

Postat: 23 dec 2008, 10:01
av Lulle
bump, ingen som vet lösningen på mitt problem ovan?

Någon som skulle kunna läppa en blick på uppgiften över den ovan också?


Tack på förhand för eran hjälp :)