Tema 4

107

Īntrebări

1.     Definiţi următorii termeni:

a.   listă

b.   listă vidă

c.   variabilă array

2.     Presupuneţi că următoarele atribuiri au fost executate:

@list = (1, 2, 3);

$scalar1 = "hello";

$scalar2 = "there";

Care este valoarea variabilei @newlist īn fiecare dintre cazurile următoare?

a.   @newlist = @list;

b.   @newlist = reverse(@list[1,2]);

c.   @newlist = ($scalar1, @list[1,1]); 

d.   ($dummy, @newlist) = @list;

e.   @newlist[2,1,3] = @list[1,2,1];

f.   @newlist = <STDIN>;

3.     Presupuneţi că următoarele atribuiri au fost executate:

@list1 = (1, 2, 3, 4);

@list2 = ("one", "two", "three");

Care este valoarea variabilei $result īn fiecare dintre cazurile următoare?

($dummy, $result) = @list1;

$result = @list1;

($result) = @list2;

($result) = @list1[1..2];

$result = $list2[$list1[$list1[0]]];

$result = $list2[3]; 

4.     Care este diferenţa dintre o listă şi o variabilă array?

5.     Cum face interpretorul Perl distincţia dintre un element de array şi o variabilă scalară?

6.     Cum vă puteţi asigura că nici unul dintre caracterele @, $, and [ nu sunt substituite īn şiruri?

7.     Cum puteţi obţine lungimea unei liste memorate īntr-o variabilă array?

8.     Ce se īntāmplă atunci cānd referiţi un element de array care nu a fost definit?

9.     Ce se īntāmplă atunci cānd atribuiţi valoare unui element al cărui index depăşeşte lungimea curentă a array-ului?

Exerciţii

10.  Scrieţi un program care numără toate apariţiile cuvāntului the la <STDIN>.

11.  Scrieţi un program care citeşte linii ce conţin numere, fiecare fiind separat de exact un spaţiu şi tipăriţi următoarele:

a.   Suma fiecărei linii

b.   Suma totală

12.  Scrieţi un program care citeşte fraze şi sortează toate cuvintele īn ordine inversă tipărind cāte un cuvānt pe fiecare linie omiţānd apariţiile multiple.

13.  Ce este greşit īn următoarea instrucţiune?

$result = @array[4]; 

1.     Ce este greşit īn următorul program? (Īncercaţi de vă daţi seama ce este greşit fără să vă uitaţi la exemplele date īn curs.)

#!/usr/local/bin/perl

@input = <STDIN>;

$currline = 1;

while ($currline < @input) {

@words = split(/ /, $input[$currline]);

@words = sort(@words);

$input[$currline] = join(" ", @words);

$currline++;

}

print (@input);

© Cornel Mironel Niculae, 2003-2004

13-Nov-2009