User Tools

Site Tools


kurs:1._einheit

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

kurs:1._einheit [2014/09/10 21:22] (current)
Line 1: Line 1:
 +==== Scalare ====
  
 +[[sparse_array.pl]]
 +
 +<​code>​
 +# in perl gibt es 3 Typen von Variablen
 +
 +# die einfachsten sind scalare
 +
 +$a = 1;
 +$b = 2;
 +
 +# zwischen " werden Variablen extrapoliert,​ soweit moeglich
 +
 +print "$a $b\n";
 +
 +# zwischen ' wird nicht extrapoliert -> schneller ​
 +
 +print '$a $b';
 +print "​\n";​
 +
 +# mit dem . werden strings konkateniert
 +
 +print $a+$b ."​\n";​
 +
 +# Variablen in perl haben keinen Typ
 +
 +$b = '​Haus';​
 +
 +print "$a $b\n";
 +
 +# welche Operationen moeglich und sinnvoll sind, ergibt sich aus dem Kontext ​
 +# im folgenden Beispiel ist eine Addition mit einem string nicht sinnvoll -> 
 +# $b wird als 0 interpretiert
 +
 +print $a+$b . "​\n"; ​
 +</​code>​
 +
 +==== arrays ====
 +
 +<​code>​
 +use strict;
 +use warnings;
 +
 +my @feld;
 +my $eingabe = '';​
 +# while ($eingabe ne "​ende"​) { 
 +while (1) {
 +   ​$eingabe = <​STDIN>;​
 +   ​chomp($eingabe);​
 +   last if ($eingabe eq '​ende'​);​
 +   push (@feld, $eingabe);
 +}
 +
 +# pop @feld;
 +
 +my @g = grep {length($_) > 3 } @feld;
 +
 +my @m = map { ">​$_<"​ } @feld;
 +
 +print "@m \n";
 +print "@g \n";
 +my @sfeld = sort @feld;
 +print "​Ausgabe:​\n";​
 +
 +my $i;
 +foreach my $element (@feld) {
 +  $i++;
 +  printf("​%d Element: %s\n", $i, $element);
 +}
 +
 +</​code>​
 +
 +==== Kontrollstrukturen ====
 +
 +<​code>​
 +### kontrolstrukturen.pl
 +while ($eingabe ne "​END"​) ​ {
 +   print "​Eingabe : ";
 +   ​$eingabe = <​STDIN>;​
 +   # der Befehl chomp arbeitet direkt auf dem string und returniert nicht den abgeschnittenen string!
 +   # man muss dann auch die Abbruchbedingung modifizieren
 +   ​chomp($eingabe);​
 +   push (@feld,​$eingabe);​
 +}  ​
 +
 +# Spezielle Variablen - zB $" bestimmt das Trennzeichen bei Arrayausgabe
 +
 +# push, unshift, shift, pop (splice kommt spaeter)
 +
 +pop @feld;
 +
 +$" = "​\n";​
 +print "​@feld\n";​
 +
 +
 +# for schleifen kommen in perl weniger oft vor als in anderen Programmierensprachen
 +# weil es effektiver Methoden zur Iteration ueber Arrays gibt
 +# in der Variable $#feld steht der Index des letzten array Elements
 +# wichtig obwohl @feld[index] auch funktioniert,​ ist es eigentlich falsch, da der @ immer 
 +# den Listenkontext anzeigt, meint man lediglich ein einzelnes Element eines arrays, ist die richtige
 +# Notation $feld[index]
 +
 +for ($i = 0; $i <= $#feld; $i++)  {
 +  print "$i. $feld[$i]\n";​
 +}
 +
 +# perl array sind sehr speichereffizient,​ und beduerfen ebenfalls keiner Initialisierung
 +# zB kann man ohne Probleme $feld[100000] = '​Bla'​ schreiben und es werden keine 100000 "​Speicherplaetze"​
 +# alloziert - wieviel Speicher braucht eine Variable wirklich?
 +</​code>​
 +
 +==== Lottozahlen ====
 +
 +<​code>​
 +for ($i = 1; $i<= 45; $i++) {
 +  push(@seed, $i);
 +}
 +
 +for ($j = 45; $j > 39; $j--) {
 +  $zuf = int( rand()*$j );
 +  $zahl = splice (@seed, $zuf, 1);
 +  print "$zahl \n";
 +}
 +</​code>​
kurs/1._einheit.txt ยท Last modified: 2014/09/10 21:22 (external edit)