[lekcja 18] Tablice jednowymiarowe Kurs C++ » Poziom 2

background image

Strona 1

[lekcja] Tablice jednowymiarowe | Kurs C++ » Poziom 2

2011-11-12 17:09:27

http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Tablice-jednowymiarowe/292

Darmowe kursy Online

»

Kurs C++

»

Poziom 2

Autor: Piotr Szawdyński

Tablice jednowymiarowe

[lekcja]

Rozdział 18. Jednowymiarowetablice zmiennych.

Im dalej w las tym więcej drzew - przynajmniej tak jest w teorii. W niniejszym rozdziale zapoznamy się z tablicami zmiennych. Zanim

jednak przejdziemy do właściwej nauki postaram się przytoczyć (chyba) sensowną opowieść po której sam z siebie będziesz mógł

powiedzieć: "o tablice są fajne".

Dlaczego wprowadzonotablice zmiennych

Wyobraź sobie, że jesteś pilotem dużego samolotu. Na pokład wchodzą pasażerowe i z niego wychodzą. Przyszedł jednak dzień, że

zaczęło Ciebie interesować kto na jakim miejscu siedzi i ponumerowałeś sobie miejsca od 1 do 200. Na każdym miejscu siedzi jakaś

osoba, która ma swoje imię i nazwisko, a zatem również i PESEL. Gdybyś chciał teraz we własnym programie utworzyć 200 miejsc do

przechowywania np. peselu. Musiałbyś utworzyć 200 zmiennych i wyglądałoby to mniej więcej tak:

C/C++

int

miejsce1_pesel

;

int

miejsce2_pesel

;

int

miejsce3_pesel

;

//...

int

miejsce199_pesel

;

int

miejsce200_pesel

;

Takie klepanie kodu z pewnością byłoby męczące. A co teraz jeżeli zechcesz jeszcze przechowywać imię i nazwisko? Kolejne 400 linijek

pisania by utworzyć zmienne? Tak by było gdyby nie istniały tablice zmiennych. Tablice zmiennych jednak istnieją i zamiast tworzyć

każdą zmienną osobno to można określić ile ma być zmiennych danego typu:

C/C++

int

miejsce_pesel

[

200

]

;

Jednowymiarowetablice zmiennych

Tworzenie jednowymiarowych tablic zmiennych jest bardzo proste - wystarczy, że za deklaracją zwykłej zmiennej podamy liczbę

elementów. W ogólnym przypadku wygląda to tak:

C/C++

typ_zmiennej nazwa_zmiennej

[

liczba_elementow

]

;

Jak korzystać ze zmiennychtablicowych?

Gdy mieliśmy zmienną zwykłą, np.

int

liczba

;

to dostęp do niej uzyskiwaliśmy zapisem:

liczba

. Teraz gdy posiadamy tablicę, np.

int

liczby

[

100

]

;

to dostęp do poszczególnych elementów uzyskujemy poprzez zapis

liczby

[

numer_indeksu

]

, gdzie numer_

indeksu to liczba z przedziału od 0 do 99.

Pierwszy element tablicy w językach C i C++ zaczyna się zawsze od indeksu 0, natomiast ostatni element posiada indeks liczba_

elementow-1

, co łącznie daje nam 100 elementów (gdy zmienna liczba_elementow wynosi 100).

Zobaczmy teraz jak to będzie wyglądało w praktyce:

C/C++

#include <iostream>

int

main

()

{

int

liczby

[

3

]

;

std

::

cout

<<

"Podaj liczbe 1:"

;

std

::

cin

>>

liczby

[

0

]

;

std

::

cout

<<

"Podaj liczbe 2:"

;

std

::

cin

>>

liczby

[

1

]

;

liczby

[

2

] =

567

;

std

::

cout

<<

"liczby[2] wynosi "

<<

liczby

[

2

] <<

std

::

endl

;

int

suma

=

liczby

[

0

] +

liczby

[

1

] +

liczby

[

2

]

;

std

::

cout

<<

"Suma trzech liczb wynosi:"

<<

suma

<<

std

::

endl

;

background image

Strona 2

[lekcja] Tablice jednowymiarowe | Kurs C++ » Poziom 2

2011-11-12 17:09:27

http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Tablice-jednowymiarowe/292

return

0

;

}

Powyższy program demonstruje:

jak wczytać wartość do wybranego elementu tablicy;
jak przypisać wartość wybranemu elementowi tablicy;
jak wypisać wartość wybranego elemtnu tablicy;
jak wykonywać operacje na elementach tablicy.

Jeżeli przeanalizowałeś kod uważnie to zapewne zauważyłeś, że korzystanie ze zmiennych tablicowych praktycznie niczym się nie różni

od zwykłych zmiennych poza tym, że należy podać w nawiasach kwadratowych indeks elementu z którym chcemy pracować.

Tablice zmiennych, a pętle

Zastosowanie tablic zmiennych daje nam nie tylko korzyść w postaci krótszego kodu, który tworzy określoną liczbę zmiennych ale

również daje nam możliwość wielokrotnego przetwarzania danych dla różnych zmiennych tym samym kodem. Co to oznacza? Oznacza

to, że jeżeli staniesz teraz przed sytuacją, w której będziesz chciał wczytać załóżmy 10 liczb do tablicy zmiennych to nie będziesz musiał

tego robić tak:

C/C++

int

liczba

[

10

]

;

std

::

cin

>>

liczba

[

0

]

;

std

::

cin

>>

liczba

[

1

]

;

std

::

cin

>>

liczba

[

2

]

;

std

::

cin

>>

liczba

[

3

]

;

std

::

cin

>>

liczba

[

4

]

;

std

::

cin

>>

liczba

[

5

]

;

std

::

cin

>>

liczba

[

6

]

;

std

::

cin

>>

liczba

[

7

]

;

std

::

cin

>>

liczba

[

8

]

;

std

::

cin

>>

liczba

[

9

]

;

Skoro indeksem jest liczba to równie dobrze może być to zmienna liczbowa, a skoro tak to nic nie stoi na przeszkodzie by wczytywanie

liczb zrobić np. tak:

C/C++

int

liczba

[

10

]

;

int

licznik

=

0

;

do

{

std

::

cin

>>

liczba

[

licznik

]

;

licznik

++

;

}

while

(

licznik

<

10

)

;

Kompletny program demonstrujący połączenie tablic i pętli może więc wyglądać tak:

C/C++

#include <iostream>

int

main

()

{

int

liczba

[

10

]

;

int

licznik

=

0

;

do

{

std

::

cin

>>

liczba

[

licznik

]

;

licznik

++

;

}

while

(

licznik

<

10

)

;

std

::

cout

<<

"Podales nastepujace liczby: "

;

licznik

=

0

;

do

{

std

::

cout

<<

liczba

[

licznik

] <<

", "

;

licznik

++

;

}

while

(

licznik

<

10

)

;

return

0

;

}

Tablice, a stabilność aplikacji

Najczęstszym błędem, jaki jest popełniany przez początkująch programistów (jak również i tych bardziej doświadczonych) jest

wychodzenie poza zakres tablicy. Przykładowo:

C/C++

background image

Strona 3

[lekcja] Tablice jednowymiarowe | Kurs C++ » Poziom 2

2011-11-12 17:09:27

http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Tablice-jednowymiarowe/292

Architektserwisu: Piotr Szawdyński

© Wszelkieprawa zastrzeżone2005-2011

int

tablica

[

10

]

;

tablica

[

10

] =

123

;

//Element o indeksie 10 jest 11 elementem tablicy - piszesz poza tablic

ą

!

Pisząc poza tablicą modyfikujesz wartości innych zmiennych lub kodu maszynowego aplikacji - w efekcie uszkadzasz kod swojego

programu co prowadzi do błędu krytycznego aplikacji. Wychodząc poza zakres tablicy może się zdarzyć również, że podejmiesz próbę

pisania po pamięci innej aplikacji na co współczesne systemy operacyjne nie pozwalają. System operacyjny ochroni Twój komputer przed

taką ewentualnością i wyrzuci błąd krytyczny Twojej aplikacji, zapobiegając jednocześnie możliwości modyfikacji zasobów, które do

Ciebie nie należały.

Uwaga!
Wychodząc poza zakres tablicy narażasz się na błąd krytyczny aplikacji. Pamiętaj więc, aby zwracać szczególną uwagę na indeksy
jakie ustawiasz odwołując się do elementu tablicy.

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. Program ma wykorzystywać tablicę, która zostanie najpierw wypełniona liczbami losowymi z określonego

przedziału, a następnie wynik zostanie obliczony na podstawie zawartości całej tablicy.

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 11] Operacje porównania Kurs C++ » Poziom 1
[lekcja 12] Operacje logiczne Kurs C++ » Poziom 1
[lekcja 7] Przestrzeń nazw std Kurs C++ » Poziom 1
[lekcja 1] Wybieramy środowisko pracy Kurs C++ » Poziom 1
[lekcja 10] Operacje matematyczne Kurs C++ » Poziom 1
[lekcja 9] Obsługa strumienia wejściowego Kurs C++ » Poziom 1
[lekcja 6] Obsługa strumienia wyjściowego Kurs C++ » Poziom 1
[lekcja 3] Uruchamiamy pierwszy program Kurs C++ » Poziom 1
[lekcja 22] Pętla for Kurs C++ » Poziom 2
[lekcja 11] Operacje porównania Kurs C++ » Poziom 1
[lekcja 19] Przekazywanie tablic jednowymiarowych do funkcji Kurs C++ » Poziom 2
[lekcja 20] Funkcje, a słowo kluczowe return Kurs C++ » Poziom 2
[lekcja 13] Instrukcja warunkowa if else Kurs C++ » Poziom 1
[lekcja 15] Pętla do while Kurs C++ » Poziom 2
[lekcja 17] Funkcje pierwsze starcie Kurs C++ » Poziom 2
[lekcja 16] Pseudolosowe liczby całkowite Kurs C++ » Poziom 2
[lekcja 2] Podstawy programowania teoria i terminologia Kurs C++ » Poziom 1
[lekcja 21] Losowanie bez powtórzeń Kurs C++ » Poziom 2
[lekcja 4] Podstawy programowania w C++ Kurs C++ » Poziom 1

więcej podobnych podstron