[lekcja 19] Przekazywanie tablic jednowymiarowych do funkcji Kurs C++ » Poziom 2

background image

Strona 1

[lekcja] Przekazywanie tablic jednowymiarowych do funkcji | Kurs C++ » Poziom 2

2011-11-12 17:10:40

http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Przekazywanie-tablic-jednowymiarowych-do-funkcji/324

Darmowe kursy Online

»

Kurs C++

»

Poziom 2

Autor: Piotr Szawdyński

Przekazywanie tablic jednowymiarowych do funkcji

[lekcja]

Rozdział 19. Niniejszy rozdział pokazuje podstawowe techniki przekazywaniatablic jednowymiarowychdo funkcji.

Jeżeli starałeś się intensywnie wcielić w życie plan pisania kodu wykonanego w oparciu o funkcje to z pewnością natrafiłeś na czynny

opór kompilatora w chwili gdy chciałeś przekazać tablicę do funkcji. Być może doszedłeś do jednego z możliwych rozwiązań , tj. sposobie

przekazywania tablicy jako argument do funkcji bądź znów ktoś podsunął Ci niezbyt trafiony pomysł ze zmiennymi globalnymi. Zmienne

globalne to zło wcielone, które oczywiście ma swoje uzasadnione miejsce w przyrodzie, jednak dowiesz się o nim znacznie później - na

chwilę obecną nie masz tego znać, a nawet jeżeli już je znasz to masz całkowity zakaz ich używania. Dlaczego? Żebyś się nauczył

programować, a nie rozwiązywać problemy metodą buta w drzwiach.

Przekazywanietablicy jednowymiarowejdo funkcji

W C++ mamy do dyspozycji kilka form zapisu przekazywania tablic do funkcji. W niniejszym rozdziale poznamy trzy sposoby zapisu

osiągnięcia naszego celu. Zapisy, które zostaną przedstawione są względem siebie równoważne, a więc można ich używać zamiennie.

Zapisy te wyglądają następująco:

C/C++

void

sposob_1

(

int

tablica

[

123

] )

;

void

sposob_2

(

int

tablica

[] )

;

void

sposob_3

(

int

*

tablica

)

;

Jeżeli wykazałeś się kreatywnością rozwiązując zadanie z poprzedniego rozdziału to prawdopodobnie wystąpił w nim zapis, który

występuje w funkcji sposob_1, tj.

int

tablica

[

123

]

, gdzie 123 to liczba elementów w tablicy. Z punktu widzenia funkcji znajomość

liczby elementów dla tablic jednowymiarowych jest zbędna. Wspomniany zapis zadziała więc tak samo jak zapis

int

tablica

[]

, który

informuje kompilator jak również programistę o przekazywaniu tablicy do funkcji. Ostatni zapis natomiast mówi, że jest to wskaźnik na

zmienną - szczegółów na chwilę obecną nie musisz znać. Jedyne co Ciebie powinno teraz interesować to fakt, że zapis ten jest również

równoważny do wcześniej omówionych.

Kompilator wszystkie omówione zapisy zinterpretuje jako wskaźnik. Wskaźnik w rzeczywistości jest liczbą, która wskazuje na pierwszą
komórkę pamięci zawierającą dane. Na chwilę obecną szczegółów nie musisz znać - zostaną one omówione w dalszej części kursu.

Dane tablicy w funkcjach

Tablice przekazywane do funkcji nigdy nie są kopiowane. Oznacza to, że w funkcji masz bezpośredni dostęp do danych, które

znajdują się w tablicy. Modyfikacja danych jest globalna, bowiem pracujesz na oryginalnych danych tablicy, która została przekazana do

funkcji.

Przykład

Zobaczmy teraz jak wyglądać będzie przekazywanie tablicy do funkcji w praktyce:

C/C++

#include <iostream>

void

wypelnijTablice

(

int

t

[]

,

int

iRozmiar

)

{

std

::

cout

<<

"Podaj "

<<

iRozmiar

<<

" liczb:"

<<

std

::

endl

;

int

i

=

0

;

do

{

std

::

cin

>>

t

[

i

]

;

i

++

;

}

while

(

i

<

iRozmiar

)

;

}

int

main

()

{

int

moja_tablica

[

5

]

;

wypelnijTablice

(

moja_tablica

,

5

)

;

int

i

=

0

;

background image

Strona 2

[lekcja] Przekazywanie tablic jednowymiarowych do funkcji | Kurs C++ » Poziom 2

2011-11-12 17:10:40

http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Przekazywanie-tablic-jednowymiarowych-do-funkcji/324

Architektserwisu: Piotr Szawdyński

© Wszelkieprawa zastrzeżone2005-2011

do

{

std

::

cout

<<

moja_tablica

[

i

] <<

", "

;

i

++

;

}

while

(

i

<

5

)

;

return

0

;

}

Powyższy przykład powinien być dla Ciebie już na tyle prosty, że efekt działania powyższego programu powinien być dla Ciebie do

przewidzenia . Dalej pozostaje Ci tylko ćwiczyć, ćwiczyć i jeszcze raz ćwiczyć.

Pamiętaj, że zmienna o nazwie moja_tablica nie jest widoczna z poziomu funkcji wypelnijTablice, jak również zmienna t nie jest
widoczna wewnątrz funkcji main. Dostęp do tablicy moja_tablica w funkcji wypelnijTablice posiadasz poprzez zmienną t.
Powinieneś to już wiedzieć ze wcześniejszego rozdziału poświęconego funkcjom.

Zadanie domowe

Napisz program, który wylosuje 999 liczb całkowitych z zakresu od 4 do 10 włącznie, wypisze te wartości na ekran, po czym zsumuje je

i wynik wypisze na ekran. Wszelkie operacje mają zostać zrealizowane w oparciu o funkcje. Tablica ma być zadeklarowana w funkcji

main

. Oczekiwane funkcje:

Wypełnienie tablicy o podanym rozmiarze losowymi liczbami z przedziału podawanego przez argumenty funkcji.
Sumowanie określonej ilości liczb znajdujących się w tablicy i zwrot wyniku.
Wypisywanie zawartości tablicy.

Przykładowa implementacja funkcji main:

C/C++

int

main

()

{

int

tablica

[

999

]

;

wylosujLiczby

(

tablica

,

999

,

4

,

10

)

;

wypiszLiczby

(

tablica

,

999

)

;

int

iSuma

=

obliczSume

(

tablica

,

999

)

;

std

::

cout

<<

"Suma liczb wynosi: "

<<

iSuma

<<

std

::

endl

;

return

0

;

}

Wszystkieteksty są chronioneprawami autorskimi. Kopiowanielub rozpowszechnianietreści poza niniejszymserwisem jest

zabronione.

Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechnianiawłasnego tekstu wedle własnego uznania.


Wyszukiwarka

Podobne podstrony:
[lekcja 15] Pętla do while Kurs C++ » Poziom 2
[lekcja 18] Tablice jednowymiarowe Kurs C++ » Poziom 2
[lekcja 20] Funkcje, a słowo kluczowe return Kurs C++ » Poziom 2
[lekcja 17] Funkcje pierwsze starcie Kurs C++ » Poziom 2
AutoCAD - Kurs zaawansowany - Lekcja 19, autocad kurs, Zaawansowany
Kurs Excel`a, Lekcja 19, Lekcja 19 - makra
[lekcja 20] Funkcje, a słowo kluczowe return Kurs C++ » Poziom 2
Nie kaz mi myslec O zyciowym podejsciu do funkcjonalnosci stron internetowych Wydanie II Edycja kolo
[lekcja 11] Operacje porównania Kurs C++ » Poziom 1
[lekcja 13] Instrukcja warunkowa if else Kurs C++ » Poziom 1
jezyk ukrainski lekcja 19
Jazda pasem ruchu oraz po łuku do przodu i do tyłu, Kurs Instruktora Prawa Jazdy, Egzamin praktyczny
drewno tablice pomocnicze do projektowania więźby dachowej
28. Dwudziesta ósma lekcja kursu o relaksacji i medytacji, ĆWICZENIA do medytacji koncentracji oddy
[lekcja 12] Operacje logiczne Kurs C++ » Poziom 1
lekcja 19 id 265104 Nieznany
APP Zadania 07 Tablice Jednowymiarowe
APP 07 Tablice Jednowymiarowe
[lekcja 16] Pseudolosowe liczby całkowite Kurs C++ » Poziom 2

więcej podobnych podstron