Programmieren in C Klausur im Sommersemester 2015 Seite 1 von 1

Größe: px
Ab Seite anzeigen:

Download "Programmieren in C Klausur im Sommersemester 2015 Seite 1 von 1"

Transkript

1 Klausur im Sommersemester 2015 Seite 1 von 1 Aufgabe 1 ( 20 % ) Ergänzen Sie das folgende Programm um die Funktion nulldurchgang. Sie soll den Index des Feldelements bestimmen, nach welchem die monoton steigenden Werte im übergebenen Feld das Vorzeichen wechseln. // Vorlageprogramm /////////////////////////////////////////////////////////////// // #include <cstdio> int main( void ) int i; double x[]= -10.0,-9.0,-8.0,-7.0,-6.0,-5.0,-4.0,-3.0,-2.0,-1.0,0.1,1.0,2.0 ; i = nulldurchgang( x, sizeof(x)/sizeof(double) ); if( i >= 0 ) fprintf( stdout, "*** Nulldurchgang nach Element %d\n", i ); fprintf( stdout, "*** Nulldurchgang vor Element 0\n", i ); // ////////////////////////////////////////////////////////////////////////////////// Aufgabe 2 ( 25 % ) Ändern Sie das Programm. Mit main soll es nun über das Terminal eine Feldlänge abfragen, eingeben und den Speicher dafür anfordern. Die neu zu erstellende Funktion werte soll dann die Werte wie in der Vorlage oben in den angeforderten Speicher kopieren, je nach der angeforderten Größe des Speichers aber evtl. nicht alle. Danach soll nulldurchgang unverändert weiter genutzt werden. Programmabsturz oder die Verarbeitung undefinierter Werte sind selbstverständlich verboten. Aufgabe 3 ( 25 % ) Ersetzen Sie die Terminaleingabe aus Aufgabe 2, indem Ihr Programm die Feldlänge aus der Kommandozeile des Programmaufrufs übernimmt, anstatt über den Terminaldialog. Aufgabe 4 ( 30 % ) Das Programm soll nun die Werte des Felds aus einer Datei lesen. Der Name der Datei wird mit dem Aufruf in der Kommandozeile an das Programm übergeben. Die Anzahl Feldelemente soll das Programm aus der Anzahl der Werte bestimmen, die in der Datei vorhanden sind. Schreiben Sie dafür die Funktion gibanzahl, die diese Anzahl an main zurückgibt. Die Standardfunktion int feof( FILE * stream ); hilft dabei: mit Rückgabe TRUE zeigt sie an, wenn im Lesevorgang das Ende der Datei erreicht ist. Schreiben Sie außerdem die Funktion gibwerte, die alle Werte aus der Datei in das vorher von main angeforderte Feld schreibt. Damit Sie Ihre Lösung erproben können, legen Sie mit der Entwicklungsumgebung die Datei werte.txt mit Inhalt wie in der Vorlage oben an: Menü "Datei", "Neue Datei", Kategorie Textdatei, Werte von oben mit Copy-Paste, Leerzeichen anstelle Komma als Trenner zwischen den Zahlen, "Speichern unter " im Debug- Ordner Ihres Projekts.

2 Klausur im Sommersemester 2015 Seite 1 von 3 Aufgabe 1 ( 25 % ) #include <cstdio> int nulldurchgang( double * w, int n ); // P // int main( void ) // s. Vorlage int nulldurchgang( double * w, int n ) int i; for( i=0 ; i<n /* P */ ; ++i ) // P // if( w[i] >= 0.0 ) // P // break; // P // return i-1; // P // Aufgabe 2 ( 40 % ) #define _CRT_SECURE_NO_WARNINGS #include <cstdio> int werte( double * w, int n ); int nulldurchgang( double * w, int n ); int main( void ) int i, n; double * x; // P // fprintf( stdout, "*** Feldlaenge eingeben: N = " ); fflush( stdin ); fscanf( stdin, "%d", & n ); // P // x = new double[n]; // P // if( x == NULL ) // P // fprintf( stdout, "*** Fehler: kein Speicher!\n" ); if( werte( x, n ) < n ) // P // fprintf(stdout,"*** Anzahl W < Feldlaenge N! Verarbeite nur W Werte.\n" ); i = nulldurchgang( x, n ); if( i >= 0 ) fprintf( stdout, "*** Nulldurchgang nach Element %d\n", i ); fprintf( stdout, "*** Nulldurchgang vor Element 0\n", i ); delete x; int werte( double * w, int n ) // P // double y[]=-10.0,-9.0,-8.0,-7.0,-6.0,-5.0,-4.0,-3.0,-2.0,-1.0,0.1,1.0,2.0,3.0 ; if( n > sizeof(y)/sizeof(double) ) // P // n = sizeof(y)/sizeof(double); for( int i=0 ; i<n ; ++i ) // P // w[i] = y[i]; return n; int nulldurchgang( double * w, int n ) //...

3 Klausur im Sommersemester 2015 Seite 2 von 3 Aufgabe 3 ( 25 % ) #define _CRT_SECURE_NO_WARNINGS #include <cstdio> #include <cstdlib> int werte( double * w, int n ); int nulldurchgang( double * w, int n ); int main( int argc, char * argv[] ) // P // int i, n; char * cp; // P // double * x; if( argc!= 2 ) // P // fprintf( stdout, "*** Fehler: Programmaufruf ohne Anzahl Feldelemente - Ende" ); n = strtoul( argv[1], &cp, 10); // P // if( cp == NULL ( *cp!= '\0' && *cp!= '\n' ) ) // P // fprintf( stdout, "*** Fehler: falsche Anzahl im Programmaufruf - Ende" ); x = new double[n]; if( x == NULL ) fprintf( stdout, "*** Fehler: kein Speicher!\n" ); if( werte( x, n ) < n ) fprintf(stdout,"*** Anzahl W < Feldlaenge N! Verarbeite nur W Werte.\n" ); i = nulldurchgang( x, n ); if( i >= 0 ) fprintf( stdout, "*** Nulldurchgang nach Element %d\n", i ); fprintf( stdout, "*** Nulldurchgang vor Element 0\n", i ); delete x; int werte( double * w, int n ) //... int nulldurchgang( double * w, int n ) //...

4 Klausur im Sommersemester 2015 Seite 3 von 3 Aufgabe 4 ( 50 % ) //... int gibanzahl( char * filename ); // P // int gibwerte( char * filename, double * x, int n ); // P // int nulldurchgang( double * w, int n ); int main( int argc, char * argv[] ) int i, n; double * x; if( argc!= 2 ) fprintf( stdout, "*** Fehler: Programmaufruf ohne Eingabedatei - Ende" ); if( ( n = gibanzahl( argv[1] ) ) < 0 ) // P // fprintf( stdout, "*** Fehler: kann Datei %s nicht oeffnen - Ende" ); if( n == 0) fprintf( stdout, "*** Fehler: Eingabedatei ohne Inhalt- Ende" ); x = new double[n]; if( x == NULL ) fprintf( stdout, "*** Fehler: kein Speicher!\n" ); gibwerte( argv[1], x, n ); // P // i = nulldurchgang( x, n ); if( i > 0 ) fprintf( stdout, "*** Nulldurchgang nach Element %d\n", i ); fprintf( stdout, "*** Nulldurchgang vor Element 0\n", i ); delete x; int gibanzahl( char * filename ) FILE * fp; // P // char eingabe[21]; int i, n; if( ( fp = fopen( filename, "r" )) == NULL ) // P // n = -1; for( i=0;!feof(fp) ; ++i ) // P // fscanf( fp, "%s", eingabe ); // P // n = i; fclose( fp ); // P // return n; // P // int gibwerte( char * filename, double * x, int n ) int i; FILE * fp = fopen( filename, "r" ); if( fp == NULL ) return -1; for( i=0; i<n ; ++i ) fscanf( fp, "%lg", x+i ); fclose( fp ); return i; int nulldurchgang( double * w, int n ) /*... */

5 Klausur im WS 2014/15 Seite 1 von 1 Bearbeitungszeit: 90 min Hilfsmittel: Eigene Unterlagen nach Wahl Aufgabe 1 ( 30 % ) ////////////////////////////////////////////////////////////////// #ifdef WIN32 #define _CRT_SECURE_NO_WARNINGS #endif #include <cstdio> #define N 120 int main( void ) pkt punktefeld[n]; // Folge nummerierter Punkte in 2D int n=n; punkte_eingabe( punktefeld, n, stdin ); ////////////////////////////////////////////////////////////////// Vervollständigen Sie dies Vorlageprogramm um folgende Eigenschaften: 1.1 die Datentypdefinition für einen Punkt in 2D mit Nummer und den Koordination x und y. 1.2 den Prototype der Funktion punkte_eingabe. 1.3 die Funktionsdefinition. Sie soll die Punkte beginnend mit 0 in der Reihenfolge ihrer Eingabe nummerieren. Aufgabe 2 ( 40 % ) //... int main( void ) char dateiname[] = "punktefolge.txt"; // Eingabedatei für die Punkte //... Ihr Vorlage- oder das Lösungsprogramm der Aufgabe 1 soll nun die Werte der Punkte aus der Eingabedatei übernehmen und die Punktefolge in einem dynamisch angelegten Feld speichern. Seine Größe oder Länge bestimmt es aus der Anzahl der Werte in der Eingabedatei. Ändern Sie das Programm entsprechend. Aufgabe 3 ( 30 % ) 3.1 Ändern Sie die Vorlage oder Ihre Lösung zur Aufgabe 2 nun so, dass das Programm mit seinem Aufruf den Namen der Eingabedatei aus der Kommandozeile übernimmt. 3.2 Falls das Programm zusätzlich zum Namen der Eingabedatei mit einen weiteren Parameter aufgerufen wird (auf dessen Inhalt es nicht ankommt), soll es eine Kontrollausgabe der eingegebenen Punkte ausführen. Aufgabe 4 ( 30 % ) Um jederzeit stabil zu laufen, muss das Programm dieser Klausur in seinem Ablauf an einigen Stellen Erfolg und Misserfolg (Fehler) unterscheiden, z.b. wenn es die Eingabedatei nicht öffnen kann. Jeden irgendwann eingetretenen Fehler soll das Programm Bit für Bit in einem Statuswort vermerken. Dieses soll am Ende als Argument von return an irgendeinen aufrufenden Prozess übergeben werden: int main( /*... */ ) int status = 0; // hier können sich bei Fehlern im Ablauf einige Bits von status ändern... return status; 4.1 Formulieren Sie einen Header, der für jeden aus Ihrer Sicht zu berücksichtigenden Fehler ein Makro für das entsprechende Bit im Statuswort festlegt. 4.2 Ergänzen Sie Ihr Lösungsprogramm aus Aufgabe 3 oder ersatzweise Aufgabe 2 um die Aktualisierung des Statusworts bei Fehlern. 4.3 Stellen Sie unmittelbar vor dem return am Ende des Programms den Aufruf einer Funktion, die für jedes gesetzte Bit im Statuswort eine entsprechende Meldung auf der Konsole ausgibt.

6 Klausur im WS 2014/15 Seite 1 von 4 Aufgabe 1 ( 30 % ) 1.1 ////////////////////////////////////////////////////////////////// struct pkt int nr; double x, y; ; ////////////////////////////////////////////////////////////////// 1.2 ////////////////////////////////////////////////////////////////// void punkte_eingabe( pkt * p, int n, FILE * eingabe ); ////////////////////////////////////////////////////////////////// 1.3 ////////////////////////////////////////////////////////////////// void punkte_eingabe( pkt * w, int n, FILE * eingabe ) // // for( int i=0; i<n ; ++i ) // w[i].nr = i; fscanf( eingabe, "%lg", & (w+i)->x ); fscanf( eingabe, "%lg", & (w+i)->y ); //////////////////////////////////////////////////////////////////

7 Klausur im WS 2014/15 Seite 2 von 4 Aufgabe 2 ( 40 % ) ////////////////////////////////////////////////////////////////// //... void punkte_eingabe( pkt * p, int n, FILE * eingabe ); int punkte_anzahl( FILE * eingabe ); //... int main( void ) char dateiname[] = "punktefolge.txt"; // Eingabedatei für die Punkte //... FILE * input; // if( ( input = fopen( dateiname, "r" ) )!= NULL ) n = punkte_anzahl( input ); if( ( punktefeld = new pkt[n] )!= NULL ) punkte_eingabe( punktefeld, n, input ); fclose( input ); ////////////////////////////////////////////////////////////////// int punkte_anzahl( FILE * eingabe ) // // int zaehler = 0; char buffer1[61], buffer2[61]; while (! feof( eingabe ) ) if( fscanf( eingabe, "%s %s", buffer1, buffer2 ) == 2 ) ++zaehler; rewind( eingabe ); return zaehler; // // ////////////////////////////////////////////////////////////////// void punkte_eingabe( pkt * w, int n, FILE * eingabe ) // // // wie bei Aufgabe 1.2 //////////////////////////////////////////////////////////////////

8 Klausur im WS 2014/15 Seite 3 von 4 Aufgabe 3 ( 30 % ) 3.1 ////////////////////////////////////////////////////////////////// int main( int argc, char * argv[] ) pkt * punktefeld; int n; FILE * input; // if( argc == 2 ) if( ( input = fopen( argv[1], "r" ) )!= NULL ) // wie A 2 ////////////////////////////////////////////////////////////////// 3.2 ////////////////////////////////////////////////////////////////// //... //... if( argc == 2 argc == 3 ) // anstelle if( argc == 2 ) in 3.1 //... wie A 3.1 if( argc == 3 ) for( int i=0 ; i<n ; ++i ) fprintf( stdout, "punkt=%d x=%lg y=%lg\n", punktefeld[i].nr, punktefeld[i].x, punktefeld[i].y ); //... //////////////////////////////////////////////////////////////////

9 Klausur im WS 2014/15 Seite 4 von 4 Aufgabe 4 ( 30 % ) 4.1 ////////////////////////////////////////////////////////////////// #define ERR_PROGARG 0 // falscher Programmaufruf #define ERR_NOFILE 1 // keine Eingabedatei #define ERR_NOVAL 2 // keine Daten in der Eingabedatei #define ERR_NOMEM 3 // kein Speicher für die Eingabedaten ////////////////////////////////////////////////////////////////// 4.2 ////////////////////////////////////////////////////////////////// //... if( ( input = fopen( argv[1], "r" ) )!= NULL ) if( ( n = punkte_anzahl( input ) ) > 0 ) if( ( punktefeld = new pkt[n] )!= NULL ) //... wie 3.1, 3.2 status = 1<<ERR_NOMEM; status = 1<<ERR_NOVAL; fclose( input ); status = 1<<ERR_NOFILE; status = 1<<ERR_PROGARG; ////////////////////////////////////////////////////////////////// 4.3 //... punkte_err( status ); //... void punkte_err( int flags ) if( flags & 1<<ERR_PROGARG ) fprintf(stdout, "*** Fehler: kein Programmargument\n"); if( flags & 1<<ERR_NOFILE ) fprintf(stdout, "*** Fehler: keine Eingabedatei\n"); if( flags & 1<<ERR_NOVAL ) fprintf(stdout, "*** Fehler: kein Eingabewerte\n"); if( flags & 1<<ERR_NOMEM ) fprintf(stdout, "*** Fehler: kein Speicher\n"); //////////////////////////////////////////////////////////////////

10 Klausur im Sommersemester 2014 Seite 1 von 1 Die Software zur Steuerung einer Aufzugsanlage soll in C entwickelt werden. Ein Anfang ist schon gemacht: struct aufzug struct stockwerk int ; stw; anzahl_stw, stockwerk_soll, stockwerk_ist, aktion; int main( void ) aufzug lift1; //... Aufgabe 1 ( 20 % ) Ergänzen Sie den Header um die Datentypdefinition für struct stockwerk, in der die Stockwerknummer, das Statuswort (16 Bit ohne Vorzeichen) und das von hier angeforderte Zielstockwerk der Aufzugskabine enthalten sind. Aufgabe 2 ( 20 % ) Mit dem obigen Typ aufzug gibt es nur ein Stockwerk pro Aufzug. Verändern Sie die Typdefinition so, dass eine sinnvolle Anzahl Stockwerke möglich ist: 2.1 zur Laufzeit konstant 2.2 zur Laufzeit variabel. Aufgabe 3 ( 20 % ) 3.1 Formulieren Sie den Code zur Initialisierung eines Objekts des Typs aufzug in der Funktion aufzug aufzug_init( int anzahl_stockwerke ); 3.2 Ergänzen Sie main um den Aufruf von aufzug_init. Aufgabe 4 ( 20 % ) Das Programm soll die Anzahl der Stockwerke aus seiner Kommandozeile übernehmen. Ergänzen Sie dazu main. Aufgabe 5 ( 20 % ) Nach erfolgreichem Hochlauf soll main in eine Endlosschleife eintreten und darin zyklisch zwei hier nicht näher betrachtete Funktionen aufrufen: void aufzug_status( struct aufzug * lift ); void aufzug_aktion( struct aufzug * lift ); sowie die Windows-Funktion void Sleep( unsigned long milliseconds ); // Prototype in <Windows.h> Ergänzen Sie das Programm entsprechend, mit Sleep - Zeit Definieren Sie für beide aufzug_... - Funktionen je einen leeren Rumpf ;, damit die Erstellung des Programms formal möglich ist. Aufgabe 6 ( 25 % ) Bei Rückkehr aus aufzug_status enthält das Objekt lift u.a. auch die aktuellen Statusworte aller Stockwerke. Auf Bit Nummer 9 im Statuswort jedes Stockwerks liegt das Flag "Aufzug ist in diesem Stockwerk angekommen". Formulieren Sie eine Funktion, die darauf aufbauend die Angabe zurückgibt, in welchem Stockwerk der Aufzug gerade angekommen ist, und deren Aufruf im Hauptprogrammzyklus.

11 Klausur im Sommersemester 2014 Seite 1 von 3 Aufgabe 1 ( 20 % ) typedef unsigned short int UWORD; struct stockwerk int nummer; UWORD flags; int stockwerk_soll; ; // vor Definition aufzug Aufgabe 2 ( 20 % ) 2.1 const int anzahl = 3; struct aufzug struct stockwerk int ; 2.2 struct aufzug struct stockwerk int ; stw[anzahl]; anzahl_stw, stockwerk_soll, stockwerk_ist, aktion; * stw; anzahl_stw, stockwerk_soll, stockwerk_ist, aktion; Aufgabe 3 ( 20 % ) 3.1 aufzug aufzug_init( int anzahl_stockwerke ) aufzug lift; lift.stw = new stockwerk[anzahl_stockwerke]; if( lift.stw == NULL ) lift.anzahl_stw = 0; lift.anzahl_stw = anzahl_stockwerke; for( int i=0 ; i<anzahl_stockwerke ; ++i ) lift.stw[i].nummer = i; lift.stw[i].flags = (UWORD)0x0; return lift; 3.2 aufzug aufzug_init( int anzahl_stockwerke ); int main( void ) aufzug lift1; int n=anzahl; lift1 = aufzug_init( n ); //...

12 Klausur im Sommersemester 2014 Seite 2 von 3 Aufgabe 4 ( 20 % ) int main( int argc, char * argv[] ) struct aufzug lift1; int n; char * p; if( argc!= 2 ) fprintf( stdout, "*** Fehler: Anzahl Stockwerke fehlt\n" ); n = strtoul( argv[1], & p, 10 ); if( *p!= '\0' ) fprintf( stdout, "*** Fehler: Anzahl Stockwerke ist keine ganze Zahl\n" ); if( n <= 0 ) fprintf( stdout, "*** Fehler: Anzahl Stockwerke ist ungueltig\n" ); lift1 = aufzug_init( lift1, n ); //... Aufgabe 5 ( 20 % ) void aufzug_status( aufzug * lift ); void aufzug_aktion( aufzug * lift ); int main( int argc, char * argv[] ) struct aufzug lift1; int n; char * p; if( argc!= 2 ) fprintf( stdout, "*** Fehler: Anzahl Stockwerke fehlt\n" ); n = strtoul( argv[1], & p, 10 ); if( *p!= '\0' ) fprintf( stdout, "*** Fehler: Anzahl Stockwerke ist keine ganze Zahl\n" ); if( n <= 0 ) fprintf( stdout, "*** Fehler: Anzahl Stockwerke ist ungueltig\n" ); lift1 = aufzug_init( lift1, n ); do aufzug_status( & lift1 ); aufzug_aktion( & lift1 ); Sleep( 1000 ); while(1);

13 Klausur im Sommersemester 2014 Seite 3 von 3 Aufgabe 6 ( 25 % ) //... int aufzug_angekommen( aufzug lift ); //... int main( int argc, char * argv[] ) //... do aufzug_status( & lift1 ); hier = aufzug_angekommen( lift1 ); aufzug_aktion( & lift1 ); while(1); int aufzug_angekommen( aufzug lift ) for( int i=0 ; lift.anzahl_stw ; ++i ) if( lift.stw[i].flags & (1 << 9) ) return i;

14 Klausur im Wintersemester 2013/14 Seite 1 von 1 Für eine Anwendung sollen Uhrzeitangaben programmiert werden. Ohne Rücksicht auf den vorhandenen Standard <ctime> definieren die Entwickler einen eigenen Datentyp sowie zwei Funktionen für Eingabe und Ausgabe einer Uhrzeit: struct uhrzeit int stunde, minute, sekunde; ; uhrzeit uhrzeiteingabe( FILE * eingabe ); void uhrzeitausgabe( FILE * ausgabe, uhrzeit t ); Aufgabe 1 ( 20% ) Formulieren Sie mit diesem Header, wie die Funktion main die Eingabe einer Zeitangabe von stdin und die Ausgabe an stdout ausführt. Aufgabe 2 ( 20% ) Formulieren Sie auch den Code der beiden Funktionen uhrzeiteingabe und uhrzeitausgabe. Aufgabe 3 ( 20% ) Man gibt einen neuen Prototyp für die Uhrzeit-Eingabefunktion vor: void uhrzeiteingabe( FILE * eingabe, uhrzeit * ta ); Formulieren Sie den Code für main und uhrzeiteingabe entsprechend. Aufgabe 4 ( 30% ) Nun soll das Programm die Uhrzeit mit seinem Aufruf übernehmen, also ohne die Eingabefunktion. Formulieren Sie den Code von main dazu passend. Behandeln Sie den Fall eines unvollständigen oder unkorrekten Programmaufrufs mit der voll parametrischen Funktion uhrzeithelp. Benutzen zur Erzeugung einer ganzen Zahl aus einem String die Standardfunktion unsigned long int strtoul( const char * str, char ** endptr, int base ); die z.b. in der "C-Reference" unter <cstdlib> erklärt ist. Die Zahlenwerte aus dem Kommandozeile müssen eindeutig ganze Zahlen sein und korrekte Werte haben. Formulieren Sie eine Funktion uhrzeitcheck, die entsprechende Überprüfungen durchführt und eine Uhrzeit-Instanz zurückgibt. Mit einem Referenzparameter status informiert die Funktion über den Beendigungsstatus der Überprüfung: ist nach Rückkehr dessen Wert 0, sind Zahlen und Werte OK, ist der Wert -1, gab es irgendwo einen Fehler. Aufgabe 5 ( 20% ) Die Funktion uhrzeitcheck soll nun genauer prüfen, wo Fehler liegen. Mit den gesetzten Bits 0, 1, und 2 soll das Statuswort status anzeigen, dass Stunde, Minute bzw. Sekunde keine echten Zahlen sind. Mit den Bits 3, 4 und 5 soll es anzeigen, dass Stunde, Minute bzw. Sekunde falsche Werte haben. Das aufrufende main soll das Statuswort testen und entsprechend gesetzter Bits Fehlermeldungen an der Konsole ausgeben. Aufgabe 6 ( 20% ) Formulieren Sie main so um, dass die Ausgabe der Uhrzeit immer auch in die Datei uhrzeit.txt geht, anstatt wie bisher nur an die Konsole.

15 Klausur im Wintersemester 2013/14 Seite 1 von 4 Aufgabe 1 ( 20% ) int main( int argc, char * argv[] ) uhrzeit t1; t1 = uhrzeiteingabe( stdin ); uhrzeitausgabe( stdout, t1 ); Aufgabe 2 ( 20% ) uhrzeit uhrzeiteingabe( FILE * eingabe ) uhrzeit t; if( eingabe == stdin ) fprintf( stdout, "Geben Sie die Uhrzeit ein wie folgt:\nstunde Minute Sekunde " ); fflush( eingabe ); fscanf( eingabe, "%d %d %d", & t.stunde, & t.minute, & t.sekunde ); return t; void uhrzeitausgabe( FILE * ausgabe, uhrzeit t ) fprintf(ausgabe,"%d Uhr %d Minuten und %d Sekunden\n",t.stunde,t.minute,t.sekunde); Aufgabe 3 ( 20% ) int main( int argc, char * argv[] ) uhrzeit t1; uhrzeiteingabe( stdin, & t1 ); uhrzeitausgabe( stdout, t1 ); void uhrzeiteingabe( FILE * eingabe, uhrzeit * ta ) uhrzeit t = * ta; if( eingabe == stdin ) fprintf( stdout, "Geben Sie die Uhrzeit ein wie folgt:\nstunde Minute Sekunde " ); fflush( eingabe ); fscanf( eingabe, "%d %d %d", & t.stunde, & t.minute, & t.sekunde ); * ta = t;

16 Klausur im Wintersemester 2013/14 Seite 2 von 4 Aufgabe 4 ( 30% ) void uhrzeithelp( char * programm ); uhrzeit uhrzeitcheck( int anzahl, char ** stringfeld, unsigned short * flags ); int main( int argc, char * argv[] ) uhrzeit t1; unsigned short eingabestatus = 0; if( argc!= 4 ) uhrzeithelp( argv[0] ); t1 = uhrzeitcheck( argc-1, argv, & eingabestatus ); if( eingabestatus ) uhrzeithelp( argv[0] ); uhrzeitausgabe( stdout, t1 ); return eingabestatus; void uhrzeithelp( char * programm ) fprintf( stdout, "*** Rufen Sie das Programm so auf:\n" ); fprintf( stdout, " %s Stunde Minute Sekunde\n", programm ); fprintf( stdout, " mit 0<=Stunde<=23 0<=Minute<=59 0<=Sekunde<=59\n", programm ); uhrzeit uhrzeitcheck( int anzahl, char ** stringfeld, unsigned short * flags ) // hier ist anzahl=argc-1, stringfeld=argv also stringfeld[i]=argv[i] char * p; int i; uhrzeit t; int uhrzeit_buf[3] = 0, 0, 0 ; // Puffer für Stunde, Minute, Sekunde // Werte vorbesetzt wegen break unten int uhrzeit_og[3] = 23, 59, 59 ; // max. Werte zum Vergleich t.stunde=t.minute=t.sekunde=0; // mit return immer definierte Werte zurückgeben for( i=0 ; i<anzahl ; ++i ) // prüft in dieser Anwendung alle argv[i] außer argv[0] uhrzeit_buf[i] = strtoul( stringfeld[i+1], & p, 10 ); if( * p!= '\0' && * p!= '\n' ) // dieser String ist keine Zahl *flags = (unsigned short) -1; // Fehler wegen F Zahlenformat break; // der erste Fehler beendet hier die Überprüfung // dieser String ist eine Zahl if( uhrzeit_buf[i] < 0 uhrzeit_buf[i] > uhrzeit_og[i] ) *flags = (unsigned short) -1; // Fehler wege F Wertebereich break; // der erste Fehler beendet auch hier die Überprüfung // diese Zahl ist OK if( i==0 ) t.stunde = uhrzeit_buf[i]; if( i==1 ) t.minute = uhrzeit_buf[i]; if( i==2 ) t.sekunde = uhrzeit_buf[i]; return t; // * flags!= 0 sagt aus, dass die Werte von t ungültig sind.

17 Klausur im Wintersemester 2013/14 Seite 3 von 4 Aufgabe 5 ( 20% ) void uhrzeithelp( char * programm ); uhrzeit uhrzeitcheck( int anzahl, char ** stringfeld, unsigned short * flags ); #define N_FEHLER 6 const char * fehlermeldung[n_fehler] = " Stunde: keine Zahl", " Minute: keine Zahl", " Sekunde: keine Zahl", " Stunde: ungueltiger Wert", " Minute: ungueltiger Wert", " Sekunde: ungueltiger Wert" ; int main( int argc, char * argv[] ) uhrzeit t1; unsigned short eingabestatus = 0; int i; if( argc!= 4 ) uhrzeithelp( argv[0] ); t1 = uhrzeitcheck( argc-1, argv, & eingabestatus ); if( eingabestatus ) fprintf( stdout, "*** Fehler\n" ); for( i=0 ; i < N_FEHLER ; ++i ) if( eingabestatus & 0x0001<<i ) printf( stdout, "%s\n", fehlermeldung[i] ); uhrzeithelp( argv[0] ); uhrzeitausgabe( stdout, t1 ); return eingabestatus; uhrzeit uhrzeitcheck( int anzahl, char ** stringfeld, unsigned short * flags ) char * p; int i; uhrzeit t; int uhrzeit_buf[3] = 0, 0, 0 ; // Puffer für Stunde, Minute, Sekunde int uhrzeit_og[3] = 23, 59, 59 ; // max. Werte dazu t.stunde=t.minute=t.sekunde=0; // auch bei Fehlern definierte Werte zurückgeben for( i=0 ; i<anzahl ; ++i ) uhrzeit_buf[i] = strtoul( stringfeld[i+1], & p, 10 ); if( * p!= '\0' && * p!= '\n' ) // dieser String ist keine Zahl * flags = * flags (unsigned short) 0x0001 << i ; // Fehler Zahlenformat // dieser String ist eine Zahl if( uhrzeit_buf[i] < 0 uhrzeit_buf[i] > uhrzeit_og[i] ) * flags = * flags (unsigned short) 0x0001 << (i+3) ; // Fehler Wertebereich // diese Zahl hat den richtigen Wert if( i==0 ) t.stunde = uhrzeit_buf[i]; if( i==1 ) t.minute = uhrzeit_buf[i]; if( i==2 ) t.sekunde = uhrzeit_buf[i]; return t; // * flags!= 0 sagt aus, dass die Werte von t ungültig sind

18 Klausur im Wintersemester 2013/14 Seite 4 von 4 Aufgabe 6 ( 20% ) int main( int argc, char * argv[] ) uhrzeit t1; unsigned short eingabestatus = 0; int i; FILE * ausgabefile; if( argc!= 4 ) uhrzeithelp( argv[0] ); t1 = uhrzeitcheck( argc-1, argv, & eingabestatus ); if( eingabestatus ) fprintf( stdout, "*** Fehler\n" ); for( i=0 ; i < N_FEHLER ; ++i ) if(eingabestatus & 0x0001<<i) fprintf( stdout, "%s\n", fehlermeldung[i] ); uhrzeithelp( argv[0] ); uhrzeitausgabe( stdout, t1 ); if( ( ausgabefile = fopen( "uhrzeit.txt", "w" ) ) == NULL ) fprintf( stdout, "*** Fehler beim Oeffnen der Ausgabedatei\n" ); uhrzeitausgabe( ausgabefile, t1 ); fclose( ausgabefile ); return eingabestatus;

19 Klausur im Sommersemester 2013 Seite 1 von 1 // Vorlageprogramm.cpp /////////////////////////////////////////////////////// #ifdef WIN32 // falls Entwicklung für MS-Windows: #define _CRT_SECURE_NO_WARNINGS // vermeide unsinnige Warnungen vor..scanf #endif #include <cstdio> #include <cmath> int main( void ) int messwert, zaehler; double summe, qsumme, stdabweich; fprintf( stdout, "*** Berechnung der Standardabweichung\n" ); zaehler = 0; do fprintf( stdout, "Neuen Messwert eingeben: "); fflush( stdin ); fscanf ( stdin, "%d", & messwert ); if( messwert >= 0 ) /**/ ++zaehler; /**/ summe = summe + messwert; /* F */ /**/ qsumme = qsumme + messwert * messwert; /* F */ /**/ stdabweich = sqrt((qsumme - summe*summe/zaehler)/(zaehler-1)); fprintf( stdout, "Standardabweichung=%lg\n", stdabweich ); while( messwert >= 0 ); ////////////////////////////////////////////////////////////////////////////// Das Vorlageprogramm berechnet mitlaufend die Standardabweichung aller Eingabewerte einer Messgröße aus den Summen der Werte und der Wertequadrate. Aufgabe 1 ( 10 % ) Die mit /* F */ kommentierten Zeilen enthalten ein Problem. Finden, benennen und beseitigen Sie sie. Aufgabe 2 ( 25% ) Formulieren Sie eine Funktion für den Code mit /**/ am Zeilenanfang, und schreiben Sie das übrige Programm entsprechend um. Beseitigen Sie dabei wenn nicht schon erledigt ein weiteres Problem der Vorlage: die Standardabweichung existiert nicht für einen Zähler < 2. Die Ausgabe darf dann auch keinen Wert anzeigen. Aufgabe 3 ( 40% ) Erweitern Sie nun das Programm so, dass es die Standardabweichung für beliebig viele verschiedene Messgrößen berechnet. 3.1 Führen Sie dazu einen strukturierten Datentyp ein. 3.2 Formulieren Sie die Übernahme der Anzahl Messgrößen aus dem Programmaufruf. 3.3 Formulieren Sie die Speicherreservierung für die gewünschte Anzahl von Messgrößen-Objekten. 3.4 Ändern Sie die Funktion aus Aufgabe 2 so, dass sie anstelle bisheriger Parameter und Variablen nur eine Messgrößenobjekt als Wertparameter übernimmt. 3.5 In der Vorlage oben sehen Sie, dass der Prozess bei Empfang eines negativen Messwerts endet. Ändern Sie in dieser Aufgabe den Kontrollfluss des Programms so, dass es in seiner Hauptschleife nur die Messgrößen der noch laufenden Prozesse in der Hauptschleife bearbeitet, und dass die Hauptschleife endet, wenn der letzte Prozess fertig ist. Aufgabe 4 ( 25% ) Ändern Sie Ihre Lösung zu 3.4 so, dass die Funktion nun mit Rückgabe void ein Messgrößen-Objekt als Referenzparameter verarbeitet. Aufgabe 5 ( 25% ) Ergänzen Sie das Programm so, dass es die Rechenergebnisse aller Messgrößen (Standardabweichung, Anzahl Messwerte, Nummer der Messgröße) in einer Ausgabedatei abspeichert. Für jeden zu Ende gehenden Messvorgang soll sofort eine Zeile in die Ausgabedatei geschrieben werden.

20 Klausur im Sommersemester 2013 Seite 1 von 4 Aufgabe 1 ( 10 % ) /*... */ // waren nicht initialisiert: summe = qsumme = 0.0; /* 10 */ do /*... */ while( messwert >= 0 ); /*... */ Aufgabe 2 ( 25% ) /*... */ int b_stdabweich( int mess, double * s ); // 5 // int main (void) int messwert, zaehler; double stdabweich; fprintf( stdout, "*** Berechnung der Standardabweichung\n" ); do fprintf( stdout, "Neuen Messwert eingeben: "); fflush( stdin ); fscanf ( stdin, "%d", & messwert ); if( messwert >= 0 ) if( ( zaehler = b_stdabweich( messwert, & stdabweich ) ) // 5 > 1 ) fprintf( stdout, "Standardabweichung=%lg\n", stdabweich ); while( messwert >= 0 ); // ////////////////////////////////////////////// // int b_stdabweich( int mess, double * s ) static int n=0; static double summe=0, qsumme=0; // 5 ++n; summe = summe + mess; qsumme = qsumme + mess * mess; if( n > 1 ) * s = sqrt((qsumme - summe*summe/n)/(n-1)); // 5 return n; // 5 //////////////////////////////////////////////////////////////////////////////

21 Klausur im Sommersemester 2013 Seite 2 von 4 Aufgabe 3 ( 40% ) 3.1 struct messgroesse int n, mess; double sum, qsum, stdabweich; int id; ; // #include <cstdlib> int main( int argc, char * argv[] ) // 2 int anzahl; char * cp; if( argc!= 2 ) // 2 fprintf( stdout, "***F Aufruf: %s <Anzahl Messgroessen>\n", argv[0] ); // anzahl = (int) strtol( argv[1], & cp, 10 ); // 2 if( * cp!= '\0' ) // 2 fprintf( stdout, "***F Anzahl Messgroessen: keine ganze Zahl.\n" ); /*... */ // struct messgroesse * messzeig = new struct messgroesse[anzahl]; // 7 if( messzeig == NULL ) // 2 fprintf( stdout, "*** F: Speichermangel\n" ); /*... */ delete( messzeig ); 3.4 int main( int argc, char * argv[] ) /*... */ messzeig[i] = c_stdabweich( messzeig[i] ); // 3 if( messzeig[i].n > 1 ) fprintf( stdout, "Standardabweichung=%lg\n", messzeig[i].stdabweich ); /*... */ struct messgroesse c_stdabweich( struct messgroesse m ) // 3 m.sum += m.mess; m.qsum += m.mess * m.mess; // 4 if( ++ m.n > 1) m.stdabweich = sqrt( (m.qsum - m.sum*m.sum/m.n)/(m.n-1) ); return m;

22 Klausur im Sommersemester 2013 Seite 3 von int main( int argc, char * argv[] ) /*... */ unsigned long aktiv = 0; /*... */ for( i=0 ; i<anzahl ; ++i ) /* Initialisierung... */ aktiv = ( 1 << i ); // 3 //... do for( i=0 ; i<anzahl ; ++i ) if( (1<<i) & aktiv ) // 2 fprintf( stdout, "Neuen Messwert Groesse %d eingeben: ", i); fflush( stdin ); fscanf ( stdin, "%d", & messzeig[i].mess ); if( messzeig[i].mess < 0 ) aktiv &= ~( 1 << i ); // 3 messzeig[i] = c_stdabweich( messzeig[i] ); if( messzeig[i].n > 1 ) fprintf( stdout, "Standardabweichung=%lg\n", messzeig[i].stdabweich ); while( aktiv ); // 2 /*... */

23 Klausur im Sommersemester 2013 Seite 4 von 4 Aufgabe 4 ( 25% ) void d_stdabweich( struct messgroesse * m ); // 5 int main( int argc, char * argv[] ) /*... */ d_stdabweich( messzeig+i ); // 5 if( messzeig[i].n > 1 ) fprintf( stdout, "Standardabweichung=%lg\n", messzeig[i].stdabweich ); /*... */ void d_stdabweich( struct messgroesse * m ) // 5 ++ m->n; // 10 m->sum += m->mess; m->qsum += m->mess * m->mess; if( ++ m->n > 1) m->stdabweich = sqrt( ( m->qsum - m->sum * m->sum / m->n )/( m->n-1 ) ); Aufgabe 5 ( 25% ) int main( int argc, char * argv[] ) /*... */ FILE * messdatei; // 5 char messdateiname[]= "messsdatei.txt"; /*... */ if( ( messdatei = fopen( messdateiname, "w+" ) ) == NULL ) // 5 fprintf( "*** Fehler beim Oeffnen der Datei %s\n", messdateiname ); // 5 /*... */ do /*... */ if( messzeig[i].mess < 0 ) // jetzt auch speichern fprintf( messdatei, "%d ", messzeig[i].id ); // 5 fprintf( messdatei, "%d %lg\n", messzeig[i].n, messzeig[i].stdabweich ); /*... */ /*... */ while( aktiv ); fclose( messdatei ); // 5 /*... */

24 Klausur im Wintersemester 2012/13 Seite 1 von 2 Das folgende Vorlageprogramm soll so weiterentwickelt werden, dass es aus einer gegebenen Folge von Werten das Maximum findet. Um die Werte zu erzeugen, benutzen Sie im Vorlageprogramm u:\vorlage.cpp die schon fertig programmierte Funktion erzeugewerte.. Die Funktion fktmax steht ebenfalls schon in der Vorlage, ist aber noch nicht fertig programmiert. //... hier der Standardheader und die Funktionsprototypen für // erzeugewerte und fktmax... const int n=25; int main( void ) double werte[n], max; int m; m=erzeugewerte( werte, n ); max = fktmax( werte, n ); //... hier stehen die Funktionsdefinitionen für erzeugewerte und fktmax... Aufgabe 1 ( 30% ) Formulieren Sie den Code der Funktion fktmax fertig, so dass diese das Maximum der Werte in dem übergebenen Feld zurückgibt. Aufgabe 2 ( 30% ) Ändern Sie das Programm so, dass die Anwendung main anstelle des Felds werte[n] zur Laufzeit ("dynamisch") Speicher für die Werte anfordert. Aufgabe 3 ( 30% ) Ändern Sie die Funktion fktmax so, dass diese nur das oder die lokalen Maxima sucht. Zurückgeben soll sie die Anzahl gefundener lokaler Maxima. Aufgabe 4 ( 30% ) Um den Code der Anwendung zu vereinfachen, soll nun die Funktion erzeugewerte nicht nur die Werte erzeugen, sondern auch den Speicher dafür anfordern. Ändern Sie das Programm entsprechend.

25 Klausur im Wintersemester 2012/13 Seite 2 von 2 Vorlageprogramm: #include <cstdlib> double fktmax ( double * werte, int anzahl ); int erzeugewerte( double * werte, int anzahl ); const int n=25; int main( void ) double werte[n], max; int m; m=erzeugewerte( werte, n ); max = fktmax( werte, n ); #include <cmath> #include <cstdlib> #include <cstring> int erzeugewerte( double * werte, int anzahl ) double a[5] = -1.0, 4.0, -3.0, 0.5, 0.001; // Koeff. für Polynom 4. Ordnung double x, x_ug = -3.0, x_delta =.5, y; int i, j; for( j=0 ; j<anzahl ; ++j ) x = x_ug + j*x_delta; y = 0.0; for ( i=0 ; i<=4 ; ++i ) y = y + a[i]*pow(x, (double)i); *(werte+j) = y; return anzahl; double fktmax( double * werte, int anzahl ) double max = * werte; //... return max;

26 Klausur im Wintersemester 2012/13 Seite 1 von 2 Aufgabe 1 ( 30% ) double fktmax( double * werte, int anzahl ) double max, y; int i; for( i=0, max= *(werte) ; i<anzahl ; ++i ) y = *(werte+i); if( y > max ) max = y; return max; Aufgabe 2 ( 30% ) #include <cmath> #include <cstdlib> #include <cstring> double fktmax ( double * werte, int anzahl ); int erzeugewerte( double * werte, int anzahl ); const int n=25; int main( void ) double * werte, max; int m; if( ( werte = new double[n] ) == NULL ) return -1; // Fehler m=erzeugewerte( werte, n ); max = fktmax( werte, n ); Aufgabe 3 ( 30% ) Ändern Sie die Funktion fktmax so, dass diese nur das oder die lokalen Maxima sucht. Zurückgeben soll sie die Anzahl gefundener lokaler Maxima. //... int fktrelmax ( double * werte, int anzahl ); //... int fktrelmax( double * werte, int anzahl ) double y; int i, gefunden; for( i=1, gefunden = 0; i<anzahl-1 ; ++i ) y = *(werte+i); if( *(werte+i-1) < y && *(werte+i+1) < y ) ++gefunden; return gefunden;

27 Klausur im Wintersemester 2012/13 Seite 2 von 2 Aufgabe 4 ( 30% ) //... int erzeugewerte( double ** werte, int anzahl ); //... int main( void ) double * werte; int m, gefunden; m=erzeugewerte( & werte, n ); if( m > 2 ) gefunden = fktrelmax( werte, n ); int erzeugewerte( double ** werte, int anzahl ) double a[5] = -1.0, 4.0, -3.0, 0.5, 0.001; // Koeff. für Polynom 4. Ordnung double x, x_ug = -3.0, x_delta =.5, y; int i, j; if( ( * werte = new double[anzahl] ) == NULL ) anzahl = 0; for( j=0 ; j<anzahl ; ++j ) x = x_ug + j*x_delta; y = 0.0; for ( i=0 ; i<=4 ; ++i ) y = y + a[i]*pow(x, (double)i); *(*werte+j) = y; return anzahl;

28 Klausur im Sommersemester 2012 Seite 1 von 2 Benutzername.. Name, Matrikelnummer... #include "RCHeader.h" #define ANZAHL 16 int main( int argc, char * argv[] ) FILE * fp; struct rc rc; if( argc!= 2 ) fprintf( stdout, "*** Fehler im Aufruf: keine RC-Parameterdatei angegeben\n" ); fp = fopen( argv[1], "r" ); if( fp == NULL ) exit( EXIT_FAILURE ); fscanf(fp,"%lg %lg %lg %lg %lg", &rc.rc, &rc.d, &rc.us, &rc.uc0, &rc.udelta); fclose( fp ); fp = fopen( argv[1], "a" ); if( fp == NULL ) exit( EXIT_FAILURE ); rc.maxspalten = 50; // a rc.maxwert = rc.us; // a rc.massstab = rc.maxspalten / rc.maxwert; // a rc.zeit = 0.0L; // a do rc.uc = rc.uc0 + rc.us * ( 1 - exp ( - rc.zeit/rc.rc ) ); rc.zeit = rc.zeit + rc.rc/rc.d; rc_ausgabe( fp, rc ); while ( rc.us - rc.uc > rc.udelta ); fclose( fp ); Das Programm oben liest die Kenndaten des RC-Glieds aus einer Datei und schreibt dann den Ablauf der Aufladung des Kondensators in dieselbe Datei hinter die Kenndaten. Eine Datei mit Kenndaten finden Sie ebenso wie die Datei mit der Funktion rc_ausgabe auf dem Info- Laufwerk zu dieser Klausur. Aufgabe 1 ( 20% ) Formulieren Sie den Header zum obigen Programm. Aufgabe 2 ( 30% ) Lagern Sie den mit // a kommentierten Code in eine Funktion aus. Aufgabe 3 ( 30% ) Das Programm soll nun für bis zu 16 verschiedene RC-Glieder ablaufen. Die Namen der Parameterdateien sollen wie die eine Parameterdatei bisher beim Aufruf an das Programm übergeben werden. Ändern Sie das Programm entsprechend. Falls Sie evtl. das Programm testen, begnügen Sie sich mit 2 RC-Gliedern. Aufgabe 4 ( 20% ) Das Programm soll ein Statuswort führen, in dem es für jedes erfolgreich behandelte RC-Glied eine logische 1 einträgt. Stelle 0 ist für das RC-Glied entsprechend argv[1] vorgesehen, usw. Aufgabe 5 (Zusatzaufgabe) Es soll möglich sein, beliebig viele RC-Glieder mit dem Programm zu behandeln. Formulieren Sie das Programm entsprechend um. Lassen Sie bei Ihrer Lösung die Eigenschaft aus Aufgabe 4 weg.

29 Klausur im Sommersemester 2012 Seite 2 von 2 Benutzername.. Name, Matrikelnummer Kenndaten in der Datei rc1.txt // Programmcode rc_ausgabe #include "RCHeader.h" void rc_ausgabe( FILE * fp_aus, struct rc rc_aus ) char ausgabe[81] = ""; rc_aus.np = (int)(rc_aus.massstab * rc_aus.uc); fprintf( fp_aus, "\nt=%-10.3lf U=%-10.6lf ", rc_aus.zeit, rc_aus.uc); for ( rc_aus.k=0 ; rc_aus.k < rc_aus.np ; rc_aus.k++ ) strcat( ausgabe, "." ); fprintf( fp_aus, "%s", ausgabe );...

30 Klausur im Sommersemester 2012 Seite 1 von 3 Aufgabe 1 ( 20% ) #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <cfloat> // struct rc double double int int ; RC, D, Us, Uc0, Zeit, Uc, Udelta; maxwert, massstab; k, maxspalten; np; // Anzahl Spalten in der Ausgabe für Uc void rc_ausgabe( FILE * fpaus, struct rc rcaus ); void rc_init( struct rc * rc_in ); Aufgabe 2 ( 30% ) void rc_init( struct rc * rc_in ) rc_in->maxspalten = 50; rc_in->maxwert = rc_in->us; rc_in->massstab = rc_in->maxspalten / rc_in->maxwert; rc_in->zeit = 0.0L; Aufgabe 3 ( 30% ) #include "RCHeader.h" void rc_init( struct rc * rc_in ); const int anzahl = 16; void main( int argc, char * argv[] ) int i; FILE * fpfeld[ anzahl ]; struct rc rcfeld[ anzahl ]; if( argc-1!= anzahl ) fprintf(stdout,"*** Fehler: Anzahl Dateien im Programmaufruf ist nicht 16!\n"); for( i=0 ; i<argc-1 ; ++i ) fpfeld[i] = fopen( argv[i+1], "r" ); if( fpfeld[i] == NULL ) exit( EXIT_FAILURE ); fscanf( fpfeld[i],"%lg %lg", & rcfeld[i].rc, & rcfeld[i].d ); fscanf( fpfeld[i],"%lg %lg", & rcfeld[i].us, & rcfeld[i].uc0 ); fscanf( fpfeld[i],"%lg", & rcfeld[i].udelta); fclose( fpfeld[i] ); fpfeld[i] = fopen( argv[i+1], "a" ); if( fpfeld[i] == NULL ) exit( EXIT_FAILURE );

31 Klausur im Sommersemester 2012 Seite 2 von 3 void rc_init( struct rc * rc_in ) // wie in Aufgabe 2 formuliert rc_init( & rcfeld[i] ); do rcfeld[i].uc = rcfeld[i].uc0 + rcfeld[i].us * ( 1 - exp(- rcfeld[i].zeit/rcfeld[i].rc ) ); rcfeld[i].zeit = rcfeld[i].zeit + rcfeld[i].rc / rcfeld[i].d; rc_ausgabe( fpfeld[i], rcfeld[i] ); while (rcfeld[i].us - rcfeld[i].uc > rcfeld[i].udelta ); fclose( fpfeld[i] ); Aufgabe 4 ( 20% ) Das Programm soll ein Statuswort führen, in dem es für jedes erfolgreich behandelte RC-Glied eine logische 1 einträgt. Stelle 0 ist für das RC-Glied entsprechend argv[1] vorgesehen, usw. #include "RCHeader.h" void rc_init( struct rc * rc_in ); const int anzahl = 16; void main( int argc, char * argv[] ) int i; FILE * fpfeld[ anzahl ]; struct rc rcfeld[ anzahl ]; unsigned short status = 0x0000; if( argc-1!= anzahl ) fprintf( stdout, "*** Fehler: Anzahl Dateien im Programmaufruf ist nicht 16!\n" ); for( i=0 ; i<argc-1 ; ++i ) fpfeld[i] = fopen( argv[i+1], "r" ); if( fpfeld[i] == NULL ) exit( EXIT_FAILURE ); fscanf( fpfeld[i],"%lg %lg %lg %lg %lg", & rcfeld[i].rc, & rcfeld[i].d, & rcfeld[i].us, & rcfeld[i].uc0, & rcfeld[i].udelta); fclose( fpfeld[i] ); fpfeld[i] = fopen( argv[i+1], "a" ); if( fpfeld[i] == NULL ) exit( EXIT_FAILURE ); rc_init( & rcfeld[i] ); do rcfeld[i].uc = rcfeld[i].uc0 + rcfeld[i].us * ( 1 - exp ( - rcfeld[i].zeit/rcfeld[i].rc ) ); rcfeld[i].zeit = rcfeld[i].zeit + rcfeld[i].rc / rcfeld[i].d; rc_ausgabe( fpfeld[i], rcfeld[i] ); while (rcfeld[i].us - rcfeld[i].uc > rcfeld[i].udelta ); fclose( fpfeld[i] ); status = 0x0001 << i;

32 Klausur im Sommersemester 2012 Seite 3 von 3 void rc_init( struct rc * rc_in ) // wie in Aufgabe 2 formuliert Aufgabe 5 (Zusatzaufgabe) #include "RCHeader.h" void rc_init( struct rc * rc_in ); void main( int argc, char * argv[] ) int i; FILE ** fpfeld = NULL; struct rc * rcfeld = NULL; fpfeld = ( FILE ** ) malloc( sizeof(file *) * (argc-1) ); rcfeld = ( struct rc * ) malloc( sizeof(struct rc) * (argc-1) ); if( fpfeld==null rcfeld==null ) exit( EXIT_FAILURE ); for( i=0 ; i<argc-1 ; ++i ) fpfeld[i] = fopen( argv[i+1], "r" ); if( fpfeld[i] == NULL ) exit( EXIT_FAILURE ); fscanf( *(fpfeld+i), "%lg %lg %lg %lg %lg", &(rcfeld+i)->rc, &(rcfeld+i)->d, &(rcfeld+i)->us, &(rcfeld+i)->uc0, &(rcfeld+i)->udelta); fclose( *(fpfeld+i) ); fpfeld[i] = fopen( argv[i+1], "a" ); if( fpfeld[i] == NULL ) exit( EXIT_FAILURE ); rc_init( & rcfeld[i] ); do (rcfeld+i)->uc = rcfeld[i].uc0 + rcfeld[i].us * ( 1 - exp ( - rcfeld[i].zeit/rcfeld[i].rc ) ); (rcfeld+i)->zeit = (rcfeld+i)->zeit + (rcfeld+i)->rc/(rcfeld+i)->d; rc_ausgabe( fpfeld[i], *(rcfeld+i) ); while ((rcfeld+i)->us - (rcfeld+i)->uc > (rcfeld+i)->udelta ); fclose( fpfeld[i] );

33 Klausur im Wintersemester 2011/12 Seite 1 von 1 Benutzername.. Name, Matrikelnummer... Die folgende Anwendung bestimmt den räumlichen Abstand zwischen zwei Punkten p1 und p2. Die Koordinaten der Punkte p1 und p2 sind Elemente eines Felds fester Länge N=3 vom Typ double. #include "w11punkt.h" int main( void ) struct punkt p1, p2; double abstand; w11punkteingabe( stdin, & p1 ); w11punkteingabe( stdin, & p2 ); abstand = w11abstand( p1, p2 ); w11punktausgabe( stdout, abstand = w11abstand( p1, p2 ) ); Aufgabe 1 ( 20 % ) Aufgabe 2 ( 20 % ) Formulieren Sie den Code der Headerdatei. Formulieren Sie den Code der Funktion w11abstand. Aufgabe 3 Formulieren die Funktion w11abstand um zur Funktion w11abstandref. ( 20 % ) Diese soll den Abstand als Referenzparameter zurückgeben und keinen Rückgabewert haben. Die Anwendung soll nun w11abstandref aufrufen. Formulieren Sie um, was dazu nötig ist. Aufgabe 4 Erweitern Sie die Anwendung so, dass sie die verkettete Länge einer Folge von mehr als ( 20 % ) 2 Punkten berechnet. Die Anzahl der Punkte bestimmt der Anwender beim Aufruf über das Argument der Funktion main. Aufgabe 5 Die Anwendung main in Aufgabe 4 soll nun bei ihrem Ende ein Statuswort zurückgeben, ( 20 % ) das evtl. mögliche Fehler anzeigt. Definieren Sie für jeden möglichen Fehler im Ablauf der Anwendung je ein Flag, das bei seinem Eintreten vor Programmende im Statuswort gesetzt wird. Zusatzaufgabe ( 20 % ): Aufgabe 6 Offenbar kann ein Anwender die Datenquelle für die Eingabe der Punkte wählen, ebenso das Ziel für die Ausgabe des Abstands. In der Vorlage oben benutzt die Anwendung stdin bzw. stdout. Formulieren Sie eine Anwendung, die den Namen der Ein- und Ausgabedatei aus dem Argument der Funktion main übernimmt. Falls diese im Argument fehlen, soll die Anwendung annehmen, dass Ein- bzw. Ausgabe über stdin bzw. stdout gehen.

34 Klausur im Wintersemester 2011/12 Seite 1 von 4 Aufgabe 1 #include <cstdio> struct punkt static const int n = 3; double p[n]; ; double w11abstand ( struct punkt p1, struct punkt p2 ); double w11eingabe ( FILE * eingabe, struct punkt * p ); Aufgabe 2 #include <cmath> #include "Aufgabe1_w11punkt.h" double w11abstand( struct punkt p1, struct punkt p2 ) int i; double qabstand = 0.0; for( i=0 ; i<p1.n ; ++i ) qabstand += (p1.p[i]-p2.p[i])*(p1.p[i]-p2.p[i]); return sqrt( qabstand ); Aufgabe 3 #include <cmath> #include <cstdio> #include "Aufgabe3_w11punkt.h" // geänderter Prototyp w11punktausgabe void w11abstandref( struct punkt p1, struct punkt p2, double * abstand ) int i; double qabstand = 0.0; for( i=0 ; i < p1.n ; ++i ) qabstand += (p1.p[i]-p2.p[i])*(p1.p[i]-p2.p[i]); * abstand = sqrt( qabstand ); // ///////////////////////////////////////////////////////////////// // #include <cstdlib> #include "Aufgabe3_w11punkt.h" // geänderter Prototyp w11punktausgabe int main( void ) struct punkt p1, p2; double abstand; w11punkteingabe( stdin, & p1 ); w11punkteingabe( stdin, & p2 ); w11abstandref( p1, p2, & abstand ); w11punktausgabe( stdout, abstand );

35 Klausur im Wintersemester 2011/12 Seite 2 von 4 Aufgabe 4 #include "Aufgabe3_w11punkt.h" int main( int argc, char * argv[] ) struct punkt * pkt; int laenge, i; double kette, abstand; char * f; if( argc == 2 ) laenge = strtoul( argv[1], & f, 10 ); for( i=0 ; i<laenge ; ++i ) w11punkteingabe( stdin, pkt+i ); for( i=1, kette = 0.0 ; i < laenge ; ++i ) w11abstandrefk( pkt+i-1, pkt+i, & abstand ); kette += abstand; w11punktausgabe( stdout, kette ); Aufgabe 5 #include "Aufgabe3_w11punkt.h" int main( int argc, char * argv[] ) struct punkt * pkt; int laenge, i; double kette, abstand; char * f; if( argc!= 2 ) return 1<<0; // Falsche Anzahl Parameter im Programmaufruf laenge = strtoul( argv[1], & f, 10 ); if( f == NULL ) return 1<<1; // leeres Wort als Länge im Programmaufruf if( *f!= '\0') return 1<<2; // keine Zahl als Länge im Programmaufruf if( ( pkt = new struct punkt[laenge] ) == NULL ) return 1<<3; // kein Speicher für die Anzahl Punkte for( i=0 ; i<laenge ; ++i ) w11punkteingabe( stdin, pkt+i );

36 Klausur im Wintersemester 2011/12 Seite 3 von 4 for( i=1, kette = 0.0 ; i < laenge ; ++i ) w11abstandrefk( pkt+i-1, pkt+i, & abstand ); kette += abstand; w11punktausgabe( stdout, kette ); // hier ist alles OK Aufgabe 6 #include "Aufgabe4_w11punkt.h" int main( int argc, char * argv[] ) struct punkt * pkt; int laenge, i; double kette, abstand; char * f; FILE * ein, * aus; int errorcode; if( argc < 4 ) ein = stdin; aus = stdout; if( argc > 4 ) errorcode = 1<<0; // Falsche Anzahl Parameter im Programmaufruf ein = fopen( argv[2], "r" ); aus = fopen( argv[3], "w" ); if( ein==null aus==null ) errorcode = 1<<4; S// Ein- oder Ausgabe nicht verfügbar laenge = strtoul( argv[1], & f, 10 ); if( f == NULL ) errorcode = 1<<1; // leeres Wort als Länge im Programmaufruf if( *f!= '\0') errorcode = 1<<2; // keine Zahl als Länge im Programmaufruf if((pkt = new struct punkt[laenge])== NULL) errorcode = 1<<3; // kein Speicher für die Anzahl Punkte for( i=0 ; i<laenge ; ++i ) w11punkteingabe( ein, pkt+i );

37 Klausur im Wintersemester 2011/12 Seite 4 von 4 return errorcode; for(i=1,kette=0.0 ; i<laenge ; ++i) w11abstandrefk( pkt+i-1, pkt+i, & abstand ); kette += abstand; w11punktausgabe( aus, abstand ); errorcode = 0; // hier ist alles OK

38 Klausur im Sommersemester 2011 Seite 1 von 1 Benutzername.. Name, Matrikelnummer... In einem Leitsystem wird eine Funktion bereich benötigt, mit welcher der aktuelle Wert einer beliebigen Kenngröße auf die Einhaltung eines anwenderdefinierten Wertebereichs geprüft werden kann. Man unterscheidet den Normalbereich, den Warnbereich und den Alarmbereich. Normal- und Warnbereich haben je Größe eine benutzerdefinierte Unter- und Obergrenze, die der Funktion zusammen mit dem aktuellen Wert der Größe als Parameter übergeben werden. Hat die Größe einen Wert außerhalb des Normalbereichs, soll bereich ein Warnflag setzen. Liegt der Wert außerhalb des Warnbereichs, soll das Alarmflag gesetzt werden. Die aufrufende Anwendung wertet nach Rückkehr aus bereich die Flags aus und behandelt die möglichen Fälle mit entsprechenden Terminalausgaben. Aufgabe 1 Definieren Sie einen strukturierten Datentyp groesse, der alle hier notwendigen Kenndaten einer Größe enthält. Aufgabe 2 Formulieren Sie den C-Prototyp der Funktion bereich ohne Verwendung von Zeigern im Argument, und den C-Code einer Anwendung, die aus der Konsoleneingabe geholte aktuelle Werte drei verschiedener Größen x, y, z mithilfe der Funktion bereich prüft. Aufgabe 3 Formulieren Sie den C-Code der Funktion bereich (die Funktionsdefinition). Aufgabe 4 Ändern Sie die Funktion bereich so ab, dass sie mit Referenzparameter arbeitet und den Rückgabewert für ein Statuswort benutzt. Im Statuswort soll die Funktion mögliche Inkonsistenzen der übergebenen Daten wie folgt darstellen: Bit 0 gesetzt, wenn Bit 1 gesetzt, wenn Bit 2 gesetzt, wenn Warnbereich UG OG Alarmbereich UG > Warnbereich UG Alarmbereich OG < Warnbereich OG Aufgabe 5 Formulieren Sie eine Anwendung, die eine benutzerdefinierte Anzahl Kenngrößen anlegt, für jede Größe mit Aufruf der Funktion void definelimits( struct groesse * g ) die festen Bereichsgrenzen einer Größe bestimmen lässt, mit der Funktion void getvalue( struct groesse * g ) den aktuellen Wert einer Größe aus einem Eingabeinterface holt und danach den Wertebereich mit der Funktion bereich auf dem Stand der Aufgabe 4 überprüft. Achtung: die Funktionen definelimits und getvalue sollen Sie nur korrekt aufrufen. Aufgabe 6 (Zusatzaufgabe > 100%) Formulieren Prototyp und Aufruf von definelimits und getvalue so um, dass beide Funktionen für einen bestimmte Anzahl Kenngrößen nur einmal aufgerufen werden müssen, vorausgesetzt, diese Anzahl ist in einem Feld oder einem dynamischen Speicherbereich angelegt.

39 Klausur im Sommersemester 2011 Seite 1 von 3 Aufgabe 1 20 % struct groesse double wert; double warn_ug, warn_og; double alarm_ug, alarm_og; int warnflag, alarmflag; ; Aufgabe 2 20 % struct groesse bereich( struct groesse g ); int main( void ) struct groesse x, y, z; struct groesse feld[3]; // nicht gefordert, vereinfacht die Verarbeitung char kenn[] = 'x', 'y', 'z'; // nicht gefordert int i; printf( "Geben Sie bitte den jeweils aktuellen Wert "); printf( "der Groessen x, y und z ein: "); fflush(stdin); scanf( "%lg %lg %lg", & x.wert, & y.wert, & z.wert ); feld[0] = x = bereich( x ); feld[1] = y = bereich( y ); feld[2] = z = bereich( z ); for( i=0 ; i<3 ; ++i ) if( feld[i].alarmflag ) printf( "*** Groesse %c liegt im Alarmbereich!\n", kenn[i] ); if( feld[i].warnflag ) printf( "*** Groesse %c liegt im Warnbereich!\n", kenn[i] ); printf( " Groesse %c liegt im Normalbereich\n", kenn[i] ); Aufgabe 3 20 % struct groesse bereich( struct groesse g ) if( g.wert <= g.alarm_ug g.wert >= g.alarm_og) g.alarmflag = true; g.alarmflag = false; if( g.wert <= warn_ug g.wert >= warn_og ) g.warnflag = true; g.warnflag = false; Aufgabe 4 20 % unsigned short bereich( struct groesse * g ) unsigned short status = (unsigned short) 0; if( g->warn_ug >= g->warn_og ) status = 1 << 0; if( g->alarm_ug > g->warn_ug ) status = 1 << 1; if( g->alarm_og < g->warn_og ) status = 1 << 2; if( g->wert <= g->alarm_ug g->wert >= g->alarm_og )g->alarmflag = true; g->alarmflag = false; if( g->wert <= g->warn_ug g->wert >= g->warn_og ) g->warnflag = true; g->warnflag = false;

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Einführung in die Programmierung (EPR)

Einführung in die Programmierung (EPR) Goethe-Center for Scientific Computing (G-CSC) Goethe-Universität Frankfurt am Main Einführung in die Programmierung (EPR) (Übung, Wintersemester 2014/2015) Dr. S. Reiter, M. Rupp, Dr. A. Vogel, Dr. K.

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten

Mehr

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert

Mehr

Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, 11.15-13.00 Uhr Bearbeitungszeit: 105 Minuten

Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, 11.15-13.00 Uhr Bearbeitungszeit: 105 Minuten Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, 11.15-13.00 Uhr Bearbeitungszeit: 105 Minuten Vorname: Nachname: Matrikelnummer: Legen Sie zu Beginn Ihren Studentenausweis

Mehr

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife Praktikum Ingenieurinformatik Termin 2 Verzweigungen (if-else), printf und scanf, while-schleife 1 1. Import/Export von Eclipse-Projekten 2. Verzweigungen (if-else-anweisung) 3. printf und scanf 4. Übungsaufgaben

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)

Mehr

Delegatesund Ereignisse

Delegatesund Ereignisse Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Name, Vorname Matrikelnummer Probeklausur zur Vorlesung Einführung in die Programmierung WS 2008/09 Dauer: 2 Stunden Hinweise: Schreiben Sie Ihren Namen und Ihre Matrikelnummer auf dieses Deckblatt und

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

Access 2010. Grundlagen für Anwender. Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli 2012. inkl. zusätzlichem Übungsanhang ACC2010-UA

Access 2010. Grundlagen für Anwender. Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli 2012. inkl. zusätzlichem Übungsanhang ACC2010-UA Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli 2012 Access 2010 Grundlagen für Anwender inkl. zusätzlichem Übungsanhang ACC2010-UA 3 Access 2010 - Grundlagen für Anwender 3 Daten in Formularen bearbeiten

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Informatik Repetitorium SS 2009. Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692

Informatik Repetitorium SS 2009. Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692 Informatik Repetitorium SS 2009 Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692 Operatoren und Datentypen Beispiel: Anweisungen Variable int a float b int c a= a % (int) (++b-1/4) Vorher 36 3.5 c=b

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Informatik Grundlagen, WS04, Seminar 13

Informatik Grundlagen, WS04, Seminar 13 Informatik Grundlagen, WS04, Seminar 13 Informatik Informatik Grundlagen, Seminar 13 WS04 1 Was wir heute besprechen Nachbesprechen von Übungsblatt 11 Rekursion Grundprinzipien Übung Besprechung Übungsblatt

Mehr

Ostfalia Hochschule für angewandte Wissenschaften Fakultät Elektrotechnik Prof. Dr.-Ing. M. Haas

Ostfalia Hochschule für angewandte Wissenschaften Fakultät Elektrotechnik Prof. Dr.-Ing. M. Haas Seite 1 von 7 Übungsaufgabe 1 (02.10.2014) In der Vorlesung entstand der Programmcode für ein C-Programm, das die folgende Anforderung erfüllen soll: Entwickeln Sie ein Programm, das fortlaufend neue Werte

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Dokument Lob erstellen

Dokument Lob erstellen Dokument Lob erstellen Vorbemerkung Ein Lob wird immer mit einem Abschlusszeugnis ausgestellt und auch mit diesem Verteilt. Um ein Lob zu dokumentieren müssen folgende Bausteine definiert und eingerichtet

Mehr

S7-Hantierungsbausteine für R355, R6000 und R2700

S7-Hantierungsbausteine für R355, R6000 und R2700 S7-Hantierungsbausteine für R355, R6000 und R2700 1. FB90, Zyklus_R/W Dieser Baustein dient zur zentralen Kommunikation zwischen Anwenderprogramm und dem Modul R355 sowie den Geräten R6000 und R2700 über

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition In den nachfolgenden Schritten finden Sie beschrieben, wie Sie in der Entwicklungsumgebung Microsoft Visual Studio 2010 eine Projektmappe, ein Projekt und einen ersten Quellcode erstellen, diesen kompilieren,

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder Hinweise zur Übung Benötigter Vorlesungsstoff Ab diesem Übungskomplex wird die Kenntnis und praktische Beherrschung der Konzepte

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Fallunterscheidung: if-statement

Fallunterscheidung: if-statement Fallunterscheidung: if-statement A E 1 E 2 V 1 V 2 Syntax: if ( ausdruck ) Semantik: else anweisungsfolge_1 anweisungsfolge_2 1. Der ausdruck wird bewertet 2. Ergibt die Bewertung einen Wert ungleich 0

Mehr

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **

Mehr

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07) C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07) 1. Aufgabe 6 Punkte Geben Sie Definitionen an für: float var; 1 a) eine float-variable var: b) einen Zeiger pvar, der float *pvar = &var; 1 auf die

Mehr

Ingenieurinformatik Diplom-FA (C-Programmierung)

Ingenieurinformatik Diplom-FA (C-Programmierung) Hochschule München, FK 03 WS 2014/15 Ingenieurinformatik Diplom-FA (C-Programmierung) Zulassung geprüft: (Grundlagenteil) Die Prüfung ist nur dann gültig, wenn Sie die erforderliche Zulassungsvoraussetzung

Mehr

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C Übersicht Felder, Rückblick Mehrdimensionale Felder Rückblick Vereinbarung von Feldern: typ name [anzahl]; typ name = {e1, e2, e3,..., en} Die Adressierung von Feldelementen beginnt bei 0 Die korrekte

Mehr

5. Übung: PHP-Grundlagen

5. Übung: PHP-Grundlagen 5.1. Erstes PHP-Programm 1. Schreiben Sie PHP-Programm innerhalb einer Webseite, d.h. innerhalb eines HTML-Dokument. Ihr PHP-Programm soll einen kurzen Text ausgeben und Komentare enthalten. Speichern

Mehr

Projektzeit erfassen. Allgemeines. Projektzeit erfassen - Maske. Erklärung der Tabellenspalten. In Arbeit!

Projektzeit erfassen. Allgemeines. Projektzeit erfassen - Maske. Erklärung der Tabellenspalten. In Arbeit! Projektzeit erfassen Allgemeines In Arbeit! Projektzeit erfassen - Maske Im Folgenden sehen Sie die Projektzeit erfassen - Maske eines Mitarbeiters (Renner Rudi) direkt nach dem Aufruf des Menüpunktes.

Mehr

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken. In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access Die Grundlagen der Datenbanken kurspc15 Inhaltsverzeichnis Access... Fehler! Textmarke nicht

Mehr

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Kontrollstrukturen und Funktionen in C

Kontrollstrukturen und Funktionen in C Kontrollstrukturen und Funktionen in C Lernziele: Vertiefen der Kenntnisse über Operatoren, Kontrollstrukturen und die Verwendung von Funktionen. Aufgabe 1: Quickies: Datentypen in C a) Was sind die elementaren

Mehr

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software Wie erzeugt man ein Fotobuch im Internet bei Schlecker Seite Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software Punkt 12 bis 24: -Wir arbeiten mit der Software 8-16 -Erstellung

Mehr

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Step by Step Softwareverteilung unter Novell. von Christian Bartl Step by Step Softwareverteilung unter Novell von Softwareverteilung unter Novell 1) Starten von einfachen *.EXE-Dateien: Starten sie ConsoleOne Erstellen sie eine eigene Organisationseinheit für ihre Anwendungen

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und

Mehr

Aufklappelemente anlegen

Aufklappelemente anlegen Aufklappelemente anlegen Dieses Dokument beschreibt die grundsätzliche Erstellung der Aufklappelemente in der mittleren und rechten Spalte. Login Melden Sie sich an der jeweiligen Website an, in dem Sie

Mehr

Anzeige von eingescannten Rechnungen

Anzeige von eingescannten Rechnungen Anzeige von eingescannten Rechnungen Wenn Sie sich zu einer Eingangsrechnung die eingescannte Originalrechnung ansehen möchten, wählen Sie als ersten Schritt aus Ihrem Benutzermenü unter dem Kapitel Eingangsrechnung

Mehr

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: 24.09.2014)

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: 24.09.2014) Handbuch NAFI Online-Spezial 1. Auflage (Stand: 24.09.2014) Copyright 2016 by NAFI GmbH Unerlaubte Vervielfältigungen sind untersagt! Inhaltsangabe Einleitung... 3 Kundenauswahl... 3 Kunde hinzufügen...

Mehr

Objektbasierte Entwicklung

Objektbasierte Entwicklung Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit

Mehr

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Informatik Kurs Simulation. Hilfe für den Consideo Modeler Hilfe für den Consideo Modeler Consideo stellt Schulen den Modeler kostenlos zur Verfügung. Wenden Sie sich an: http://consideo-modeler.de/ Der Modeler ist ein Werkzeug, das nicht für schulische Zwecke

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

P&P Software - Adressexport an Outlook 05/29/16 14:44:26 Adressexport an Outlook Wozu? Aus EASY können viele Daten im Excelformat ausgegeben werden. Diese Funktion kann zum Beispiel zum Export von Lieferantenadressen an Outlook genutzt werden. Hinweis Wir können

Mehr

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Prof. Dr. Ulrich Breitschuh Hochschule Anhalt(FH) Fachbereich Informatik Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Hinweis: Die Aufgaben 3, 6 und 8 sind testatpichtige Aufgaben.

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen

Mehr

Dokumentation IBIS Monitor

Dokumentation IBIS Monitor Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt

Mehr

FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam

FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam Aktuelle Fileposition ermitteln long pos; pos=ftell(fp); //aktuelle Bytenummer Filelaenge in Bytes fseek(fp,0,seek_end); pos=ftell(fp); Fileendeerkennung int rc; rc = feof (fp) //!= 0 bei Fileende // ==

Mehr

2. Semester, 2. Prüfung, Lösung

2. Semester, 2. Prüfung, Lösung 2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter

Mehr

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. BEZIEHUNGEN ZWISCHEN TABELLEN 4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 13 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Änderungen im Vertrags-Manager

Änderungen im Vertrags-Manager Änderungen im Vertrags-Manager 2009-01-27 Version 1.0.0.13... 2 2007-08-09 Version 1.0.0.12... 3 2007-07-25 Version 1.0.0.11... 4 2006-11-07 Version 1.0.0.10... 5 2006-09-27 Version 1.0.0.9... 7 2006-06-28

Mehr

Graphic Coding. Klausur. 9. Februar 2007. Kurs A

Graphic Coding. Klausur. 9. Februar 2007. Kurs A Graphic Coding Klausur 9. Februar 2007 Kurs A Name: Matrikelnummer: Hinweise - Es sind keine Hilfsmaterialien erlaubt. (Keine Bücher, Taschenrechner, Handys) - Sie haben zwei Stunden Zeit. - Insgesamt

Mehr

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff Programmieren in C Felder, Schleifen und Fließkommaarithmetik Prof. Dr. Nikolaus Wulff Addition von Zahlen 1 2 3 4 5 #include int main() { int x,y,z,sum; x = 1; y = 2; z = 4; sum = x + y + z;

Mehr

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten bedingten Wahrscheinlichkeit. Mathematik- Unterrichts- Einheiten- Datei e. V. Klasse 9 12 04/2015 Diabetes-Test Infos: www.mued.de Blutspenden werden auf Diabetes untersucht, das mit 8 % in der Bevölkerung verbreitet ist. Dabei werden

Mehr

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt

Mehr

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe

Mehr

WinVetpro im Betriebsmodus Laptop

WinVetpro im Betriebsmodus Laptop WinVetpro im Betriebsmodus Laptop Um Unterwegs Daten auf einem mobilen Gerät mit WinVetpro zu erfassen, ohne den Betrieb in der Praxis während dieser Zeit zu unterbrechen und ohne eine ständige Online

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit, 08:00 09:30 Uhr (90 min) Aufgabenblätter 14 Seiten (einschl. Deckblatt) erreichbare Punktzahl 54 zugelassene

Mehr

Erste Schritte mit Sfirm32 und itan

Erste Schritte mit Sfirm32 und itan Erste Schritte mit Sfirm32 und itan Um Ihnen den Start mit SFirm32 zu erleichtern, haben wir auf den folgenden Seiten die Schritte zum Ausführen von Zahlungen und Abfragen Ihrer Kontoauszüge dargestellt.

Mehr

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

E Mail Versand mit der Schild NRW Formularverwaltung

E Mail Versand mit der Schild NRW Formularverwaltung -Seite 1- E Mail Versand mit der Schild NRW Formularverwaltung Seit der Version 1.12.3.97 der Reportverwaltung ist die Möglichkeit integriert, E Mails direkt, d.h. ohne Umweg über einen externen Mailclient

Mehr

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung: Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang

Mehr

Datenbanken Kapitel 2

Datenbanken Kapitel 2 Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,

Mehr

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten. 1 Einleitung Lernziele automatische Antworten bei Abwesenheit senden Einstellungen für automatische Antworten Lerndauer 4 Minuten Seite 1 von 18 2 Antworten bei Abwesenheit senden» Outlook kann während

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Medea3 Print-Client (m3_print)

Medea3 Print-Client (m3_print) Medea3 Print-Client (m3_print) Installationsanleitung Installationsanleitung m3_print.exe...2 1. Installieren von Ghostskript und Ghostview...2 1. Ghostskript...2 2. Ghostview...3 2. Kopieren des Print-Client-Programms...6

Mehr

Auswahlabfragen mit ACCESS

Auswahlabfragen mit ACCESS Auswahlabfragen mit ACCESS Abfragekriterien und Operatoren Beim Entwerfen von ACCESS-Auswahlabfragen (queries) sind definierte Abfragekriterien bzw. Operatoren zu benutzen. Ein Abfragekriterium ist eine

Mehr

Hochschule München, FK 03 FA SS 2012. Ingenieurinformatik

Hochschule München, FK 03 FA SS 2012. Ingenieurinformatik Hochschule München, FK 03 FA SS 2012 Ingenieurinformatik Zulassung geprüft vom Aufgabensteller: Teil 1/Aufgabe 1: 30 Minuten ohne Unterlagen, Teil 2/Aufgaben 2-4: 60 Minuten, beliebige eigene Unterlagen

Mehr

Installationsleitfaden kabelsafe backup professional unter MS Windows

Installationsleitfaden kabelsafe backup professional unter MS Windows Installationsleitfaden kabelsafe backup professional unter MS Windows Installationsanleitung und Schnelleinstieg kabelsafe backup professional (kabelnet-obm) unter MS Windows Als PDF herunterladen Diese

Mehr

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen. Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen. Klicken Sie auf Neu anlegen, um Ihre neue Angebotseite zu erstellen..

Mehr

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank Die Entscheidung Advoware über VPN direkt auf dem lokalen PC / Netzwerk mit Zugriff auf die Datenbank des zentralen Servers am anderen

Mehr

Stammdatenanlage über den Einrichtungsassistenten

Stammdatenanlage über den Einrichtungsassistenten Stammdatenanlage über den Einrichtungsassistenten Schritt für Schritt zur fertig eingerichteten Hotelverwaltung mit dem Einrichtungsassistenten Bitte bereiten Sie sich, bevor Sie starten, mit der Checkliste

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Microsoft Visual Studio Community 2015

Microsoft Visual Studio Community 2015 Microsoft Visual Studio Community 2015 Visual Studio Community 2015 ist eine kostenlose IDE mit leistungsfähigen Programmier- und Entwicklungswerkzeugen für Windows, ios und Android. Sie ist für einzelne

Mehr

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: thorsten.schumann@more-projects.de Stand: MORE Projects GmbH Einführung Die in More Profile integrierte

Mehr

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Tutorial: Wie erfasse ich einen Termin? In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Neben den allgemeinen Angaben zu einem

Mehr

I.1 Die Parrot Assemblersprache

I.1 Die Parrot Assemblersprache I.1 Die Parrot Assemblersprache Die virtuelle CPU Parrot ermöglicht die Verarbeitung der Parrot Assemblersprache (PASM). Zum Einstieg soll ein erstes Beispiel die Ausführung einer PASM-Datei zeigen. Legen

Mehr

Kurzanleitung zur Bereitstellung von Sachverhalten und Lösungen zum Universitätsrepetitorium auf dem Server unirep.rewi.hu-berlin.

Kurzanleitung zur Bereitstellung von Sachverhalten und Lösungen zum Universitätsrepetitorium auf dem Server unirep.rewi.hu-berlin. Humboldt-Universität zu Berlin Juristische Fakultät Kurzanleitung zur Bereitstellung von Sachverhalten und Lösungen zum Universitätsrepetitorium auf dem Server unirep.rewi.hu-berlin.de Stand: 1. Juni 2010

Mehr

DAS HALLENBUCHUNGSPROGRAMM EBUSY

DAS HALLENBUCHUNGSPROGRAMM EBUSY DAS HALLENBUCHUNGSPROGRAMM EBUSY Das Buchungssystem kann von jedem Ort, jedem Computer mit Internet Anschluss und sogar vom Smartphone erreicht werden. Entweder rufen Sie die Seite direkt über die Internet

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

Access [basics] Gruppierungen in Abfragen. Beispieldatenbank. Abfragen gruppieren. Artikel pro Kategorie zählen

Access [basics] Gruppierungen in Abfragen. Beispieldatenbank. Abfragen gruppieren. Artikel pro Kategorie zählen Abfragen lassen sich längst nicht nur dazu benutzen, die gewünschten Felder oder Datensätze einer oder mehrerer Tabellen darzustellen. Sie können Daten auch nach bestimmten Kriterien zu Gruppen zusammenfassen

Mehr

Übung 9 - Lösungsvorschlag

Übung 9 - Lösungsvorschlag Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe

Mehr

Arge Betriebsinformatik GmbH & Co.KG, CAP News 40, Februar 2013. CAP-News 40

Arge Betriebsinformatik GmbH & Co.KG, CAP News 40, Februar 2013. CAP-News 40 CAP-News 40 CAP-News ist in unrägelmäßigen Abständen erscheinende Information zum Produktkonfigurator CAP/VARIANTS. Hier werden die neuen Befehle, Funktionen und Möglichkeiten beschrieben. In CAP-News

Mehr

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Bedienungsanleitung Anlassteilnehmer (Vereinslisten) Bedienungsanleitung Anlassteilnehmer Dieses Programm ist speziell für Vereine entworfen. Es ist lizenzfrei verwendbar und gratis. Das Programm ist mit Excel 2010 erstellt worden und enthält VBA Programmierungen,

Mehr