Informatik I

Übung 2 : Programmieren in Eclipse

4. März 2015


Daniel Hentzen
dhentzen@student.ethz.ch






Downloads : 



Heute


  1. Nachbesprechung Übung 1
  2. Theorie
  3. Vorbesprechung Übung 2




Übung 1 : Linux, Terminal und Kompilieren









Hello World ...

argc, argv




Fehler




 

im Debugger nur Debugger-Befehle benutzen!

 

auf Gross -und Kleinschreibung achten !




  • falls nicht im korrekten Verzeichnis : ganzen Pfad angeben
  • Dateiendung nicht vergessen
  • falls [info1@VirtualFedora ~] $  verschwindet : ctrl -c
  • Kompilieren : 
    • g++  -c  main.cpp
    • g++  -o  Programmname  main.o



Prüfungsaufgabe

Sommer 2013



"Die Datei test.txt  befindet sich im Ordner Info1/2013/Test/  .

Verschieben Sie diese Datei in das Verzeichnis 2013 und benennen Sie sie um in test2.txt  "


Lösung : 


     mv Info1/2013/Test/test.txt Info1/2013/test2.txt





Theorie




  • Einführung in Eclipse
  • Elemente eines C++ Programmes
    • Input / Output (cin / cout)
    • Datentypen
    • Variablen (Deklaration und Zuweisung)
    • Arithmetische Operatoren
    • Typenumwandlung




Eclipse


How to get started...


  1. "File > New > C++ Project"
  2. Projekt Namen eingeben (z.Bsp : Serie2)
  3. Linux GCC auswählen
  4. Finish
  5. Rechtsklick auf [Projektname] in der linken Spalte
  6. "New > File"
  7. Filename.cpp eingeben (z.Bsp : aufgabe1.cpp)

keine Sonderzeichen benutzen !


Programm ausführen


  1. Speichern
  2. Kompilieren    "Hammer" (Build Debug)
  3. Ausführen ►  "Grüner Pfeil" (Play)

Regelmässig speichern !





eigene Argumente


  • " Run Configurations... > Arguments "
  • Aufruf im Programm mit argv[ ]




Elemente eines C++ Programmes











  • Präprozessor #include<iostream>
  • using namespace directive
  • main () - Funktion
  • Eingabe und Ausgabe mit cin und cout Objekten
  • Deklaration und Verwendung von Variablen



main() - Funktion


  • muss in jedem C++ Programm vorliegen
  • hier werden Anweisungen erteilt

main() - Funktion


Funktionskopf : 

 int main() // Teil vor main gibt Rückgabetyp an (hier: integer)
Funktionskörper : 
{
	statements; // Anweisungen mit Semikolon enden!
	return 0; // Beendet die Funktion und gibt 0 zurück.
}


main()  oder  main(void)  : Funktion ohne Argumente

 mean(int a, int b)  : Funktion mit Argumenten






Output (cout)


  • cout : vordefiniertes Objekt
    • gibt einen Zeichenstrom aus (ostream)
    • kann viele verschiedene Datentypen ausgeben
  • <<  
    • übergibt Daten an cout
    • Konkatenation



cout << "This is Info1"; // zur Ausgabe der Zeichen in Anführungszeichen
cout << "Konka" << "tenation"; // Konkatenation  
int var = 3;cout << "Die Variable beträgt : " << "var";cout << "Die Variable beträgt : " << var; // Ausgabe von Variablen

  • Achtung : 
cout >> "This is Info I"; // invalid"This is Info I" >> cout; // invalid

Formatieren



in neue Linie springen 

cout << "line1" << endl;cout << "line2";
cout << "line1\n";cout << "line2";
cout << "line1" << endl << "line 2";

cout << "line1\nline 2;
cout << "line1 endl line2"; // falschcout << "line1" << \n << "line2"; // falsch


Input (cin)


  • Dateneingabe an das Programm
  • cin 
    • liest Zeichenstrom (istream)
    • weist Variablen zu
    • aufpassen auf Typen ! (siehe Typenumwandlung)
  • >> 
    • übergibt Daten an cin
    • Konkatenation


int i;cin >> i;
int a;int b;cin >> a >> b; // Konkatenation

implizite Typenumwandlung :

int a;cin >> a; // falls Benutzer einen String eingibt, a=0// falls Benutzer eine Kommazahl eingibt, wird die Zahl abgerundet
int a,b;cin >> a; // Programm wartet auf Input// Input : 65 73cin >> b; // b = 73;  

Beispiel






Variablen





Deklaration :

<type> <name>;
int fleas; // macht den Namen "fleas" für ein C++ Programm kenntlich// deklariert den Namen "fleas" vom Typ Integer und ordnet Speicher zu


  • Variablendeklaration an beliebigen Stellen im Programm
  • auf Gültigkeitsbereich achten (scope) !



Einige Datentypen :


Erlaubte Variablennamen


  • alphabetische Zeichen, Ziffern und underscore (_)
  • erstes Zeichen darf keine Ziffer sein !
  • Name sollte nicht mit _ beginnen...
  • keine C++ Wörter ! (main, int, for,...)
  • Case-sensitive ! (Gross-/Kleinschreibung)




int firstname; // okint Firstname; // ok, unterscheidet sich von "firstname"int info2014; // okint 2014info; // falsch, erstes Zeichen ist eine Zahlint what_a_great_name; // okint var!; // falsch, enthält Sonderzeichenint main; // falsch, C++ keywordint main_test; // okint _thisvar; // ok, sollte aber nicht benutzt werden





Zuweisung im Code selbst

int a; // Deklarationa = 3;

in Serie :

int a,b,c; // Deklaration in Seriea = b = c = 5;




Arithmetische Operatoren 


+  -  *  /  %

% : modulo : gibt den Rest einer Division an
Bsp : 7 % 3 = 1


Klammern > Operatoren

/, *, mod   >  +, -

sonst : links nach rechts



5 * 4 + 1; //21
5 * (4 + 1); //25
2 * 3 + 3 * 4 / 2; //12
9 % 4 + 1; //2
9 % (4 + 1); //4
5 * 3 % 4 * 2; //6
5 * (3 % 4) * 2; // 30


Typenumwandlung


float a = 3.14int b = a;


  • Die Variable b kann keine reelle Zahl abspeichern.
  • Der Wert der b zugewiesen wird, wird umgewandelt.
  • Nachkommastellen werden abgeschnitten.
  • b = 3


  Wenn ein numerischer Wert einer Variable eines anderen Typs zugewiesen wird, passt sich der Typ des Werts an den Typ der empfangenden Variable an.

Umwandlung in arithmetischen Operationen


5.453f * 3 * 9.86 = float/int/double ??

Faustregel : C++ wandelt Ausdruck in den "generellsten" Typ um.
float * int = floatfloat * double = double
5.453f (float) * 3 (int) * 9.86 (double) =16.359 (float) * 9.86 (double) =161.29974 (double)



Achtung : Integer Division


 5 / 2 == 2 // 0.5 wird abgeschnitten
 1 / 2 == 0 // hier auch


Mehr Beispiele


 13.0f * 4 = ?
 7.0 * (3 / 7) = ?
 20 / (10 / 6) = ?
 20 / (10.0 / 6) = ?





Übung 2 : Programmieren in Eclipse




Aufgabe 1 : Eclipse Starten





Aufgabe 2 : Neues Projekt erstellen






Aufgabe 3 : Temperaturumwandlung






  • Achtung auf Integer Division !
  • welcher Datentyp wird benötigt ?
    • integer ?
    • float ?
    • double ?



Aufgabe 4 : Erweiterte Temperaturumwandlung





  • Programmargumente sind strings (Zeichenketten)
  • falls damit gerechnet werden soll, müssen sie in eine Zahl umgewandelt werden !



  atof - Funktion benutzen !

►  in <stdlib.h> definiert  im Header "includen"

http://www.cplusplus.com



Übung 2 : Programmieren in Eclipse

By Daniel Hentzen

Übung 2 : Programmieren in Eclipse

  • 1,186