Leser: 17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use Tk;
$window = MainWindow->new(-width=> '0m',-title=> 'Umrechnung');
$oben = $window->Frame->pack();
$titel = $oben->Label(-text=>"Programm für die Umrechnung von Grad Celsius in Kelvin und Fahrenheit.")->pack();
$clean = $window->Frame->pack();
$empty = $clean->Label(-text=>"")->pack();
$window->Label(-text=>'Anfangswert:')->pack();
$eingabe = $window->Text(-width=>20,-height=>1,-borderwidth=> '1m',-cursor=> 'left_side',-background=> 'white',-font=>'courierb12',
-foreground=> 'black')->pack();
$window->Label(-text=>'Endwert:')->pack();
$eingabe2 = $window->Text(-width=>20,-height=>1,-borderwidth=> '1m',-cursor=> 'left_side',-background=> 'white',-font=>'courierb12',
-foreground=> 'black')->pack();
$clean2 = $window->Frame->pack();
$empty2 = $clean2->Label(-text=>"")->pack();
$window->Label(-text=>'Celsius Fahrenheit Kelvin', -font=>'courierb 10 bold' )->pack();
$ausgabe = $window->Text(-width=>60,-height=>10,-borderwidth=> '0m',-cursor=> 'left_side',-background=> 'white',-font=>'courierb 12',
-foreground=> 'black')->pack();
$bottom_frame = $window->Frame()->pack(-side=>'bottom', -pady=>10);
$bottom_frame->Button( -text=>'Alles zeigen',
-command=>\&rechnen)->pack(-side=>'left');
$bottom_frame->Button( -text => "Alles löschen",
-command=>\&loeschen)->pack(-side=>'left');
$bottom_frame->Button( -text => "Beenden",
-command=> sub {exit 0})->pack(-side=>'left');
MainLoop;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
$anfang;
$ende;
$k;
$f;
print "Anfangstemperatur eingeben: \n";
$anfang = <STDIN>;
system("cls");
print "Endtemperatur eingeben: \n";
$ende = <STDIN>;
system("cls");
if($anfang > $ende)
{
print "Der Endwert muss groeßer als der Anfangswert sein!";
if($anfang =!NULL)
{
print "Der Anfangswert darf nicht 0 betragen";
}
} else
{
print "Temperatur in °C \t Temperatur in °F \t Tempteratur in K \n";
while($ende > $anfang + 10)
{
$anfang = $anfang + 10;
$k = (($anfang * 9) /5 ) +32;
$f = $anfang + 273.15;
print "\t";
print $anfang;
print "\t\t\t";
print $f;
print "\t\t\t";
print $k;
print "\n";
}
}
1
2
3
4
5
6
7
8
9
10
11
12
sub rechne_was {
my $operand1 = shift;
my $operand2 = shift;
my $ergebnis_add = $operand1 + $operand2;
my $ergebnis_sub = $operand1 + $operand2;
return ($ergebnis_add, ergebnis_sub);
}
# Aufruf der Sub:
my ($add, $sub) = rechne_was(4,2);
1 2 3 4 5 6
sub rechnen { my $anfang = $eingabe->Contents; my $k = (($anfang * 9) /5 ) +32; my $f = $anfang + 273.15; $ausgabe->Contents("Fahrenheit: $k\nKelvin: $f"); }
1
2
$ausgabe = $window->Frame->pack();
$frame = $ausgabe->Label(-command=> ?sub?)->pack();
1
2
$ausgabe = $window->Frame->pack();
$frame = $ausgabe->Button(-text => 'blabla', -command=> sub{print "Tue irgendetwas nützliches\n"; rufeDieseSubAuf();})->pack();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!perl
use strict;
use warnings;
use Tk;
use Tk::LabEntry;
my $mw = tkinit(-width => 640, -height => 480, -title => 'Programm zur Umrechnung von Clesius in ...');
$mw->packPropagate(0);
my $button_frame = $mw->Frame(-bg => '#259238')->pack(-fill => 'x', -expand => 0,);
my $ergebnis_frame = $mw->Frame(-bg => '#9D2763')->pack(-fill => 'both', -expand => 1,);
my $startwert_entry = $button_frame->LabEntry(-label => 'Startwert: ')->pack(-side => 'left',);
my $endwert_entry = $button_frame->LabEntry(-label => 'Endwert: ')->pack(-side => 'left',);
$button_frame->Button(
-text => 'Ausrechnen...',
-command => sub{
rechnen_und_anzeigen($startwert_entry, $endwert_entry, $ergebnis_frame);
return 1;
},
)->pack(-side => 'left',);
$mw->MainLoop();
=head1 SUBS
=head2 rechnen_und_anzeigen( $startwert_entry, $endwert_entry, $ergebnis_frame )
TODO: Dokumentation
=cut
sub rechnen_und_anzeigen {
my $startwert_entry = shift or die('Missing startwert_entry');
my $endwert_entry = shift or die('Missing endwert_entry');
my $ergebnis_frame = shift or die('Missing ergebnis_frame');
my $startwert = $startwert_entry->get();
my $endwert = $endwert_entry->get();
return if $startwert !~ m/^\d+$/;
return if $endwert !~ m/^\d+$/;
print "TODO: C in F usw. mit $startwert und $endwert\n";
$ergebnis_frame->Label(-text => 'Hallo Ergebnis!')->pack();
} # /rechnen_und_anzeigen
1 2 3 4 5 6 7 8 9 10 11
sub rechnen { chomp (my ($c1, $c2) = ($eingabe->Contents, $eingabe2->Contents)); my $output; while ($c1<=$c2) { my $f = (($c1 * 9) /5 ) +32; my $k = $c1 + 273.15; $output .= "$c1\t$f\t$k\n"; $c1+=10; } $ausgabe->Contents($output); }