Dienstag, 16. Februar 2010

Rednotebook Notiz: - Mit Python Programmieren lernen 1

Ich habe mir neulich das Buch "Python 3 for absolute beginners" gekauft. Während ich das Buch lese, werde ich mir Notizen zu dem gelesenen in meinem persönlichen Notizbuch Rednotebook machen. An welchem ich die Allgemeinheit gerne teilhaben lasse. Wie gesagt es sind nur Notizen und haben daher weder Anspruch auf Vollständigkeit noch auf Richtigkeit. Ich hoffe dennoch, dass sie dem einem oder anderen vom Nutzen sind:

===Lerning Python Part 1===

__Chapter 1 Introducing Python__
**Why python**
- leicht zu lernen
- einfach zu lesender und zu wartender Code
- schnell zu schreibender Code
- man wird gezwungen sauberen Code zu schreiben
- aussergwöhnliche Große Bibliothek mit Funktionen und Klassen

**Wann Python**
- Schnelle Zweizeiler um adminstrative Aufgaben zu erledigen
- als Projektcode
- zum Einfachen nachvollziehen simpler Algorithmen
- Flexibel einsetzenbar +Jango --> Webprogrammierung
+ Pygtk --> grafische programmierung
- als kleiner Taschenrechner

[Python-docs ""http://docs.python.org/3.1/index.html""]

Python3 ist __**nicht**__ zur früheren Version 2.x komapttibel

[Jargon Hackers Dictionary ""http://catb.org/~esr/jargon""]
- erklärt Begriffe der Informatik und der Programmierung

**Tipp**
Da Python noch immer standardmäßig in Version 2.x ausgeliefert wird, wird Python3 oftmals zusätzlich installiert und dann durch python3 in der shell aufgerufen.
Wenn man in der bash aber den alias setzt
alias py='python3'

und dann anschließend mittels source ~$USER/.bashrc die bashrc neu sourced, bekommt man eine ziemlich nette Abkürzung für die shell.

matthias@Dickkopf:~$ py
Python 3.1.1+ (r311:74480, Nov 2 2009, 14:49:22)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

Verlassen mit quit()

Geany wird als IDE erwähnt. Ich empfehle Genay weil es ein bisschen mehr als ein Text-Editor und ein bisschen weniger als eine IDE ist.

**Was heißt hier Programmieren**
Problem, was gelöst werden soll --> Idee wie ich dieses Problem lösen kann --> Wie kann ich die Idee Umsetzen (welche Methoden und Algorithmen muss ich anwenden)

Problem --> Idee --> Werkzeug
_____________v________________
v
Lösung
Cyclus der Softwareentwicklung (**software development circle**)

__Chapter 2 Designing Software__
//Frage: Wie wird ein Problem in ein funktionierendes Programm umgewandelt, welches dieses in Problem löst?//

**Das Problem beschreiben**
- (1) Was soll die Software für dich tun? Welches Problem soll sie lösen?
- (2 ) Wer soll die Software benutzen?
- (3) Auf welchem System wird die Software laufen

- zu (1)
Öffnen Sie einen Texteditor und beschreiben Sie kurz welches Problem die Software lösen soll und was die Software tun soll. Welche Optionne es verwenden wird, wie es generell ausgeführt werden soll.

**Tipp:**
ich speichere alle meine Projekte unter
/home/$USER/workspace/python

- zu (2)
Für wen ist das Programm und wie Benutzerfreundlich muss ich es machen. Technical Scills des Anwenders.
Wie soll der Anwender mit dem Programm interagiieren
--> einen knopf drücken
--> komplexe grafische oberfläche mit menüstruktur
--> Text interface wie bash mit optionen
--> Eine Fragedialog beantworten
--> Wieviel hilfestellung soll angeboten werden

- zu (3)
Welches Betriebssystem (bei Linux welche Distri) wird eingesetzt. Welche Bibliotheken kann ich benutzen. Müssen bestimmten Vorraussetzungen gegeben sein, damit dass Programm läuft.


**Tipp**
Um mehr Hilfe zu erhalten dokumentiert man möglichst in englisch
Beispiel:
"
Simple Program for Systemadministrators to make a dircetory or files
shared.
Share is a file having the Rights root:Shared rwxrx---, so that the group Shared is able to access and use the file but only root can delete and write to this files.

This idea came to me when i was deleting all my Music-Collection in a non sleeping night using rm -r /media/MeinMusik instead of rm -r /media/MeineMusik1

usage: mksh where the argument is eithe a vail file or dircetory known in root-directory.
"

**Functinal Requirement**
Methoden, Funktionen, Klassen die man braucht damit die Software das tut was man von ihr erwartet. Definieren Sie in Kommentaren am Ende des Programms welche Funktionen die Software noch erhalten soll. (ein Update soll möglich sein, der User soll in der lage sein den Ort einer log-datei selbst festzulegen). Oftmals fallen einem während der Arbeit an dem Programm noch zusätzliche Funktionen und Optionen ein, die ein Program erhalten soll oder man merkt dass Software hier und da noch nicht ausreichend so gestaltet ist, dass es auch die dümmsten falscheingaben des Users abfängt.
|
/ \
|
|
**Nonfunctional Requirements**
Accessibillity, Usability, Kosteneffizens, Kompatibilität mit anderen Systemen, Sicherheit und Performance, Stabilität, Flexibilität (sind neue Features leicht zu implementieren. Muss ich neue Features implementieren?)

__Besseres Beispiel:__
"
Problem: Make A file have permissions root:Shared 750 (Shared)

Target Users: Me and Users holding Root Permissions preventing there Data to be deleted in long work nights ;)

Target System: Linux

Interface: Bash Command-line

Functional Requirements: Using chmod and chown. Printing out a message when done with the processes.

Testing: simple run program on a bunch of files and use ls to verify

Maintainer: theo@example.com
"

__In Python__
#!/usr/bin/env python3
"""
hello_world.txt
Problem: Get the Computer to print a message
Target Users: Me
Target System: GNU/Linux
Interface: Command-line
Funtional Requiremnest: Print out a messae. User must be able to input text
Testing: Simple run test - expecting a message to appear.
Maintainer: me@home.com
"""

Python Programme haben immer die Endung .py

# In python wird alles was hinter den # in einer zeile bis zum ende der zeile steht als Kommentar gewertet.

Gute Dokumentration ist notwendig, um auch später nachzuvollziehen was ein Stückchen Code macht.

"" '' sind in Python //Text-Strings// Quotes Alles was innerhalb eines """ steht wird als Kommentar gesehen, so das man nicht jede Zeile mit # versehen muss. Dass hilft auch um nicht funktionierenden Code schnell auszukommentieren. Der Unterschied zwischen "" und '' ist der, dass man '' benutzt um Kommentare in Kommentare einzubetten.
"'Was soll das.', fragte sie."

**Pseudocode benutzen**
Pseudocode ist durch ein # Kommentar gekennzeichnet und beschreibt in kurzen prägnanten Worten, welcher Schriit hier implementiert werden soll.

__Beispiel:__
"""
#!/usr/bin/env python3

hello_world.txt
Problem: Get the Computer to print a message
Target Users: Me
Target System: GNU/Linux
Interface: Command-line
Funtional Requiremnest: Print out a messae. User must be able to input text
Testing: Simple run test - expecting a message to appear.
Maintainer: me@home.com
"""
#read users input <--step ##initialize varibale that holds users input <--substep #test users input #printout users input on screen #endprogramm

Keine Kommentare:

Kommentar veröffentlichen

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.