Kurs:Wie funktioniert eigentlich ein Computer/C Kurs
Willkommen in unserem kleinen Crash-C-Kurs. In diesem Kurs geht es vor allem darum, die nötigsten Grundlagen von C zu erlernen, die wir später benutzen werden, um Programme zu kompilieren. Das Ziel dieses Kurses kann es nicht sein, vollständig C zu lernen. Vielmehr geht es darum, gemeinsam auf einen gleichen Stand zu kommen.
Lektion 1
BearbeitenIn der ersten Lektion geht es noch gar nicht um C direkt, sondern vielmehr darum, uns optimal für die Kursarbeit sowie die Programmierung mit C vorzubereiten.
Ubuntu installieren
BearbeitenUbuntu ist ein freies Linux-Betriebssystem. Es kann kostenlos unter diesem Link heruntergeladen werden.
Um Linux neben Windows zu installieren, gibt es mehrere Optionen:
- Wubi ermöglicht es euch, Linux sozusagen als Programm in euer Windows-System zu installieren.
- Mit der Software VirtualBox von O.
Wir raten euch zu der Option mit Wubi, die auch unter dem oben angegebenen Link zu finden ist.
Natürlich ist es auch immer möglich, sich ganz von Windows zu verabschieden und nur auf Linux zu bauen.
Lektion 2
BearbeitenDie heutige Lektion hat mehrere Ziele:
- Die Konsole unter Linux kennenzulernen,
- Emacs kennenzulernen,
- ein Makefile gesehen zu haben,
- ein C-Programm mit gcc kompiliert zu haben,
- Parameter von Programmen gesehen zu haben und
- zu verstehen, dass Linux-Befehle auch nur Computerprogramme sind.
Wie ihr euch vielleicht denken könnt, kann man so viele Ziele in einem 20 Minuten langen Video kaum herüberbringen. Uns ist auch bewusst, dass der von uns gewählte Einstieg in die C-Programmierung wirklich hart ist. Wir sind uns aber sicher, dass wir langfristig für die Kursarbeit genau die hier vorgestellten Tools benötigen werden.
Hausaufgaben
Bearbeiten- Die Sachen aus dem Video erfolgreich nachmachen (nicht unbedingt verstehen) – dieser Artikel kann dabei hilfreich sein.
- Auf Youtube gibt es screen casts, die hilfreich sind, um den Einstieg in die Linux-Konsole zu erleichtern. Stöbert ein bisschen und verlinkt hier gute und hilfreiche screen casts.
- Wenn man in Emacs C-h t drückt (wobei C für ctrl also im Deutschen Strg steht), startet man das Tutorial. In diesem werden euch die Basics zum Arbeiten mit Emacs erklärt.
- Ein wenig Klarheit über Parameter eines C-Programms gibt euch vielleicht dieser Link.
Fragen und Wünsche für nächste Woche
BearbeitenAuf der Dikusssionsseite könnt ihr Fragen und Wünsche für die nächste Woche auflisten. Je früher ihr das macht, um so größer sind die Chancen, dass wir auf die Fragen wirklich eingehen können.
Lektion 3
Bearbeiten
Hausaufgabe
Bearbeiten- Wie kann es sein, dass sich die Funktion mit den Zeichenketten anders verhält als mit der Zahl?
- Was muss ich an dem Programm ändern, so dass bei der Übergabe mit der Zahl das Gleiche passiert wie mit der Zeichenkette?
Lektion 4
BearbeitenPointer und Pointer-Arithmetik
In diesem Video erkläre ich euch die Basis-Operationen von Pointern und brauche euer Feedback! Braucht ihr noch ein Screencast, wo ich in C mit Emacs noch ein wenig mehr damit rumspiele oder reicht das zum Verstehen?
Hausaufgabe
BearbeitenÜbungsaufgabe ist es übrigens, mit Pointern rumzuexperimentieren.
- Was passiert, wenn ich einen Pointer auf eine Variable erhöhe?
- Was passiert, wenn ich mit einem char-Pointer auf einen Integer zeige?
- Welchen Wert muss der Integer haben, so dass ich mit Hilfe eines char-Pointer „dsa“ auslesen kann. (Tipp, der String muss mit einer 0 enden, also einem Byte, in dem 0 steht.)
- Um noch mal alles rund um Pointer nachzulesen: Zeiger in C++
Lektion 5
BearbeitenAm Ende unseres C-Kurses ist es Zeit für ein paar Tests. Keine Angst, wir können (leider!) nicht sehen, was ihr anklickt. Der Test ist eher für euch zur Kontrolle, ob ihr euch wirklich mit allem gut beschäftigt habt und gut für die DSA vorbereitet seid.
Ich habe in dem C-Test auch ein paar Antworten zu euren Fragen einfließen lassen bzw. einen Teil der Hausaufgaben beantwortet. Leider konnte ich nicht auf alles eingehen, aber den Rest können wir sicherlich während der Akademie klären.
Insbesondere würde ich mich über euer Feedback freuen, wie ihr bei dem Test abgeschnitten habt, bzw. welche Fragen schwierig waren. Somit wissen Leon und ich, was wir in den ersten Stunden der DSA vielleicht noch einmal wiederholen müssen.
Ansonsten viel Erfolg bei der Vorbereitung von euren Referaten.
C-Quiz
BearbeitenWelche Syntaxfehler existieren in diesem Programm?
Bearbeiten#include <stdio.h>
int main (int argc, char** argv){
printf("Hallo Welt\n")
PRINTF("Ich bin %s Jahre alt",10);
}
Was gibt folgendes Programm aus?
Bearbeiten#include <stdio.h>
void changeMe(int* parameter);
void changeString(char * parameter);
int main(int argc, char** argv){
int zahl = 10;
printf("\nUnsere Zahl hat den Wert: %d",zahl);
changeMe(&zahl);
printf("\nUnsere Zahl hat den Wert: %d",zahl);
char zeichenkette[40]="Ich bin eine Zeichenkette";
printf("\nUnsere Zeichenkette hat den Wert: %s",zeichenkette);
changeString(zeichenkette);
printf("\nUnsere Zeichenkette hat den Wert: %s",zeichenkette);
printf("\n");
return 0;
}
void changeMe(int* parameter){
printf("\n Unser Parameter hat den Wert: %d",parameter);
*parameter = 5;
printf("\n Unser Parameter hat den Wert: %d",parameter);
}
void changeString(char * parameter){
printf("\n Unser Parameter hat den Wert: %s",parameter);
printf("\n Bitte gib eine neue Zeichenkette ein: ");
scanf("%s",parameter);
printf("\n Unser Parameter hat den Wert: %s",parameter);
}
Was gibt folgendes Programm aus?
Bearbeiten#include <stdio.h>
void outPointer(int arg);
int main (int argc, char** argv){
char dsa[4] = "dsa\0";
printf("%s\n",dsa);
int* ptr = (int*)&dsa;
printf("%d\n",*ptr);
int number = *ptr;
outPointer(number);
outPointer(number+1);
outPointer(number+256);
outPointer(number+256*256);
return 0;
}
void outPointer(int arg){
char* c_ptr = (char*)&arg;
printf("%s\n",c_ptr);
}
Was gibt folgendes Programm aus?
Bearbeiten#include <stdio.h>
int* f(int* x, int* y);
int main (){
int a = 5;
int b = 7;
int* c = &b;
c = f (&a,c);
printf("%d\n",b);
printf("%d\n",*c);
}
int * f(int* x, int* y){
*x = (*x +5);
y = x;
return y;
}
Emacs-Quiz
Bearbeiten
|
Ubuntu-Quiz
Bearbeiten
|