Skip to content

4. Funkcje i tablice

jackflower edited this page Nov 15, 2019 · 5 revisions

Przekazywanie tablic do funkcji

Pamiętaj, że tablice do funkcji zawsze przekazywane są przez wartość. Oznacza to, że zawsze pracujemy na oryginale. Wydaje się to logiczne. Po pierwsze, skoro nazwa tablicy jest adresem jej początku, to odwołując się do niej odczytujemy począwszy od tego adresu jej kolejne elementy. Po drugie - tablice mogą mieć czasami spory rozmiar. Gdyby do funkcji przekazywane były ich kopie - czas kopiowania mógłby znacząco spowalniać działanie programu.

Wyjaśnijmy to na przykładzie

Zadanie

Napisz funkcję, która każdy element tablicy pomnoży przez dwa.

Język C/C++

deklaracja

///
///Funkcja mnoży każdy element tablicy przez dwa
///
///@param tab[] - tablica
///
///@param tab_size - rozmiar tablicy
///
void doublingTab(int tab[], int tab_size);

implementacja

//Funkcja mnoży każdy element tablicy przez dwa
void doublingTab(int tab[], int tab_size)
{
	for (int i = 0; i < tab_size; i++)
		tab[i] = tab[i] * 2;
}

testy np. w pliku main.cpp

#include <iostream>
#include "Functions.h"

int main()
{
	int ten_tab[10] = { 1,2,3,4,5,6,7,8,9,10 };
	doublingTab(ten_tab, 10);
	//po wykonaniu funkcji każdy element tablicy
	//będzie dwa razy większy
	getchar();
	return 0;
}

Zauważ, że wywołując funkcję podajemy tylko jej nazwę (bez nawiasów klamrowych) oraz jej rozmiar.

Język Python

Dla tego języka funkcja wyglądałaby jak poniżej. W pliku SCIPython zdefiniuj poniższą funkcję:

"""
Funkcja mnoży każdy element tablicy przez dwa
"""
def doublingTab(tab, tab_size):
    for i in range(tab_size):
        tab[i] = tab[i] * 2
        pass

testy np. w pliku main.py

import SCIPython

#tablica tab 6-cio elementowa
tab = [1, 23, 4, 6, 12, 7]
print(tab)

SCIPython.doublingTab(tab,6)
print(tab)

Clone this wiki locally