Microsoft Word Modulul3 doc


Transmiterea vectorilor ca argumente la o funcŃie



Yüklə 484,48 Kb.
Pdf görüntüsü
səhifə22/26
tarix31.12.2021
ölçüsü484,48 Kb.
#111572
1   ...   18   19   20   21   22   23   24   25   26
9.Modulul3U2

            Transmiterea vectorilor ca argumente la o funcŃie. Transmiterea unui vector ca un 

singur  parametru  poate  genera  eroare.  Variabila  de  mediu  $@  conŃine  parametrii  transmişi, 

corespunzători lui $0, $1, $2…. Reamintim că $0 se substituie cu numele funcŃiei. Dacă 

încercăm  să  transmitem  un  vector  ca  argument  al  funcŃiei,  funcŃia  va  prelua  numai  prima 

componentă a  vectorului. 

 

Exemplu: 

$cat >exfunc8 

function TransErVect { 

  echo "Parametrii sunt:$@" 

  sir1=$1; echo "Vectorul primit este ${sir1[*]}" 

Sir2=(1 2 3 4 5) 



echo "Vectorul original este: ${sir2[*]}" 

TransErVect $sir2 

$ ./ exfunc8 

Vectorul original este: 1 2 3 4 5 

Parametrii sunt: 1 

./badtest3: thisarray[*]: bad array subscript 

Vectorul primit este  

            Pentru  a  rezolva  această  problemă,  variabiala  vector  trebuie  dezasamblată  în 

componente  şi valorile  rezultate  să  le folosim  ca  parametri ai funcŃiei.  În interiorul funcŃiei, 

putem reasambla toŃi parametri într-un nou vector. 

 



 

105 


Exemplu. 

$cat >exfunc9 

function TransCorVect { 

  local sir1=(`echo "$@"`) 

  echo "Noul tablou: ${sir1[*]}" 

Sir2=(1 2 3 4 5) 



echo "Tabloul original: ${Sir2[*]}" 

TransCorVect ${sir2[*]} 

$./exfunc9 

Tabloul original: 1 2 3 4 5 

Noul tablou: 1 2 3 4 5 

Scriptul foloseste variabila Sir2, pe care o transmite funcŃiei şi, în cadrul funcŃiei 

se construieşte un nou tablou sir1. 

 

Exemplu: Suma componentelor unui vector.  

  $cat >exfunc10

  function AdunaElemVect { 

  local suma=0 

  local sir2 

  sir2=(`echo "$@"`) 

  for val in ${sir2[*]} 

  do 

  suma=$[ $suma + $val ] 



  done 

  echo $suma 

  } 

  Sir1=(1 2 3 4 5) 



  echo "Vectorul original: ${sir1[*]}" 

  arg1=`echo ${sir1[*]}` 

  rez=` AdunaElemVect $arg1` 

  echo "Suma este $rez" 

  $./exfunc10 

Vectorul original: 1 2 3 4 5 

Suma este 15 


Yüklə 484,48 Kb.

Dostları ilə paylaş:
1   ...   18   19   20   21   22   23   24   25   26




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin