-
Notifications
You must be signed in to change notification settings - Fork 3
4. Funkcje i tablice
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
Napisz funkcję, która każdy element tablicy pomnoży przez dwa.
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.
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
passtesty 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)