bez nazwy
Dodano w dniu 2018-11-27 przez niezarejestrowanego użytkownika
Przystosuj do skopiowania Zgłoś
Ćwiczenia

1. Przeanalizuj działanie poniższego kodu. Czym różni się działanie dwóch wykorzystanych metod?

static void zwiekszWartosc(int liczba) //przekazywanie argumentu przez wartość
{
     liczba++;
     Console.WriteLine(liczba);
}
static void zwiekszWartosc(ref int liczba) //przekazywanie argumentu przez referencję
{
     liczba++;
     Console.WriteLine(liczba);
}
static void Main(string[] args)
{
     int liczba = 5;
     Console.Write("Wynik metody1: ");
     zwiekszWartosc(liczba);
     Console.Write("Zmienna po działaniu metody1: ");
     Console.WriteLine(liczba);
     Console.Write("Wynik metody2: ");
     zwiekszWartosc(ref liczba);
     Console.Write("Zmienna po działaniu metody2: ");
     Console.WriteLine(liczba);
     Console.ReadKey();
}

UWAGA:
Tablice są domyślnie przekazywane przez referencję.

2. Wyobraź sobie, że tworzysz system, który przetwarza dane pracowników firmy, w której pracuje 50 kobiet i 3 mężczyzn. W systemie ma istnieć metoda, która wyświetla imię, nazwisko i płeć pracownika, wprowadzanego przez użytkownika.

static void wyswietlDane(string imie, string nazwisko, char plec = 'K')
{
     Console.WriteLine("Imię: {0} Nazwisko: {1} Płeć: {2}", imie, nazwisko, plec);
}
static void Main(string[] args)
{
     wyswietlDane("Anna", "Kowalska");
     wyswietlDane("Jan", "Nowak", 'M');
     Console.ReadKey();
}

UWAGA:
Argumenty przyjmujące wartości domyślne muszą być umieszczone na końcu listy argumentów w deklaracji metody.

3. Napisz program, zawierający metodę pozwalającą na wyliczenie silni z liczby naturalnej.

a) rozwiązanie iteracyjne (obliczanie krok po kroku)

// SAMODZIELNIE

b) rozwiązanie rekurencyjne (obliczanie przez wywołanie samej siebie)

static int silnia(int liczba)
{
     if (liczba == 0 || liczba == 1)
     {
return 1;
     }
     else
     {
return liczba * silnia(liczba - 1);
     }
}
static void Main(string[] args)
{
     Console.WriteLine(silnia(4));
     Console.ReadKey();
}

-
Zadania

1. Napisz metodę przelicznikWalut(), która będzie przeliczała przekazaną jako argument wartość w złotówkach na dowolną walutę. Domyślnie metoda ma przeliczać złotówki na Euro, ale może to być również dowolna inna waluta o nazwie i kursie określonym przez użytkownika w argumentach metody.

Przykłady wywołań:
a)
przelicznikWalut(2.25)
WYNIK:
2,25 PLN to 0,54 EUR

b)
przelicznikWalut(2.25,0.279,"USD")
WYNIK:
2,25 PLN to 0,63 USD

2. Napisz program, w którym przetestujesz, czy rzeczywiście tablice domyślnie przekazywane są przez referencję.

3. W firmie, w której pracujesz dotychczas pracownikom przypisywano identyfikatory według schematu: imie_nazwisko_unikatowyNumer, np. Jan_Nowak_21. Nastąpiły zmiany organizacyjne i od teraz identyfikator ma przyjmować postać: małaPierwszaLiteraImieniaNazwiskoMałąLiterąNumer, np. jnowak21. Tobie zlecono przygotowanie programu, który automatycznie przerobi stare identyfikatowy na nowe. Napisz metodę, która przyjmuje argument typu string (stary identyfikator) przez referencję i generuje nowy identyfikator.

Wskazówka:
Metoda char.ToLower(char c) pozwala na zamianę pojedynczego znaku na mały.

4. Napisz program, który wylicza wartość n-tego wyrazu ciągu Fibonacciego z użyciem metody rekurencyjnej.

5. Liczby trójkątne tworzą ciąg nieskończony: 1,3,6,10,15,21,28,... n-ty wyraz ciągu otrzymujemy dodając n do poprzedniego wyrazu. Napisz program (przy użyciu rekurencji), który prosi o podanie wartości n i zwraca n-ty wyraz ciągu liczb trójkątnych.

6. Napisz program z metodą, która przyjmuje jako argument jednowymiarową tablicę liczb całkowitych. Wewnątrz metody program ma pytać użytkownika o to, który element tablicy chce wyświetlić (użytkownik podaje indeks). Zabezpiecz program przed podaniem indeksu spoza zakresu tablicy. Wykorzystaj w tym celu konstrukcję try-catch-finally (poznaną na zajęciach na temat instrukcji warunkowych), wychwytującą wyjątek IndexOutOfRangeException.

7. Co będzie wynikiem uruchomienia poniższych programów? Odpowiedz, nie uruchamiając kodu, a następnie sprawdź poprawność swojej odpowiedzi.

a)
static int obliczWyraz(int n)
{
     if (n == 1)
     {
return 3;
     }
     else
     {
return (2 * obliczWyraz(n - 1));
     }
}
static void Main()
{
     Console.WriteLine(obliczWyraz(4));
     Console.ReadKey();
}

b)
static void obliczN(ref int n)
{
     n = n++ / 2;
     n = n >= 3 ? 2 : 9;
     n %= 3;
     ++n;
}
static void Main()
{
     int liczba = 5;
     obliczN(ref liczba);
     Console.WriteLine(liczba);
     Console.ReadKey();
}

c)
static void sprawdzWyraz(string napis, string napis2 = "czekolada")
{
     if (napis.Length == napis2.IndexOf('e'))
     {
Console.WriteLine("TAK!");
     }
     else
     {
Console.WriteLine("NIE!");
     }
}
static void Main()
{
     sprawdzWyraz("xD");
     sprawdzWyraz("ciastko", "karmel");
     Console.ReadKey();
}

Czynności negatywnie wpływające na pracę strony i działające na niekorzyść, bądź wręcz szkodę użytkowników, są zabronione i będą karane!
Administrator strony nie bierze odpowiedzialności za dodawane treści
Wszystkie treści, zwłaszcza łamiące zasady dobrej etyki, mogą zostać zmoderowane w każdej chwili po uprzednim kontakcie z Administratorem
FAQ | Wykonał Piotr Greczka | Facebook twórcy (kontakt)