Reference



Příklad 1:
Napište funkci, která vymění hodnoty dvou proměnných stejného typu (,které jsou jí předány jako parametry pomocí reference), tak aby se výměna projevila i mimo tuto funkci (po jejím ukončení)..

  1. Typ proměnných zvolte jako double. V následujícím volte správné typy/varianty proměnných, se kterými se pracuje (v definicích, v hlavičkách funkcí, při volání funkcí, při práci s proměnnými) – hodnota, ukazatel, reference.

  2. Ve funkci main nadefinujte dvě proměnné typu double Val1 a Val2. Val1 inicializujte na hodnotu 1, Val2 inicializujte na hodnotu 10.

  3. Vytiskněte proměnné Val1 a Val2 na konzolu pomocí streamů (cout<< …). Tento tisk pro Val1 a Val2 následně provádějte po každé výměně prvků.

  4. Ve funkci main vyměňte pomocí pomocné proměnné Pom hodnoty v proměnných Val1 a Val2.

  5. Ve funkci main nadefinujte proměnné typu reference na double Ref1 a Ref2. Ref1 inicializujte jako referenci na proměnnou Val1. Proměnnou Ref2 inicializujte jako referenci na proměnnou Val2.

  6. Ve funkci main vyměňte pomocí pomocné proměnných Pom, Ref1 a Ref2 hodnoty v proměnných Val1 a Val2 (V tomto kroku nepoužívejte přímo proměnné Val, ale pouze reference na ně. Po skončení tohoto kroku by měly mít Val1 a Val2 původní hodnoty z inicializace).

  7. Napište funkci Swap, která bude mít dva parametry typu reference na double aRef1 a aRef2. Tato funkce vymění hodnoty proměnných odkazovaných pomocí reference. Z funkce main zavolejte funkci Swap kde jako parametry použijete proměnné Val1 a Val2. V main ověřte, že došlo k výměně hodnot.

  8. Srovnejte realizaci pomocí ukazatelů (viz minulý kurz) a referencí. Uvědomte si rozdíly v zápisech a v činnosti (předávání a manipulace s parametry).



Příklad 2:
Napište funkci tak aby vrátila prvek struktury (na základě daného kriteria – například minimum), tak aby se s takto vráceným prvkem dalo plnohodnotně pracovat (tj aby se tento vrácený prvek dal měnit a změna se promítla i uvnitř původní struktury – viz příklad níže).

  1. K řešení použijte mechanizmus referencí (návratovou hodnotu funkce). Volte správné varianty předávaných a vracených proměnných – hodnotou, ukazatelem, referencí.

  2. Vytvořte strukturu, která má dva prvky typu double. Ve funkci main vytvořte proměnnou této struktury a inicializujte ji.

  3. Napište funkci FMin, které je předán prvek typu struktura, a která vrátí jednu z proměnných uvnitř struktury (například) tu s menší hodnotou a to tak aby fungoval následující kód:



struct DATA s; // struktura se dvěma proměnnými double – inicializujte na hodnotu -2 a 4
double a;
a = FMin(s); // hodnota menšího z prvků ve struktuře je zapsána do proměnné a
FMin(s) = 10; // menší z prvků proměnné s je nahrazen uvnitř struktury s (je do něj zapsána) hodnotou 10. Toto je možné, je-li prvek vrácen pomocí reference









Poslední změna 2018-09-30