Sie sind auf Seite 1von 21

Zentralübung 1

Algorithmen und Datenstrukturen


Sommersemester 2021

Ruslan Zabrodin
Harald Räcke

Technische Universität München


Organisatorisches
Vorlesung
� Videos jede Woche bereitgestellt (Moodle)
� Fragen zum Vorlesungsstoff im Moodleforum oder während
der Zentralübung
Tutorübungen
� Übungsblätter werden immer Freitags veröffentlicht (Moodle)
� Selber rechnen!
� Tutoren gehen die Lösungen durch
� Lösungen werden nach den Tutorübungen veröffentlich
(Moodle)
Zentralübung
� Vertieft den Stoff aus der Vorlesung
� Praxis: Wie kann man die Algorithmen implementieren?

2
Warum C und C++?

� C ist die Grundlage, aber einige Konzepte fehlen.

� C++ ist eine Erweiterung von C, grösstenteils kompatibel.

� Aus C/C++ Quellcode kann sehr effizienter Maschinencode


erzeugt werden.

3
C/C++ Compiler

� MinGW für Windows


� GCC für Mac OS X über Xcode
� GCC für GNU/Linux
Meist schon vorinstalliert

4
Entwicklungsumgebungen

� Microsoft Visual Studio für Windows


� Xcode für Mac OS X
� CLion für Windows, Mac OS X, GNU/Linux
Vollversion für Studenten
� Eclipse für Windows, Mac OS X, GNU/Linux
� Microsoft Visual Studio Code
� Online Editor
� https://www.onlinegdb.com/online_c++_compiler
� https://repl.it/languages/cpp

5
Q&A

� Mit welcher Programmiersprache haben Sie bereits


Programmiererfahrung gesammelt?
A) C/C++
B) Java
C) Python
D) Andere
E) Keine

6
Q&A

� Wie viele Zeilen Code haben Sie maximal in einem Programm


geschrieben?
A) ≤ 20
B) 20 bis 100
C) 100 bis 1000
D) >1000

7
Q&A

� Was ist die Ausgabe des folgenden Codefragments?

#include<stdio.h>
A) 0 1 1
int main() {
B) 0 1 0 1
for (int i=0; i<2; i++)
printf("%d�", i); C) 0 1 1 1
for (int i=0; i<2; ++i) D) 0 1 2 0 1 2
printf("%d�", i); E) 0 0
}

8
Q&A

� Was ist die Ausgabe des folgenden Codefragments?

#include<stdio.h>
A) 0
int a; B) 1
C) undefined
int main () { D) Compile error
printf("%d", a);
} E) Runtime error

9
Q&A

� Was ist die Ausgabe des folgenden Codefragments?

#include <stdio.h>
A) 1
int main() {
B) 2
int a[] = {1, 2, 3};
int *p = a; C) 3
printf("%d", p[2]); D) Runtime error
return 0; E) Compile error
}

10
Q&A

� Was ist die Ausgabe des folgenden Codefragments?

#include<stdio.h>

void f(int) { printf("i"); } A) Keine Ausgabe


void f(double) { printf("d"); }
B) i
void f(float) { printf("f"); }
C) d
int main() { D) f
f(1.0);
} Beachten Sie: Die Antwort C ist nur
mit einem C++ Compiler richtig.
Wenn Sie das Codefragment mit
einem C Compiler kompilieren,
dann wird ein Compilerfehler
ausgegeben.

11
Q&A

� Was ist die Ausgabe des folgenden Codefragments?

#include<stdio.h>
A) true false
int main () { B) 00
bool a = true; C) 10
bool b = false; D) Compile error
printf("%d�%d", a, b);
} E) Runtime error
Beachten Sie: Die Antwort C ist nur
mit einem C++ Compiler richtig.
Wenn Sie das Codefragment mit
einem C Compiler kompilieren,
dann wird ein Compilerfehler
ausgegeben.

12
Q&A
� Was ist die Ausgabe des folgenden Codefragments?

#include<stdio.h>

struct A {
int foo = 0;
A) Keine Ausgabe
void printFoo() {
B) 0
printf("%d", foo);
} C) 1
}; D) Compile error
E) Runtime error
int main() { Beachten Sie: Die Antwort B ist nur
mit einem C++ Compiler richtig.
A a; Wenn Sie das Codefragment mit
einem C Compiler kompilieren,
a.printFoo(); dann wird ein Compilerfehler
ausgegeben.
}

13
Q&A
� Was ist die Ausgabe des folgenden Codefragments?

#include<stdio.h>

class A {
int foo = 0;
A) Keine Ausgabe
void printFoo() {
B) 0
printf("%d", foo);
} C) 1
}; D) Compile error
E) Runtime error
int main() {
A a;
a.printFoo();
}

14
Q&A
� Was ist die Ausgabe des folgenden Codefragments?

#include<stdio.h>

class A {
int foo = 0;

public: A) Keine Ausgabe


void printFoo() { B) 0
printf("%d", foo); C) 1
} D) Compile error
};
E) Runtime error
int main() { Beachten Sie: Die Antwort B ist nur
mit einem C++ Compiler richtig.
A a; Wenn Sie das Codefragment mit
einem C Compiler kompilieren,
a.printFoo(); dann wird ein Compilerfehler
ausgegeben.
}
15
Q&A

� Was ist die Ausgabe des folgenden Codefragments?

#include<stdio.h>

int main() {
char s[]="hello";
char t[]="hello"; A) not equal
if (s==t) { B) equal
printf("equal"); C) Compile error
} else {
D) Runtime error
printf("not�equal");
} Die Antwort ist abhängig vom Compiler, aber
return 0; normalerweise sollte "not equal" rauskommen.

16
Q&A

� Was ist die Ausgabe des folgenden Codefragments?

#include<stdio.h>
A) A
int main() { B) B
char c = ’B’+255; C) C
printf("%c", c); D) Runtime error
return 0;
} E) Compile error

17
Q&A

� Was ist die Ausgabe des folgenden Codefragments?

#include<stdio.h>
A) 15
int main() {
B) Garbage value
int* p = 15;
C++
printf("%d",*p); C) Compile error
return 0; D) Runtime error C
}

18
Q&A

� Was ist die Ausgabe des folgenden Codefragments?

#include<stdio.h>

int main() {
int a=1, b=2, c=3; A) 1 2 3
a = b = c = 0; B) 1 2 0
printf("%d�", a); C) 0 0 0
printf("%d�", b);
D) Compile error
printf("%d�", c);
return 0;
}

19
Q&A

� Was ist die Ausgabe des folgenden Codefragments?

#include<stdio.h>

int main() { A) 7 7.000000


int x;
B) 7 7.500000
float y;
y = x = 7.5; C) Runtime error
printf("x=%d�y=%f",x,y);D) Compile error
return 0;
}

20
Q&A

� Was ist die Ausgabe des folgenden Codefragments?

#include<stdio.h>
A) Keine Ausgabe
int main() {
B) Endlosschleife
for(1;2;3)
printf("Hello"); C) ”Hello”nur einmal
return 0; D) Compile error
}

21