Fragen: Softwareentwicklung 2 (ILV) Übung 1 1.) Was ist Git? (siehe http://de.wikipedia.org/wiki/git ) git clone https://its-git.fh-salzburg.ac.at/eforsthofer.lba/swe2.git 2.) Was sind Zeiger und wie wird mit Zeigern gearbeitet? (siehe C von A Z von Jürgen Wolf, Kapitel 12 Zeiger ) 3.) Wie arbeitet man mit Array von Zeiger und dynamischer Speicherverwaltung? (siehe C von A Z von Jürgen Wolf, Kapitel 14 Dynamische Speicherverwaltung ) 4.) Warum funktioniert das Programm nicht? void swap (int *a, int *b){ int *help; *help= *a; *a= *b; *b= help; } Aufgabenstellungen: (Abgabetermin: Per EMail vor nächster Übungseinheit) 1.) Arbeitsaufgabe Funktion swap Ergänze und Teste das Beispiel aus dem Skriptum Zeiger und Arrays/String Seite 5/25. // swap2.c --- call by reference #include <stdio.h> void swap (.. ); int main(){ int x= 1111; int y= 9999; } printf("\nvor dem Aufruf von swap(): x=%d und y=%d\n", x,y); swap (.. ); printf("\nnach dem Aufruf von swap(): x=%d und y=%d\n", x,y); return 0; void swap (.. ){ int help;.. } SWE1 ITSB-B SS 2015 Seite 1/6
2.) Programm swab void swab(const char *from, char *to, int n); Schreibe eine Funktion swab welches gerade und ungerade Bytes/Zeichen vertauscht. Die Länge des Arrays wird durch n definiert. Die Funktion swab() sollte swap() n/2 mal aufrufen. Diese Funktion könnte benutzt werden um Daten zwischen Maschinen auszutauschen, die verschiedene Anordnungen von nieder- und höherwertigen Bytes haben. Aufrufbeispiel: $./swab Vor dem Aufruf von swab(): string=ab1234 Nach dem Aufruf von swab(): string=ba2143 3.) Schreibe Sie eine Funktion mit dem Namen find_min_max, welche ein Array von Zahlen übergeben bekommt, und die kleinste Zahl und die größte Zahl zurückliefert. 4.) Schreiben Sie eine Funktion mit dem Namen strcatdyn, welches die Zeiger auf zwei Zeichenketten entgegennimmt. Die Funktion soll beide Zeichenketten hintereinander in einem von der Funktion dynamisch angelegten Speicherbereich kopieren und den Zeiger zurückgeben. Im Fehlerfall soll ein Nullzeiger (NULL) zurückgeben werden. Die Verwendung von Stringfunktionen aus der Stringbibliothek (siehe string.h) ist erlaubt. char *strcatdyn(const char *str1, const char *str2); SWE1 ITSB-B SS 2015 Seite 2/6
5.) Schreiben Sie ein Programm mit dem Namen MorseCode, welches Zeichen von stdin einliest und die Signalinformation ( '=' Licht ein / '_' Licht aus) auf stdout ausgibt. Testvorschrift: cat info.txt./morsecode > Mein.MorseCode.Signal Die Datei Mein.MorseCode.Signal wird an Kollegen mit geeigneter Hardware weitergereicht welche die Tests uebernehmen. Infos siehe http://de.wikipedia.org/wiki/morsezeichen Die Morsezeichen, manchmal auch Morsealphabet oder Morsecode genannt, sind ein Verfahren zur Übermittlung von Buchstaben, Zahlen und übrigen Zeichen. Dabei wird ein konstantes Signal ein- und ausgeschaltet. Es besteht aus drei Symbolen: kurzes Signal, langes Signal und Pause. Der Code kann als Tonsignal, als Funksignal, als elektrischer Puls mit einer Morsetaste über eine Telefonleitung, mechanisch oder optisch (etwa mit blinkendem Licht) übertragen werden. http://de.wikipedia.org/wiki/morsezeichen#zeitschema_und_darstellung Der Code verwendet drei Symbole, die Punkt ( ), Strich ( ) und Pause ( ) genannt werden, gesprochen als dit, dah (oder doh) und Schweigen. Die Länge eines Dit bestimmt die Geschwindigkeit, mit der gesendet werden kann, und ist die grundlegende Zeiteinheit. Dazu ein Beispiel: / M O R S E (space) C O D E Genauer gilt Folgendes: Ein Dah ist dreimal so lang wie ein Dit. Die Pause zwischen zwei gesendeten Symbolen ist ein Dit lang. Zwischen Buchstaben in einem Wort wird eine Pause von der Länge eines Dah (oder drei Dits) eingeschoben. Die Länge der Pause zwischen Wörtern entspricht sieben Dits. Für das Beispiel MORSE CODE ergibt sich dann dieses Zeitsignal (das Zeichen = bedeutet Signal an, das Zeichen _ bedeutet Signal aus ): ===_=== ===_===_=== =_===_= =_=_= = ===_=_===_= ===_===_=== == =_=_= = Gesprochen klingt das dann so: dahdah dahdahdah ditdahdit ditditdit dit, dahditdahdit dahdahdah dahditdit dit. SWE1 ITSB-B SS 2015 Seite 3/6
*6.) OpenHardware / Raspberry PI Clone: git clone https://its-git.fh-salzburg.ac.at/eforsthofer.lba/swe_pi.git Date: SS2015 Doit: PI + Funkschalter ----------------- Funksteckdosen via Raspberry Pi über das Terminal, Webinterface oder Siri steuern siehe http://alexbloggt.com/funksteckdosen-raspberry-pi-teil1/ 1. Hardware aufbauen Technische Daten Sender / Transmitter XY-FST: (3 Pins, DATA-VCC-GND von vorne) Betriebsspannung: 3,5-12V DC Reichweite: 20-200m (Abhängig von der Betriebsspannung) Betriebsart: AM Übertragungsrate: 4KB / s Sendeleistung: 10mW Sendefrequenz: 433Mhz Abmessungen: 19 x 19mm Pinbelegung: Data, VCC, Masse (von links nach rechts) Technische Daten Empfänger / Receiver XY-MK-5V (4 Pins ) Betriebsspannung: 5V DC Empfangsfrequenz: 433Mhz Empfindlichkeit: -105dB Abmessungen: 30 x 14mm Sender GND DATA VCC Raspberry Pi GND GPIO17 5V GPIO17 bzw. Pin 11 verwenden siehe http://www.gtkdb.de/index_18_2520.html 2. Software installieren # PI auf neusten Softwarestand bringen sudo apt-get upgrade sudo apt-get update # Git-Client installieren sudo apt-get install git-core # WiringPI installieren git clone git://git.drogon.net/wiringpi cd wiringpi./build #Raspberry-Remote von xkonni installieren cd ~ git clone git://github.com/xkonni/raspberry-remote.git cd raspberry-remote make send 3. Steckdose schalten Befehl nach dem Schema sudo./send <Hauscode> <Steckdosennummer> <Zustand 1 AN, 0 AUS> # Einschalten mit sudo./send 11111 2 1 SWE1 ITSB-B SS 2015 Seite 4/6
SWE1 ITSB-B SS 2015 Seite 5/6
*7.) Schreiben Sie ein Programm mit dem Namen SortANum, welches Argumente über die Kommandozeile entgegennimmt und diese sortiert auf stdout ausgibt. Bei den Argumenten handelt es sich um ganzzahlige 32-Bit-Werte. Das Programm soll folgende Optionen unterstützen: SortArgv [Option] N1 [, N2, N3 ] Option Beschreibung -h Gibt eine kurze Beschreibung der Optionen aus. -a Sortiert aufsteigend (default) -d Sortiert absteigend Wird das Programm ohne Argumente aufgerufen, sollte ebenfalls eine kurze Beschreibung zum Programm auf stdout ausgegeben werden. Aufrufbeispiele: $>./SortArgv 17 12 23 5 5 12 17 23 $>./SortArgv d 17 12 23 5 23 17 12 5 $>./SortArgv h SORTARGV [Option] N1 [, N2, N3 ] Sortiert vorzeichenlose 32Bit-Integer. Option Beschreibung -h Gibt eine kurze Beschreibung der Optionen aus. -a Sortiert aufsteigend (default) -d Sortiert absteigend SWE1 ITSB-B SS 2015 Seite 6/6