1. Hello, World! ^
# This
is my first Perl program, called hello.pl
# It's just a simple perl program.
# It's made on Nov. 24, 1996 by Tony Zhang.
$mystring = "Hello, World!";
print ($mystring); # skriv ut strängen på skärmenDe flesta programexemplen är
hämtade ur boken Perl in 21 days av Thony Zhang. I detta
första program skall resultatet se ut så här när du
exekverar programmet vid DOS-prompten:
C:\> perl
hello.pl
Hello, World!
C:\>
Tecknet #
De tre första raderna utgörs av kommentarer.
#-tecknet talar om för perlkompilatorn att
efterföljande tecken fram till radslutet skall ignoreras
vid programkörningen. Du kan använda kommentarer för
att förtydliga programmen för dig själv och andra. Man
kan även lägga in kommentarer i slutet av rader som
innehåller vanliga perlsatser. Ett exempel på detta ser
du på rad 5.
Variabler
På rad 4 i programmet ser du varibelnamnet
$mystring. Ett varibelnamn inleds alltid med ett $-tecken
och en bokstav. Ett variabelnamn referar till ett
innehåll. Vad innehållet består av bestäms i
tilldelningssatser. Rad 4 är ett exempel på en
tilldelningssats, där =-tecknet kallas
"tilldelningstecken". Rad fyra kan beskrivas
på följande sätt: "Variabeln $mystring tilldelas
innehållet Hello, World!."
Strängar
Det mesta av innehållet i program består av
speceilla programmeringsord, som t ex print, if och
while. Texten "Hello, World!" däremot är ju
ingen speciell programmeringskod, utan i stället en text
vilken som helst, som du lägga in i en variabel eller
skriva ut på skärmen. Sådana texter måste omges av
citattecken, för att inte Perl skall blanda samman den
med övrig programmeringskod. En sådan text med
citattecken kallas för "en sträng".
Extra uppgifter
1.1
Modifiera hello.pl, så att programmet i stället skriver
ut texten "Hello, hello, hello, World!".
1.2
Programsatsen print ($mystring) skrivs
innehållet i variabeln $mystring ut på skärmen.
$mystring kan bytas ut mot ett tal eller en sträng.
Skriv en variant av hello.pl, som du ger namnet
hello_enrad.pl, och där programmet enbart består av en
rad.
1.3
Satsen print ($x , $y) skriver ut två varibler. Skapa
ytterligare en variant av hello.pl, där Hello läggs in
i en variabel och World i en annan. Skriv ut desssa två
varibler i en printsats. Kalla programmet
hello_tva_variabler.pl.
2. Standard input ^
# This is my second Perl program, called p1_2.pl
# It's just a simple perl program.
# It's made on Nov. 24, 1996 by Tony Zhang.
$minvar = <STDIN>;
print ($minvar); # print a string to screen
STDIN
I datorsammanhang brukar standard input (STDIN)
beteckna tangentbordet, och standard output skärmen. I
Perl innebär raden $minvar = <STDIN> att
tilldelningen till variabeln $minvar skall ske från
tangentbordet. I praktiken innebär det att
programkörningen (exekveringen) stannar när den kommer
till denna sats. Programanvändaren kan nu skriva ett
valfritt antal tecken vid DOS-prompten. När han sedan
trycker ner enter-tangente återupptas exekveringen, och
variabeln $minvar tilldelas de tecken som användaren
just skrivit. Lägg märke till att STDIN skall omges av
tecknen < respekive >. Det är inte parenteser, som
i printsatsen.
Extra uppgifter
2.1
Skriv ett program (haelsa.pl) där programmet ställer
frågan "Vad heter du?", läser in ett namn
från tangentbordet och sedan skriver texten
"Hej" samt det inlästa namnet.
2.2
Skriv ett program som läser in två textsträngar och
skriver ut dem i omvänd ordning. Kalla programmet
tvastrang.pl
2.3
Om du vill ha en radmatning när en textsträng skrivs
måste du lägga in teckenkombinationen \n, t ex så
här: "Detta står på en rad.\nDetta står på
nästa rad." Försök att fundera ut ett sätt att
skriva ut två inlästa variabler på två olika rader.
Döp programmet till rad.pl.
3. Omvandla engelska mil till
kilometrar och tvärtom ^
#
p2_1.pl
# Omvandling km miles.
print ("Skriv in den sträcka som skall
omvandlas:\n");
$originaldist = <STDIN>;
chop ($originaldist);
$miles = $originaldist * 0.6214;
$kilometers = $originaldist * 1.609;
print ($originaldist, " kilometers = ", $miles,
" miles\n");
print ($originaldist, " miles = ", $kilometers,
" kilometers\n");
\n
Denna teckenkombination använder du i
teckensträngar för att åstadkomma en radmatning. (Se
även tidigare uppgiften 2.3.)
chop()
Funktionen chop() klipper bort det sita tecknet i en
textsträng. Den används ofta när ett tal matats in
från STDIN. En sådan inmatning ger nämligen en
textsträng som avslutas med ett nyradstecken (\n). När
talet skall användas vid uträkningar bör detta
nyradstecken avlägsnas, och detta utför du alltså med
hjälp av chop(). Fundera på följande exempel. Ger det
en utskrift som lägger ägg, eller ger det en utskrift
som kan fyllas med karameller?
$var =
"Struts";
chop ($var);
print ( $var);
Aritmetik
På raderna 5 och 6 ser du exempel på aritmetik
(matematiska uträkningar). Bägge satserna är
tilldelningssatser, och aritmetiken finns till höger om
tilldelningstecknet. Det som står till höger om
tilldelningstecknet sägs vara "ett aritmetiskt
uttryck" och multiplikationstecknet (*) är "en
aritmetisk operator". Aritmetiska uttryck kan bestå
av variabler, tal och aritmetiska operatorer. Tal brukar
man kalla för "numeriska konstanter". Några
exempel på aritmetiska uttryck:
2 * 3
2 * 3 / 4
$x + $y
$minvariabel 8
Som du ser kan man blanda variabler och
tal. Man kan även ha flera räknetecken (numeriska
operatorer). Oftast ser du aritmetiska uttryck som en del
av en tilldelningssats, som i raderna 5 och 6. Följande
tilldelninssatser lägger in värdet 8 i varibeln $y, och
skriver ut det på skärmen:
$x = 2;
$y = $x * $x +5 1;
print ($y);
Utskrift av en lista
Raderna 8 och 9 är exempel på utskrift av listor.
En lista är en uppräkning av variabler och/eller
strängar. En lista kan även innehålla tal och
aritmetiska uttryck. Listans olika delar skiljs åt av
komma tecken. Några exempel:
($x, $y)
En lista med två variabler
("Allt kött är hö\n" , "Allt hö
är kött")
En
lista med två strängar
( 4, 1000) En lista med tal (numeriska konstanter)
( 2*3 ) En lista med ett
aritmetiskt uttryck.
(Satsen
print(2*3); ger utskriften 5.)
( 2, "X", 3, "=", 2*3)
En lista med tal, strängar och
ett
aritmetiskt uttryck
Extra uppgifter
3.1
Skriv ett program där användaren ombeds att skriva in
ett pris. Porgrammet skall sedan räkna ut moms och
skriva ut momsbeloppet på skärmen. Kalla programmet
moms.pl.
3.2
Utöka programmet så att såväl momsbelopp som priset
inklusive moms skrivs ut.
3.3
Skriv ett program som räknar ut hur mycket bensin en bil
drar per mil. Programmet skall be om följande uppgifter:
körd sträcka och förbrukad bensinmängd. Programmet
kan heta bensinforbrukning.pl.
3.4
Skapa ett program som beräknar kostnaden för en
bilresa. Följande uppgifter matas in: resans längd i
mil, beräknad bensinförbrukning per mil samt
bensinpriset per liter.
4. Exempel på if-sats ^
# p2_2.pl
print ("Enter a number:\n");
$number = <STDIN>;
chop ($number);
if ($number) {
print ("The number is not zero.\n");
}
print ("This is the last line of the
program.\n");
5. Likhet mellan två tal ^
# p2_3.pl
print ("Enter a number:\n");
$number1 = <STDIN>;
chop ($number1);
print ("Enter another number:\n");
$number2 = <STDIN>;
chop ($number2);
if ($number1 == $number2) {
print ("The two numbers are equal.\n");
}
print ("This is the last line of the
program.\n");
6. Exempel med if
else ^
# p2_4.pl
print ("Enter a number:\n");
$number1 = <STDIN>;
chop ($number1);
print ("Enter another number:\n");
$number2 = <STDIN>;
chop ($number2);
if ($number1 == $number2) {
print ("The two numbers are equal.\n");
} else {
print ("The two numbers are not equal.\n");
}
print ("This is the last line of the
program.\n");
7.
If
elsif
else ^
# p2_5.pl
print ("Enter a number:\n");
$number1 = <STDIN>;
chop ($number1);
print ("Enter another number:\n");
$number2 = <STDIN>;
chop ($number2);
if ($number1 == $number2) {
print ("The two numbers are equal.\n");
} elsif ($number1 == $number2 + 1) {
print ("The first number is greater by
one.\n");
} elsif ($number1 + 1 == $number2) {
print ("The second number is greater by
one.\n");
} else {
print ("The two numbers are not equal.\n");
}
print ("This is the last line of the
program.\n");
8. Exempel med while ^
# p2_6.pl
$done = 0;
$count = 1;
print ("This line is printed before the loop
starts.\n");
while ($done == 0) {
print ("The value of count is ", $count,
"\n");
if ($count == 3) {
$done = 1;
}
$count = $count + 1;
}
print ("End of loop.\n");
|