Code-Qualität. Dr. Florian Deißenböck. AE-Kolloquium Versicherungskammer Bayern. 27. Oktober Continuous Quality in Software Engineering
|
|
- Rüdiger Böhmer
- vor 8 Jahren
- Abrufe
Transkript
1 Code-Qualität Dr. Florian Deißenböck AE-Kolloquium Versicherungskammer Bayern 27. Oktober 2011 Continuous Quality in Software Engineering
2 Agenda Schlechter Code Code-Reviews Werkzeuge Qualitätsverfall Qualitäts-Controlling Zusammenfassung
3 #include <math.h> #include <sys/time.h> #include <X11/Xlib.h> #include <X11/keysym.h> double L,o,P,_=dt,T,Z,D=1,d, s[999],e,h= 8,I, J,K,w[999],M,m,O,n[999],j=33e-3,i= 1E3,r,t, u,v,w,s= 74.5,l=221,X=7.26, a,b,a=32.2,c, F,H; int N,q, C, y,p,u; Window z; char f[52] ; GC k; main(){ Display*e= XOpenDisplay( 0); z=rootwindow(e,0); for (XSetForeground(e,k=XCreateGC (e,z,0,0),blackpixel(e,0)) ; scanf("%lf%lf%lf",y +n,w+y, y+s)+1; y ++); XSelectInput(e,z= XCreateSimpleWindow(e,z,0,0,400,400, 0,0,WhitePixel(e,0) ),KeyPressMask); for(xmapwindow(e,z); ; T=sin(O)){ struct timeval G={ 0,dt*1e6} ; K= cos(j); N=1e4; M+= H*_; Z=D*K; F+=_*P; r=e*k; W=cos( O); m=k*w; H=K*T; O+=D*_*F/ K+d/K*E*_; B= sin(j); a=b*t*d-e*w; XClearWindow(e,z); t=t*e+ D*B*W; j+=d*_*d-_*f*e; P=W*E*B-T*D; for (o+=(i=d*w+e *T*B,E*d/K *B+v+B/K*F*D)*_; p<y; ){ T=p[s]+i; E=c-p[w]; D=n[p]-L; K=D*m-B*T-H*E; if(p [n]+w[ p]+p[s ]== 0 K <fabs(w=t*r-i*e +D*P) fabs(d=t *D+Z *T-a *E)> K)N=1e4; else{ q=w/k *4E2+2e2; C= 2E2+4e2/ K *D; N-1E4&& XDrawLine(e,z,k,N,U,q,C); N=q; U=C; } ++p; } L+=_* (X*t +P*M+m*l); T=X*X+ l*l+m *M; XDrawString(e,z,k,20,380,f,17); D=v/l*15; i+=(b *l-m*r -X*Z)*_; for(; XPending(e); u *=CS!=N){ XEvent z; XNextEvent(e,&z); ++*((N=XLookupKeysym (&z.xkey,0))-it? N-LT? UP-N?& E:& J:& u: &h); --*( DN -N? N-DT?N== RT?&u: & W:&h:&J ); } m=15*f/l; c+=(i=m/ l,l*h +I*M+a*X)*_; H =A*r+v*X-F*l+( E=.1+X*4.9/l,t =T*m/32-I*T/24 )/S; K=F*M+( h* 1e4/l-(T+ E*5*T*E)/3e2 )/S-X*d-B*A; a=2.63 /l*d; X+=( d*l-t/s *(.19*E +a *.64+J/1e3 )-M* v +A* Z)*_; l += K *_; W=d; sprintf(f, "%5d %3d" "%7d",p =l /1.7,(C=9E3+ O*57.3)%0550,(int)i); d+=t*(.45-14/l* X-a*130-J*.14)*_/125e2+F*_*v; P=(T*(47 *I-m* 52+E*94 *D-t*.38+u*.21*E) /1e2+W* 179*v)/2312; select(p=0,0,0,0,&g); v-=( W*F-T*(.63*m-I*.086+m*E*19-D*25-.11*u )/107e2)*_; D=cos(o); E=sin(o); } }
4 } for (const_iterator<permission> permission = permissions.begin(); permission!= permissions.end(); ++permission) { if (!permission->isinternal()) { if (user->haspermission (permission)) { cout << " " << permission << endl; } } } } } } /* bezieht sich auf if in Zeile 172 */ Zeilen C# in einer Klasse Zeilen C# in einer Methode Schachtelungstiefe Parameter
5 Bezeichner Anzahl S0 810 S1 612 r1 490 I1 423 S2 362 i1 248 S3 211 SQL 199 CM 193 I2 155 Type # % chars % Keywords % % Delimiters % % Operators % % Identifiers % % Literals % % Total % % Eclipse 3.0: Bezeichner bestehend aus Wörtern Identifikatoren sind das Vokabular eines Programms (ca. 70%) Synonyme & Homonyme Limitierung durch Programmiersprachen F. Deißenböck, M. Pizka, Concise and Consistent Naming, IWPC, 2005
6 /* if-else-kaskade */ if (GlobalSettings::mayPrintToConsole ()) { if (!user->isadmin()) { if (!permission->isinternal()) { if (user->haspermission int search (String s, String[] strings) { //strings = tolowercase(strings); strings = sort(strings); List<String> l = aslist(strings); return search(s, strings); }
7 TODO: ist das wirklich Okay, einem QWidget einen QObject Parent zu geben? TODO: Soll das so sein? Jetzt echt? Alle alten Sachen in die Tonne? TODO: ist es korrekt? TODO: find the real reason, why this can become VOID FIXME: solve timeout problem FIXME: fix it as soon as we know the iso format hack for supporting international iso messages TODO: remove this hack 2011 CQSE GmbH
8 public double calc (double d1, double 2) { if (d1 == d2) { return 0; }... public double comp (String s1, String s2) { if (s1 == s2) { return 0; } CQSE GmbH if (condition); { code_in_if (); } if (a<1 && a>5) { code_in_if (); } Socket s = new Socket (" ", 8080); return valid? true : false; Redundante Literale Magic Numbers GOTO Ausgerollte Schleifen public int find (String[] strings) { prepare(strings); int result = findprep(strings); Logger.debug(sort(strings)); return result; }
9 private static class Dir extends PathEntry { private String dir; Dir(String d) { dir = d; } ClassFile getclassfile(string name, String suffix) throws IOException { final File file = new File(dir + File.separatorChar + name.replace('.', File.separatorChar) + suffix); return file.exists()? new ClassFile() { public InputStream getinputstream() throws IOException { return new FileInputStream(file); } public String getpath() { try { return file.getcanonicalpath(); } catch(ioexception e) { return null; } } public long gettime() { return file.lastmodified(); } public long getsize() { return file.length(); } public String getbase() { return dir; } } : null; }...
10 Juergens et al., Do Code Clones Matter?, ICSE 2009
11 Probleme Redundanzen blähen Artefakte unnötig auf Volumen beeinflusst Wartungsaufwand (Dokumentation, Testen, Programmverstehen, ) Änderungen werden aufwändiger Änderung an einem Klon betrifft vermutlich auch andere Klone Änderung muss mehrfach durchgeführt werden Vergleiche: Updateanomalien in Datenbanken Fehlerpotential Notwendige Folgeänderungen an Klonen können übersehen werden Inkonsistenzen entstehen
12
13
14 Studie Werden Klone inkonsistent gewartet? Sind Inkonsistenzen ungewollt? Führen ungewollte Inkonsistenzen zu Fehlern? Untersuchte Systeme 3 industrielle C#-Systeme ( kloc, Alter 3-6 Jahre) 1 industrielles COBOL-System (200 kloc, Alter 17 Jahre) 1 Open-Source Java-System (280 kloc, Alter 8 Jahre) Durchführung Werkzeuggestützte Identifikation von inkonsistenten Klonen > 700 Inkonsistenzen durch Entwickler bewertet Juergens et al., Do Code Clones Matter?, ICSE 2009
15 Clones C Inconsistent Clones IC Unintentional Inconsistent Clones UIC Faulty Clones F System A B C D Sysiphus Sum Mean Clone groups C Inconsistent clone groups IC Unintentionally inconsistent clone groups UIC Faulty clone groups F Prop. inconsistent clone groups IC / C Prop. unintended inconsistencies UIC / IC Prop. faults for inconsistent clones F / IC Prop. faults for unintentionally inconsistent clones F / UIC
16 LoC Clone LoC Aug. 04 Okt. 04 Dez. 04 Feb. 05 Apr. 05 Jun. 05 Aug. 05 Okt. 05 Dez. 05 Feb. 06 Apr. 06 Jun. 06 Aug. 06 Okt. 06 Dez. 06
17 public class Order { private String name; private List<Item> items; private Date date; public class Order { private String name; private List<Item> items; private Date date; 2011 CQSE GmbH } public String getname () { return name; } public List<Item> getitems() { return items; } public Date getdate () {return date; }... } public List<Item> getitems() { return helper(items); } List<Item> helper(list<item> items){...} Kapselung Visibilities Verschattung Static vs Non-Static»finale«Felder ungenutzte Variablen unnötige Getter/Setter unnötige Interfaces Equals/Hashcode-Implementierung
18 try {... } catch (Throwable t) {} try {... } catch (Exception ex) { ex.printstracktrace(); } try {... } catch (Exception ex) { throw new RuntimeException(ex); } ungenügende/keine Behandlung von Ausnahmen inkonsistente Verwendung von Ausnahmen Ausnahmen vs Rückgabewerte Java: Checked vs Unchecked Exceptions
19 2011 CQSE GmbH
20 Dokumentation Implementierung Dokumentation Implementierung
21 Studie Projekt Alter kloc #Beziehungen #Abweichungen Doku. Probleme Architektur- Verletzungen A ~90% ~10% B ~88% ~12% C ~72% ~28% Erkenntnisse Dokumentation typischerweise veraltet Vielzahl relevanter Verletzungen aufgedeckt (inkl. Bugs) gemeinsames Architekturverständnis ist nötig M. Feilkas et al., The Loss of Architectural Knowledge during System Evolution, ICPC 2009
22 >10 Programmiersprachen in einem System Wahl der Sprache auf Basis der Entwicklerverfügbarkeit veraltete Technologien Sprachvermischung
23 <body> <% If Request.QueryString( ID ) <> Then %> <SCRIPT language= JavaScript > function dologin() { X } </script> <% Else %> <SCRIPT language= JavaScript > function dologin() { Y } </script> <% End If %>... </body> 2011 CQSE GmbH
24 35 Trigger entführte Tabellen/verlorene User SQL-Injection Impact-Analyse auf Zuruf
25 Tests, die kontinuierlich fehlschlagen Unit-Tests, die nichts testen Mangelnde Testbarkeit Capture&Replay-Werkzeuge
26 public void perform(string s) { Tracer.enter("perform"); dosomething(s); Tracer.exit("perform"); } public String read(file f) { FileReader reader = new FileReader(f);... } Text-Encodings Datentypen (Nicht-)Benutzung von Bibliotheken Thread-Sychronisierung»nach Gefühl«Logging/Tracing Missbrauch von Sprachkonstrukten Lizenzverletzungen Quelltext-Layout Verteilung auf verschiedene Artefakttypen (Dependency Injection) Code-Formatierung
27 Manuelle Reviews viele relevante Qualitätseigenschaften sind nicht automatisch analysierbar Bezeichner Kommentare sinnvolle Verwendung von Datenstrukturen und Algorithmen Konsistenz der Fehlerbehandlung logische Redundanz diese Eigenschaften bedürfen der manuelle Analyse manuelle Analysen werden in der Praxis nur spärlich eingesetzt manuelle Analysen sollten soweit möglich durch automatische Analysen unterstüzt werden
28 Reviews bei der ConQAT-Entwicklung flächendeckendes Review aller Änderungen auf Basis des Ampelzustands der angepassten Dateien Sammlung der Issues als TODO-Tags im Code review creation release review RED YELLOW GREEN deletion modification
29
30 Werkzeuge Metrik-Tools Rule-Checker Java: PMD, Checkstyle, FindBugs, C#: FxCop, Gendarme, Fortify, C/C++: PCLint, Klocwork, Coverity, Cobol: Fortify,? Compiler & IDEs Clone-Detection: ConQAT, CloneDR, CCFinder, Architektur-Analyse: ConQAT, Lattix, Structure-101,
31 Architektur-Konformität Ziele Aufdecken von Architekturverletzungen Aufdecken von Schwächen in Architekturdokumentation Konservierung des Architekturwissens Motivation Programmverstehen Impact-Analyse Ansatz Architekturdokumentation als lebendiges Entwicklungsartefakt Automatisierter Abgleich Soll-/Ist-Architektur Soll-Architektur System Differenz
32
33
34 »Programs, like people, get old«*»software aging in all successful products«ursachen: mangelnde Bewegung unkundige Behandlung Symptome: Gewichtszunahme sinkende Performance und Zuverlässigkeit Prävention: Vorausplanen (Qualität, Flexibles Design) Aufzeichnung aufbewahren (Dokumentation) zweite Meinung einholen (Review) Heilkunde: Alterungsprozess aufhalten, Nachdokumentation Restrukturieren, Amputation * D. L. Parnas, Software Aging, ICSE, 1994
35 Beispiel Bell Labs: 100Mloc, Module, 15 Jahre, Entwickler S. G. Eick et al., Does Code Decay?, IEEE Trans. Softw. Eng., 2001 Phänomen: Änderungsaufwand/Fehlerpotential zunehmend Symptome:»bloated«Code, Behelfslösungen, Ursachen: Zeitdruck, Werkzeuge, Umfeld, Team, Architektur, Proportional zur Anzahl Änderungen
36 Änderungen gewünschte Wartbarkeit Abweichung Korrekturen Wartbarkeit Q-Ing. Entwickler System Analyse-Ergebnis (feedback) Qualitäts-Analyse Review Analyse-Tool Qualitäts-Dashboard
37 Qualitäts-Dashboards 2011 CQSE GmbH
38 Herausforderungen Aggregation und Visualisierung Anpassbarkeit und Erweiterbarkeit Vielfalt der analysierten Artefakte autonomer Betrieb Skalierbarkeit Behandlung von»false-positives«unterstützung von»brownfield Measurement«
39 ConQAT graphische DSL zur Spezifikation der Analysekonfiguration Prozessoren beschreiben Analyseoperationen Kanten beschreiben Datenfluss Blöcke ermöglichen die Wiederverwendung von Analysefunktionalität source modulea Utility.java Main.java Loader.java source modulea Utility.java 128 Main.java 244 Loader.java 331 source 703 modulea 703 Utility.java 128 Main.java 244 Loader.java /04/ /04/ /03/ /06/
40 Eingabe Quelltext (Ada, ABAP, C/C++, Cobol, C#, Java, JavaScript, VB, PL/I, ) Textdokumente (Plain, CSV, Word, PDF) Modelle (Simulink/Stateflow) Repositories (Subversion, Bugzilla) Analyse Basis-Metriken (# Files, LOC, SLOC, # Methods, Nesting Depth, ) Clone-Detection Architektur-Analyse Tool-Integration (PMD, Findbugs, JUnit, Cobertura, Klocwork, FxCop, ) Basis-Metriken (# Files, LOC, SLOC, # Methods, Nesting Depth, ) Historisierung Ausgabe verschiedene Formate (HTML, PDF, Text, ) Tabellen Diagramme (Balken, Linie, Radar, Fläche, Scatter, Torte, ) Tree-Maps (Plain & Cushion)
41 LoC Clone LoC Aug. 04 Okt. 04 Dez. 04 Feb. 05 Apr. 05 Jun. 05 Aug. 05 Okt. 05 Dez. 05 Feb. 06 Apr. 06 Jun. 06 Aug. 06 Okt. 06 Dez. 06 Feb. 07 Apr. 07 Jun. 07 Aug. 07 Okt. 07 Dez. 07 Feb. 08 Apr. 08 Jun. 08 Aug. 08 Okt. 08 Dez. 08 Feb. 09 Apr. 09
42
43 »Brownfield«-Analyse Einsatz von Werkzeugen in existierenden System meist schwierig Gründe: Big-Bang-Sanierung erfordert (unnötig) hohe Aufwände Keine Ressourcen für Big-Bang-Sanierung Big-Bang-Sanierung birgt Risiken Ansatz: Schrittweise Verbesserung Motto: Leave the campsite cleaner than you found it Erforderlich: Erkennung von Modifikationen Trennung von alten und neuen Problemen
44 Delta-Analyse Quality Dashboard Baseline Quality Dashboard Aktueller Stand
45 Quality Control as a Service 2011 CQSE GmbH
46 Zusammenfassung Schlechten Code gibt es in vielen Spielarten Schlechten Code gibt es in (fast) jedem System Schlechter Code wird schlechter wenn keine Gegenmaßnahmen ergriffen werden kontinuierliches Qualitäts-Controlling ist unerlässlich manuelle Analysen sind nicht zu ersetzen Umgang mit großen, existierenden Systemen ist eine Herausforderung
47 Kontakt Dr. Florian Deißenböck CQSE GmbH Lichtenbergstraße Garching bei München
ConQAT Software-Qualitäts-Analyse aus dem Baukasten
ConQAT Software-Qualitäts-Analyse aus dem Baukasten Dr. Florian Deißenböck 6. März 2012 Universität Stuttgart Continuous Quality in Software Engineering Änderungen gewünschte Wartbarkeit Abweichung Korrekturen
MehrSchlechter Code Beispiele, Gründe, Gegenmaßnahmen
Schlechter Code Beispiele, Gründe, Gegenmaßnahmen Dr. Florian Deißenböck GI Regionalgruppe München 11. Juni 2012 Continuous Quality in Software Engineering Agenda Schlechter Code Code-Reviews Werkzeuge
MehrSchlechter Code Beispiele, Gründe, Gegenmaßnahmen
Schlechter Code Beispiele, Gründe, Gegenmaßnahmen Dr. Florian Deißenböck GI Regionalgruppe Hamburg 26. Oktober 2012 Continuous Quality in Software Engineering Agenda Schlechter Code Code-Reviews Werkzeuge
MehrKontinuierliches Qualitäts-Controlling langlebiger Softwaresysteme
Kontinuierliches Qualitäts-Controlling langlebiger Softwaresysteme Dr. Florian Deißenböck msg systems ag 15. März 2013 Continuous Quality in Software Engineering Agenda Software-Wartung»Schlechter Code«Qualitätsverfall
MehrSoftwarequalität Eine Einführung
Softwarequalität Eine Einführung Dr. Florian Deißenböck Seminar Softwarequalität 4. April 2013 Continuous Quality in Software Engineering Agenda Softwarequalität Softwarequalitätsmodelle Software-Wartung»Schlechter
MehrVertrauen ist gut. Dr. Florian Deißenböck. BITKOM Arbeitskreis Software Engineering. 8. Oktober 2014. Continuous Quality in Software Engineering
Vertrauen ist gut Dr. Florian Deißenböck BITKOM Arbeitskreis Software Engineering 8. Oktober 2014 Continuous Quality in Software Engineering Software Engineering Governance is the set of structures, processes
MehrEinfü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
MehrEinführung in Javadoc
Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:
MehrEcholot Qualitätssicherung mit Sonar
Echolot Qualitätssicherung mit Sonar Thomas Haug thomas.haug@mathema.de www.mathema.de Motivation Sonar Überblick Demo Fazit Motivation Sonar Überblick Demo Fazit Sometimes the developers manage to maintain
MehrGroße Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
MehrObjektorientierte 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
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrHochschule 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
MehrEinfü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
MehrErweiterbare Architekturen
1 Florian Deißenböck Erweiterbare Architekturen 23. September 2005 Architektenworkshop 2 Gliederung Hintergrund Persönliches, Software-Qualität, Wartbarkeit ConQATs Architektur Entwurf, Prototypen, Konfiguration
MehrEinfü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.
MehrGrundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung
Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:
MehrGraphic 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
MehrDesign by Contract with JML
Thema: Design by Contract with JML Proseminar: Assertions Verfasser: Literatur: Betreuer: Natalya Moriz Gary T.Leavens and Yoonsik Cheon: Design by Contract with JML Prof. Dr. Heike Wehrheim 1 Inhalt DBC
MehrPass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl
Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt
MehrKlausur 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)
MehrDr. Monika Meiler. Inhalt
Inhalt 4 Einführung in die Programmiersprache Java (Teil II)... 4-2 4.4 Strukturierte Programmierung... 4-2 4.4.1 Strukturierung im Kleinen... 4-2 4.4.2 Addierer (do-schleife)... 4-3 4.4.3 Ein- Mal- Eins
MehrProgrammieren in Java
Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang
MehrDataTables LDAP Service usage Guide
DataTables LDAP Service usage Guide DTLDAP Usage Guide thomasktn@me.com / www.ktn.ch Benutzung des DTLDAP Service DataTables Der Service stellt einen JSON Feed für DataTables (http://www.datatables.net)
MehrStudentische 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
MehrQuelltextähnlichkeit
Quelltextähnlichkeit String autor = Tobias Jamin ; String projekt = Arte-Fakt ; String seminar = Transformationen ; Date termin = new Date(3, // Tag 2, // Monat 2006); Presentation praesentation = new
MehrTypumwandlungen bei Referenztypen
Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei
MehrInformatik 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
MehrNCDiff Testmanagement leicht gemacht
Testmanagement leicht gemacht Nagler & Company Thomas Gebhard & Anton Garra Complexity Die stetige Anpassung an neue Anforderungen der IT und das Bestreben Marktgegebenheiten zu folgen oder voraus zu sein,
MehrÜbung 1 mit C# 6.0 MATTHIAS RONCORONI
Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,
MehrTesten mit JUnit. Motivation
Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen
Mehr2. 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
MehrJava-Schulung Grundlagen
Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
MehrHello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.
Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike
Mehr14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt
14.4.2016 Technische Hochschule Georg Agricola WORKSHOP TEIL 3 IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt Inhaltsverzeichnis 1. Kurzfassung zur Projekterstellung... 2 2. Morse-Tabelle...
MehrAllgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>
Allgemeines Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C #include main() { printf( hello world\n ); } Peter Sobe 1 Die Großfamilie der C-Sprachen
MehrÄ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
MehrDas erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
Mehr1. Übung zu "Numerik partieller Differentialgleichungen"
1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1
Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen
MehrEinstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White
MehrEinführung in die Programmierung Blockkurs Java
Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()
MehrJavakurs zu Informatik I. Henning Heitkötter
Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,
MehrLösungsvorschlag zum Übungsblatt 1 zur Vorlesung Informatik II / WS2001/02
Lösungsvorschlag zum Übungsblatt 1 zur Vorlesung Informatik II / WS2001/02 Prof. Dr.-Ing. Holger Vogelsang (FH-Karlsruhe) Dipl.-Inform. (FH) Gudrun Keller (FH-Karlsruhe) Dipl.-Inform. Mathias Supp (.riess
Mehrpublic class SternchenRechteckGefuellt {
Java programmieren: Musterlösungen Konsolen-Aufgaben Aufgabe 1: Gefüllte Rechtecke zeichnen Schreiben Sie ein Programm, das ein durch Sternchen gefülltes Rechteck zeichnet. Der Benutzer soll Breite und
MehrMusterlösungen zur Klausur Informatik 3
Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
MehrProgrammieren in Haskell Einführung
Programmieren in Haskell Einführung Peter Steffen Universität Bielefeld Technische Fakultät 16.10.2009 1 Programmieren in Haskell Veranstalter Dr. Peter Steffen Raum: M3-124 Tel.: 0521/106-2906 Email:
MehrPraktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck 01.06.2005
Praktikum Datenbanksysteme Ho Ngoc Duc IFIS - Universität zu Lübeck 01.06.2005 Tomcat-Installation $JAVA_HOME (z.b. /home/dbp00/j2sdk1.4.2) $CATALINA_HOME (/home/dbp00/jakarta-tomcat-4) Skripte zum Start/Stop:
MehrIch liebe Java && Ich liebe C# Rolf Borst
Ich liebe Java && Ich liebe C# Rolf Borst Java oder C#? Einführung public class Einfuehrung { private int gesamtzahl = 0; /* Ermittelt die Anzahl der geraden und durch drei teilbaren Zahlen */ public String
MehrOliver Paulus, oliver@code-project.org. 7. Februar 2006. Spring Framework Einführung. Oliver Paulus, oliver@codeproject.org. Was ist Spring?
oliver@code-project.org 7. Februar 2006 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2
MehrOperationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2
Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2 von Christoph Knabe http://public.beuth-hochschule.de/~knabe/ Ch. Knabe: Operationalisierbare Qualitätskriterien
MehrEinführung in die Informatik Tools
Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht
MehrKlausur in Programmieren
Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Sommer 2009, 16. Juli 2009 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name: Matrikelnr.:
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrTesten von graphischen Benutzeroberflächen. 26. Juni 2013
Testen von graphischen Benutzeroberflächen 26. Juni 2013 Überblick Testarten Methoden-, Klassen-, Komponenten-, Systemtests Motivation für automatisches Testen von graphischen Benutzeroberflächen Entwicklungsprinzipien
MehrAngewandte 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
MehrIntegrierte und automatisierte GUI-Tests in Java
Integrierte und automatisierte GUI-Tests in Java Gliederung Die Idee hinter GUI-Tests Herausforderungen und Probleme Techniken Jemmy-Framework Konzeptorientiertes Testen FIT (Framework for Integrated Tests)
Mehr188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
MehrUnterprogramme. 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
MehrII.1.1. Erste Schritte - 1 -
! 1. Grundelemente der Programmierung! 2. Objekte, Klassen und Methoden! 3. Rekursion und dynamische Datenstrukturen! 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1
MehrWPF Steuerelemente Listbox, ComboBox, ListView,
WPF Steuerelemente Listbox, ComboBox, ListView, Dr. Beatrice Amrhein Überblick Einführung Listen ComboBox Tabellen 2 Einführung 3 Listen- und Tabellen-Elemente Listen und Tabellen-Elemente sind Steuerelemente,
MehrDr. Monika Meiler. Inhalt
Inhalt 4 Anweisungen... 4-2 4.1 Strukturierte Programmierung... 4-2 4.1.1 Geschichte... 4-2 4.1.2 Strukturierung im Kleinen... 4-2 4.2 Einige Beispielanwendungen... 4-4 4.2.1 Addierer (do-schleife)...
MehrProgrammiervorkurs WS 2012/2013. Schleifen und Methoden
Programmiervorkurs WS 2012/2013 Schleifen und Methoden Ein Befehl soll mehrfach ausgeführt werden, z.b.: public class MyCounter { System.out.println(1); Ein Befehl soll mehrfach ausgeführt werden, z.b.:
MehrFormat Pixel Gewicht GIF/JPG Gewicht Flash. 728x90 & 120(160)x600 100 K 120 K
Technische Spezifikationen der ADselect GmbH (Stand 2014) Format Pixel Gewicht GIF/JPG Gewicht Flash Super Banner 728x90 30 K 40 K Medium Rectangle 300x250 30 K 40 K Standard Skyscraper 120x600 30 K 40
MehrProgrammierkurs 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
MehrThemen. Web Service - Clients. Kommunikation zw. Web Services
Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur
MehrKlausur zur Einführung in die objektorientierte Programmierung mit Java
Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-
MehrDatentypen: Enum, Array, Struct, Union
Datentypen: Enum, Array, Struct, Union C-Kurs 2013, 2. Tutorium Freitagsrunde http://wiki.freitagsrunde.org 10. September 2013 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
MehrProgrammieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff
Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind
MehrU08 Entwurfsmuster (II)
U08 Entwurfsmuster (II) Inhalt der Übung Diskussion und Implementierung von Entwurfsmustern Übungsaufgaben Aufgabe 1 (Queue) Gegeben ist das folgende Analysemodell einer Warteschlange (Queue): Eine Warteschlange
MehrLösungsvorschläge. zu den Aufgaben im Kapitel 4
Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere
MehrJava 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7
Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen
MehrProgrammierung 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/
MehrBesprechung Übung 1 & Vorstellung Übung 2
Besprechung Übung 1 & Vorstellung Übung 2 Software Qualität, FS09 06.04.2009 Reinhard Stoiber Übung 1 Ergebnisse: grossteils gut Subversion (svn+ssh) auf Windows Server 2003 Bereitete Probleme mit Schreibrechten
MehrEinfache 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"
MehrEinführung in die C-Programmierung
Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).
MehrApplication Frameworks
Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung
MehrKapitel MK:IV. IV. Modellieren mit Constraints
Kapitel MK:IV IV. Modellieren mit Constraints Einführung und frühe Systeme Konsistenz I Binarization Generate-and-Test Backtracking-basierte Verfahren Konsistenz II Konsistenzanalyse Weitere Analyseverfahren
MehrGliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik
Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.
MehrInstitut für Dokumentologie und Editorik. XML-Datenbanken und XQuery
XML-Datenbanken & XQuery Folie 1 XML Digitale Edition XSL-FO XSLT XQuery XML-DB Folie 2 Programm - Ausgewählte Biere verköstigen - Brauereibesichtigung - Anwendung der Hefe erlernen - brauen Folie 3 Telota
MehrGebundene Typparameter
Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte
MehrComputeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag
MehrSuchmaschinen. Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6
Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6 Aufgabe 1: Pareto mit SV-Semantik Suchmaschinen Pareto Definition: x < P
MehrECO-Manager - Funktionsbeschreibung
ECO-Manager - Funktionsbeschreibung Version Autor Datum Kommentare 1.0 A. Sterzenbach 24.03.2006 - Generell Das Einarbeiten und das damit verbundene Aktualisieren eines großen Zusammenbaus (z.b. Werkzeugaufbau)
Mehr4. AuD Tafelübung T-C3
4. AuD Tafelübung T-C3 Simon Ruderich 17. November 2010 Arrays Unregelmäßige Arrays i n t [ ] [ ] x = new i n t [ 3 ] [ 4 ] ; x [ 2 ] = new i n t [ 2 ] ; for ( i n t i = 0; i < x. l e n g t h ; i ++) {
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrSoftware Entwicklung II (SS12)
Prof. Dr. P. Liggesmeyer Dipl.-Inf. K. Bizik M.Sc. K. Nehring TU Kaiserslautern Fachbereich Informatik AG Software Engineering: Dependability Software Entwicklung II (SS12) Übung 5 Ausgabe: 04.06.2012
Mehr7. Übung zu Algorithmen und Datenstrukturen
7. Übung zu Algorithmen und Datenstrukturen Dynamisches Programmieren Greedy Algorithms Exceptions 1 Dynamische Programmierung nutzt gezielt aus, dass man bei manchen Problemen den Rechenaufwand extrem
MehrEin Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch
Ein Blick voraus des Autors von C++: Bjarne Stroustrup 04.06.2005 Conrad Kobsch Inhalt Einleitung Rückblick Nur eine Übergangslösung? Was würde C++ effektiver machen? Quelle 2 Einleitung Wo steht C++,
MehrWEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?
WEBAPPLIKATIONEN MIT PHP Wo gibt es Hilfe? Wie fang ich an? Tools Webapplikationen bestehen aus Textdateien Lassen sich in Texteditoren schreiben Alternativen: Eclipse (PDT) Netbeans (Dynamic Languages)
MehrSoftware- Handbuch www.magicrest.de
Der magisch einfache WebService. Software- Handbuch www.magicrest.de Von Jonathan Werner www.designfire.de Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis... 2 2 Einleitung... 3 3... 4 3.1
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE22-NutzungVonKlassen (Stand 28.09.2012) Aufgabe 1: Entwickeln Sie in Eclipse auf der Basis der vorgestellten Java-GUI-Klassen ein Java- Programm, das
MehrWerkzeuggestützte Softwareprüfungen Statische Analyse und Metriken
Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken Dennis Hardt 21.06.2006 Gliederung Statische Analyse Definition, Arbeitsweise, Werkzeuge Angewandt auf ein Projekt Statische Analyse selbst
MehrDaniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers
Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des
MehrKontrollstrukturen 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