Vorlesung Teil 1 - Einführung - Peter Klingebiel - HS Fulda

Werbung
Programmieren in C / C++
Einführung
Hochschule Fulda – FB AI
Wintersemester 2016/17
http://c.rz.hs-fulda.de
Peter Klingebiel, HS Fulda, FB AI
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Zur Vorlesung
• Peter Klingebiel
–
–
–
–
–
–
–
–
Dipl. Ing. Maschinenbau
10/1995 bis 9/2016 Leiter DVZ HS Fulda
Seit 4/2016 FB AI – Lehrkraft für besondere Aufgaben
Raum 43.008 (C008)
Telefon 0661/9640-3024
Sprechstunde: dienstags 12:30 bis 14:00 nach Vereinbarung
http://www.hs-fulda.de/~klingebiel
mailto:[email protected]
• Webseite der Vorlesung
– Folien, Aufgaben, Demoprogramme, Links usw.
– http://c.rz.hs-fulda.de
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
3
Programmieren in C 1
• Programmieren
• in
• C ???
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Programmieren in C 2
• Quelle: Eines Tages - Spiegel Online
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
5
Programmieren in C 3
• Quelle: Eines Tages - Spiegel Onlin
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
6
Programmieren !?!?!?
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Programmieren
• Wikipedia:
http://de.wikipedia.org/wiki/Programmierung
• Definition:
„Programmieren ist eine Tätigkeit, bei der
versucht wird, durch systematischen Einsatz
einer gegebenen Programmiersprache ein
gestelltes Problem zu lösen.“
aus: H. Balzert, Lehrbuch Grundlagen der
Informatik, 1999
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Programm
• Wikipedia:
http://de.wikipedia.org/wiki/Computerprogramm
• Definition:
„Algorithmen, die von einem automatischen
Prozessor abgearbeitet werden, bezeichnet
man als Programme. Ein Programm stellt die
Realisierung eines Algorithmus dar. Im
Gegensatz zu einem Algorithmus ist ein
Programm konkreter und eingeschränkter.“
aus: Balzert, Lehrbuch ...
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Algorithmus
• Wikipedia:
http://de.wikipedia.org/wiki/Algorithmus
• Definition:
„Algorithmus (Plural: Algorithmen),
Problemlösungsbeschreibung, die festlegt,
wie ein Problem gelöst werden soll.“
aus: Balzert, Lehrbuch ...
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Euklidischer Algorithmus 1
• Wikipedia:
http://de.wikipedia.org/wiki/Euklidischer_Algorithmus
• „Wenn CD aber AB nicht misst, und man
nimmt bei AB, CD abwechselnd immer das
kleinere vom größeren weg, dann muss
(schließlich) eine Zahl übrig bleiben, die die
vorangehende misst.“
aus: Euklid, Die Elemente, hrg. v. C. Thaer
• Algorithmus zur Bestimmung des größten
gemeinsamen Teilers (ggT)
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Euklidischer Algorithmus 2
• Alter Algorithmus, iterativ, Pseudocode
euklid(a, b)
wenn a = 0
dann liefere b
sonst
solange b ≠ 0
wenn a > b
dann a = a – b
sonst b = b – a
liefere a
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Euklidischer Algorithmus 3
/*
*
*
*
*
*/
euklid1.c
Euklidischer Algorithmus
Alt, Iteration
klin, Sat Mar 20 20:38:22 2010
#include <stdio.h>
int eu(int a, int b)
{
static int n = 0;
n++;
printf("%3d a=%9d b=%9d\n", n, a, b);
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Euklidischer Algorithmus 4
• Alter Algorithmus, rekursiv, Pseudocode
euklid(a, b)
wenn b = 0
dann liefere a
sonst wenn a = 0
dann liefere b
sonst wenn a > b
dann liefere euclid(a-b, b)
sonst
liefere euklid(a, b-a)
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Euklidischer Algorithmus 5
/*
*
*
*
*
*/
euklid2.c
Euklidischer Algorithmus
Alt, Rekursion
klin, Sat Mar 20 20:38:22 2010
#include <stdio.h>
int eu(int a, int b)
{
static int n = 0;
n++;
printf("%3d a=%9d b=%9d\n", n, a, b);
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Euklidischer Algorithmus 6
• Neuer Algorithmus, iterativ, Pseudocode
euklid(a,
solange
h = a
a = b
b = h
liefere
b)
b ≠ 0
modulo b
a
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Euklidischer Algorithmus 7
/*
*
*
*
*
*/
euklid3.c
Euklidischer Algorithmus
Neu, Iteration
klin, Sat Mar 20 20:38:22 2010
#include <stdio.h>
int eu(int a, int b)
{
static int n = 0;
int h;
while(b != 0) {
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Euklidischer Algorithmus 8
• Neuer Algorithmus, rekursiv, Pseudocode
euklid(a, b)
wenn b = 0
dann liefere a
sonst
liefere euklid(b, a modulo b)
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Euklidischer Algorithmus 9
/*
*
*
*
*
*/
euklid4.c
Euklidischer Algorithmus
Neu, Rekursion
klin, Sat Mar 20 20:38:22 2010
#include <stdio.h>
int eu(int a, int b)
{
static int n = 0;
n++;
printf("%3d a=%9d b=%9d\n", n, a, b);
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Kochrezept 1
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
20
Kochrezept 2
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
21
Montageanleitung
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
22
Kaffee kochen 1
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
23
Kaffee kochen 2
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
24
Kaffee kochen 3
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
25
Temperaturregelung Bügeleisen 1
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
26
Temperaturregelung Bügeleisen 2
• Schematischer Aufbau
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
27
Temperaturregelung Bügeleisen 3
• Wirkungsplan / Regelkreis
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
28
Temperaturregelung Bügeleisen 4
• Temperaturverlauf
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
29
Algorithmus Temperaturregelung ?
?????
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Temperaturregelung in Assembler
;
;
;
;
;
;
;
;
;
;
;
temperaturregelung.asm
Simulation einer einfachen Temperaturregelung,
z.B. bei Bügeleisen. AD- und DA-Wandler werden
über Tastatur und Display simuliert:
Temperatur wird von Tastatur mit '0' .. '9'
gelesen, wobei '5' 100 Grad entspricht.
Temperatur < 100 Grad -> Heizung ein -> '+'
Temperatur > 100 Grad -> Heizung aus -> '-'
klin, 20. März 2010
title
Temperatur_Regelung
;
; AD-Wandler
; Simulation: Temperatur von Tastatur lesen
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Temperaturregelung in C
/*
*
*
*
*/
temperatur.c
Simuliere einfache Temperaturregelung
klin, Fri Mar 19 14:45:15 2010
#include <stdlib.h>
#include <stdio.h>
#define
#define
#define
#define
TMIN
TMAX
TDIF
TEMP
100
120
(TMAX-TMIN)
110
/*
/*
/*
/*
Minimaltemperatur
Maximaltemperatur
Maximale Temperaturdiff
Solltemperatur
/*
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Programmiersprachen 1
• Wikipedia:
http://de.wikipedia.org/wiki/Programmiersprache
• Definition:
„Um Problemlösungen in einem Formalismus
niederschreiben zu können, legt man
Programmiersprachen fest.“
aus: Balzert, Lehrbuch ...
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Programmiersprachen 2
• Eine Programmiersprache ist eine formale
Sprache (im Gegensatz z.B. zur Umgangssprache)
• Programmiersprachen haben ein exakt definiertes Alphabet (i.d.R. Buchstaben, Ziffern
und Sonderzeichen)
• Programmiersprachen haben einen meist
sehr kleinen Wortschatz (C etwa kennt nur
32 Worte!)
• Programmiersprachen haben i.d.R. eine
exakt einzuhaltende Syntax
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Programmiersprachen 3
Problemstellung
Hochsprachen
(z.B. Fortran, Pascal, C, C++, Java, SQL, PHP)
Assemblersprachen
(für reale oder virtuelle Maschine / CPU)
Maschinensprachen
(Bitcode, Bytecode, Microcode)
Hardware / Rechner / CPU
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Programmiersprachen 4
• Skriptsprachen
werden während der Ausführung vom
Sprachinterpreter in Maschinencode
übersetzt.
Beispiele: Shell, Perl, PHP, SQL, Basic
• Compilersprachen
müssen vor der Ausführung von einem
Übersetzersystem (Compiler, Linker) in
Maschinencode übersetzt werden.
Beispiele: Pascal, C, C++, C#, Java
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Programmiersprachen 5
• Paradigmata
–
–
–
–
Imperative Sprachen (Fortran, Pascal, C, Ada)
Deklarative Sprachen (SQL, Lisp)
Objektorientierte Sprachen (Java, C++)
Nebenläufige Sprachen (Ada, Java, Par C)
• Typisierung
– Typenlose Sprachen (JavaScript, PHP)
– Stark typisierte Sprachen (Ada)
– Schwach typisierte Sprachen (C, C++)
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Programmiersprachen 7
• Beispiele Typisierung
$ cat typetest.php
<?php
// typetest.php
$string = "Hallo, Welt!";
$zahl
= 4;
$unsinn1 = $string + $zahl;
$unsinn2 = $string / $zahl;
echo "string=[" . $string . "] zahl=[" . $zahl
echo "unsinn1=[" . $unsinn1 . "] unsinn2=[" . $
?>
$ php typetest.php
• Stammbaum Programmiersprachen (Wikipedia)
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Programmentwicklung 1
• Problem analysieren
Modell entwerfen
Algorithmus entwickeln
• Programm kodieren
• Programm übersetzen
(bis syntaktisch fehlerfrei)
• Programm testen
(bis semantisch fehlerfrei ?)
• Programm produktiv
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
Programmentwicklung 2
• Friedemann Weise: Doppelkaffeetasse (auf youtube)
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
40
Programmentwicklung 3
• Beispiel: Entwicklungsumgebungen für C
– Kommandozeile mit Systemtools
• Unix / Linux / Windows / iOS:
• Editor, Systemcompiler (gcc), Debugger, usw.
• GCC (http://gcc.gnu.org/)
– Integrierte Entwicklungsumgebung (IDE)
•
•
•
•
•
NetBeans (https://netbeans.org/)
z.B. mit Cygwin (http://www.cygwin.com/)
Code::Blocks (http://www.codeblocks.org/)
z.B. mit MinGW (http://www.mingw.org/)
u.v.a.m.
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
41
Mikrokontroller 1
• Beispiel: Arduino Uno
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
42
Mikrokontroller 2
• Beispiel: Arduino Nano
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
43
Mikrokontroller 3
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI
44
Herunterladen