Nekromanti Lär dig programmera - Första veckan

Tony.Meijer

Ärketeknomantiker
Joined
14 Sep 2009
Messages
1,887
Location
Uppsala
Hej,
första veckan för de som vill lära sig programmera med tillhörande uppgifter, vilket är:

1. Skriv ett hello word program (ett program som på något sätt skriver ut texten "Hello world")
2. Gör en dricks-kalkylator (dvs ett program som beräknar hur mycket dricks (10% av summa) kyparen skall ha)
3. Gör ett gris-latin's program (gris-latin är när man tar ett ord och tar första bokstaven och lägger det sist samt lägger till -ay, så programmera skulle bli rogrammerap-ay)

Det är en bra start tror jag.
 

Kraetyz

Warrior
Joined
13 Feb 2014
Messages
352
Jag vill bara se om jag får godkänt. Har inte rört C++ på typ över en månad nu och är rädd att jag totalt tappat greppet.

Hello World
Code:
#include <iostream>
using namespace std;

int main()
{
cout << "Hello world";
return 0;
}

Dricks
Code:
#include <iostream>
using namespace std;

int main()
{
int totalcost = 0;
cout << "How much did your meal cost?" << endl;
cin >> totalcost;
cout << "You should tip " << totalcost * 0.1 << " monies.";
return 0;
}

Grislatin
Code:
#include <iostream>
#include <string>
using namespace std;

int main()
{
string word = "";
cout << "What word do you want to pig-latinize?" << endl << "Enter here: ";
cin >> word;
string latin = "";
for (int c=1; c<word.length(); c++)
{
latin.append(word[c]);
}
latin.append(word[0]);
latin.append("-ay");
cout << "Pig-latinized word is: " << latin;
return 0;
}

Ursäkta om du inte ville att jag skulle posta möjliga svar i tråden, om du vill kan jag ta bort dem. Spoilertextade i alla fall, så om någon faktiskt vill lära sig så kan de ju försöka själva istället. ;)

(inga av dessa är testkompilerade... <.< Ska göra det ikväll)
 

Tony.Meijer

Ärketeknomantiker
Joined
14 Sep 2009
Messages
1,887
Location
Uppsala
Utan att ha kompilerat det så ser det väl rätt ut, fast tanken är ju att du ska lära dig ett nytt språk ;)
Kraetyz said:
Jag ska lära mig Python någon dag och då ska jag gå tillbaks och göra de här övningarna. :D Men måste verkligen friska upp minnet på C++ så det fick bli i det språket! ^^
Tony.Meijer said:
 

Björn den gode

Swashbuckler
Joined
5 Jun 2001
Messages
3,314
Location
Göteborg
Kraetyz;n32800 said:
using namespace std;
Det här anses allmänt vara dåligt att använda. Nu kanske det känns lite onödigt att påpeka en sån här 'expert-detalj' när du håller på att lära dig språket, men jag tycker att det finns en viktig pedagogisk poäng i att göra rätt från början, eftersom man då lär sig vad som ligger vart så att du redan från början lär dig vilka funktioner som ligger i standard-biblioteket och inte.
 

Kraetyz

Warrior
Joined
13 Feb 2014
Messages
352
Björn den gode;n32962 said:
Det här anses allmänt vara dåligt att använda. Nu kanske det känns lite onödigt att påpeka en sån här 'expert-detalj' när du håller på att lära dig språket, men jag tycker att det finns en viktig pedagogisk poäng i att göra rätt från början, eftersom man då lär sig vad som ligger vart så att du redan från början lär dig vilka funktioner som ligger i standard-biblioteket och inte.
Jag vet att det GÅR att skriva std:: för saker och ting, men jag har (efter ett år programmeringsskola) fått noll info om när och varför man bör/inte bör använda sig av det. Men jag gissar att jag, i de första två exempeln, inte hade behövt använda det alls. Om jag minns rätt är det väl för typ strängar och så man plockar in STD?
 

mcwolfe

Veteran
Joined
11 Dec 2001
Messages
172
Location
Vänersborg
Ok, försöker med Swift (som ju var lite tanken för min del). Har ingen kompilator, men utgår från Apples egen lilla bok. Enligt boken ska det inte behövas inkluderas massa saker, så jag kör rakt på.

1:
println("Hello world")

2:
func calculateTip (double: cost) -> double
{
return cost*0.1
}

(och här hittade jag inte hur man skickar in och ut data från användaren. Nöjde mig med vanlig funktion så länge

3:
func pigLatin (String: myWord) -> String
{
var result = ""
result = myWord.substringFromIndex(1) + myWord.substringToIndex(1)+"-ay"
return result
}

/McWolfe
 

Björn den gode

Swashbuckler
Joined
5 Jun 2001
Messages
3,314
Location
Göteborg
Kraetyz;n32977 said:
Jag vet att det GÅR att skriva std:: för saker och ting, men jag har (efter ett år programmeringsskola) fått noll info om när och varför man bör/inte bör använda sig av det. Men jag gissar att jag, i de första två exempeln, inte hade behövt använda det alls. Om jag minns rätt är det väl för typ strängar och så man plockar in STD?
Det du gör när du skriver "using namespace std;" är att du säger till kompilatorn att du vill kunna använda alla funktioner som finns i std (standard library) utan att behöva skriva std:: före. Problemet uppstår nu ifall du själv också definerar en funktion med samma namn, eller kanske ännu värre om något annat bibliotek du gjort på samma sätt med (using namespace boost;) tex gör det. För då kommer du i bästa fall inte kompilera men det kan också vara så att det fungerar nu men när du uppgraderar std genom att tex byta kompilator så fungerar det plötsligt inte längre. Och i värsta fall så kompilerar du fortfarande men du anropar plötsligt en annan funktion och det kan vara jävulskt komplicerat att hitta felet.

Tl;dr använd aldrig "using namespace xxx". Vad som däremot är helt ok att använda och som mer är en personlig preferens om man använder eller inte är att inkludera specifika funktioner på det sättet i början av filen. "using std::cout; using std::cin;" istället hade tex varit helt ok och då hade du också lärt dig att cout och cin ligger i standardbiblioteket.
Luna Lovegood said:
Har du gjort eller kommer du göra en tutorial i något av C språken? Sådana här saker är ju enligt mig jätteviktigt att man lär sig tidigt (also jag kommer inte ihåg något av min gymnasie kurs i C++ alls och måste börja från början).
Björn den gode said:
Nej, har inte skrivit någon själv och har tyvärr inte någon vidare koll på vad det finns för bra litteratur därute heller.
 
Top