Tablice statyczne
Transkrypt
Tablice statyczne
Podstawy informatyki Informatyka Stosowana Zajęcia nr 8 autor: Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo – Hutnicza im. Stanisława Staszica w Krakowie, Rok akademicki: 2015/2016 Informacje teoretyczne Tablice::Tablice statyczne Odwoływanie się do elementów tablicy: int tab[3] = { 1, 2, 3 }; Wartości: tab[0] = 1; tab[1] = 2; tab[2] = 3; Jeśli umiemy się odwołać do elementu, możemy wywołać na nim: cin>>element; cout<<element; Referencja • Typ referencyjny jest połączeniem funkcjonalności typu wskaźnikowego ze składnią typu bezpośredniego • Definicja zmiennej typy referencyjnego tworzona jest przez dodanie symbolu „&” przez nazwą zmiennej typu wskaźnikowego. Wskaźniki - inicjalizacja • Wskaźnik – zmienna wskaźnikowa – w której zapisywany jest nie obiekt, a adres komórki pamięci, inicjalizowana jest przez dodanie „*” przed nazwą zmiennej; • Dzięki wskaźnikom możemy przechowywać np. adres innej zmiennej oraz umożliwić bezpośredni dostęp do tej zmiennej. Tablice dynamiczne Istnieje możliwość dynamicznej alokacji pamięci dla tablicy przy wykorzystaniu wskaźników. Generujemy wtedy tablicę o zalokowanej pamięci o zadanym rozmiarze. Istnieje możliwość zrobienia też dynamicznej tablicy wielowymiarowej, generuje się wtedy tablicę wskaźników na wskaźniki. int** tab = new int*[a]; Wskaźniki vs tablice Nazwa tablicy jest wskaźnikiem na adres jej pierwszego elementu. int *wsk = tab; Zmienne wskaźnikowe można przesuwać, więc zapis tab[0] = 0; tab[1] = 1; … tab[9] = 9; Jest równoznaczny z: *wsk = 0; *(wsk+1) = 1; … *(wsk+9) = 9; String – tablica charow Aby rozpocząć pracę ze zmiennymi przechowującymi tekst, należy użyć narzędzia: Std::string A także należy dodać plik nagłównowy: #include <string> String – tablica charow Na zmiennej typu string możemy operować tak samo jak każdej innej zmiennej lub tak jak na tablicy charów odwołując się do poszczególnych elementów w tablicy. Możliwe jest dodawanie (sklejanie) zmiennych typu string jednak nie można sklejać w następujący sposób: string zmienna = „nowy ” + „wyraz” Zadania Zadania: 1. Napisz program, który możliwi wczytanie z klawiatury przy pomocy pętli 10 wartości zmiennych typu „string”. Wyświetl na ekranie elementy, które rozpoczynają się na samogłoski. 2. Napisz program w którym użytkownik zostanie poproszony o podanie hasła (przechowane w kodzie jako zmienna const). Jeśli trzykrotnie poda błędne hasło, program zakończy działanie z komunikatem. Zadania: 3. Zmodyfikuj program dla podania PIN’u (4 znaki liczbowe). Napisz prosty craker, który sprawdzi wszystkie możliwe kombinacje oraz wyświetli znaleziony PIN na ekranie (zmierz czas działania programu). 4. Napisz program, który wykona szyfrowanie i odszyfrowanie hasła przy pomocy Szyfru Cezara (pomiń polskie znaki). 5. Zmodyfikuj szyfr cezara by działał dla uniwersalnego klucza (wielkość przesunięcia) Zadania 6. - Napisz prosty craker haseł dla znaków ASCII: Tylko dużych Tylko małych Dużych i małych Wykonaj testy prędkości łamania hasła dla: - Ilości znaków 4-8, - Kombinacji przedziałów znaków TABLICA ASCII Prezentacja udostępniona na licencji Creative Commons: Uznanie autorstwa, Na tych samych warunkach 3.0. Pewne prawa zastrzeżone na rzecz autorów. Zezwala się na dowolne wykorzystywanie treści pod warunkiem wskazania autorów jako właścicieli praw do prezentacji oraz zachowania niniejszej informacji licencyjnej tak długo, jak tylko na utwory zależne będzie udzielana taka sama licencja. Tekst licencji dostępny jest na stronie: http://creativecommons.org/licenses/by-sa/3.0/deed.pl