Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Podobne dokumenty
*W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do 6.0)

Podstawy Programowania C++

tablica: dane_liczbowe

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Programowanie w języku C++ Agnieszka Nowak Brzezińska Laboratorium nr 2

Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak:

Język C, tablice i funkcje (laboratorium)

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Język C, tablice i funkcje (laboratorium, EE1-DI)

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Podstawy informatyki I r.

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

Lab 9 Podstawy Programowania

Tablice są typem pochodnym. Poniżej mamy przykłady deklaracji różnych tablic:

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Programowanie 2 - Tablice i łańcuchy

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:

do instrukcja while (wyrażenie);

Tablice jednowymiarowe

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Podstawy Programowania Podstawowa składnia języka C++

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Programowanie w języku Java

Zadania język C++ Zad. 1. Napisz program wczytujący z klawiatury wiek dwóch studentów i wypisujący informację o tym, który z nich jest starszy.

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Podstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017

Proste programy w C++ zadania

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Inicjacja tablicy jednowymiarowej

Laboratorium nr 1. i 2.

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Tablice są typem pochodnym. Poniżej mamy przykłady deklaracji różnych tablic:

Programowanie - instrukcje sterujące

lekcja 8a Gry komputerowe MasterMind

Informatyka I. Wykład 4. Tablice. Dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

1. Napisz program wypisujący w kolejnych wierszach standardowego wyjścia pojedyncze słowa następującego napisu Bardzo dlugi napis. 2.

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

1 Podstawy c++ w pigułce.

Podstawy i języki programowania

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Tablicę 2-wymiarową można przedstawić jako pewien zestaw tablic 1-wymiarowych np.:

Podstawy programowania. Doskonalimy umiejętności

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Powtórka algorytmów. Wprowadzenie do języka Java.

W powyższym kodzie utworzono wyliczenie dni tygodnia.

TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych.

Wprowadzenie do języka Java

Podstawy programowania skrót z wykładów:

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

Spis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

INSTRUKCJE WARUNKOWE. Zadanie nr 1. Odpowiedź. schemat blokowy

8. Wektory. Przykłady Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana.

Algorytmy sortujące i wyszukujące

Podstawy i języki programowania

C-struktury wykład. Dorota Pylak

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

Przeciążanie funkcji. Przykład 1: #include <iostream> using namespace std; double srednia(double n1, double n2) { return ((n1 + n2)/2.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Scenariusz lekcji. rozpoznać prawidłową deklarację tablicy; podać odwołanie do określonego elementu tablicy.

Struktury Struktura polami struct struct struct struct

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Tablice cz. I Tablice jednowymiarowe, proste operacje na tablicach

do drukowania tekstu służy funkcja echo <?php echo "hello world!";?> jeżeli użyjemy jej kilka razy: <?php

Pytania sprawdzające wiedzę z programowania C++

Odczyt danych z klawiatury Operatory w Javie

Programowanie komputerowe. Zajęcia 4

Rekurencja (rekursja)

Język ludzki kod maszynowy

Warsztaty dla nauczycieli

1 Podstawy c++ w pigułce.

Spis treści JĘZYK C - TABLICE DWU- I WIELOWYMIAROWE, OPERACJE NA TABLICACH. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

Struktury, unie, formatowanie, wskaźniki

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Kilka prostych programów

Pętle. Dodał Administrator niedziela, 14 marzec :27

Programowanie komputerowe. Zajęcia 1

* WWW: * * Adres: Instytut Informatyki ul. Będzińska Sosnowiec Pokój 214 * Telefon:

Matlab Składnia + podstawy programowania

Programowanie obiektowe - zadania

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Transkrypt:

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Załóżmy, że uprawiamy jogging i chcemy monitorować swoje postępy. W tym celu napiszemy program, który zlicza, ile czasu poświeciliśmy na bieganie w danym tygodniu. Program wczytuje ile czasu (w godzinach) biegaliśmy danego dnia, oraz wyświetla sumaryczny czas biegania w określonym tygodniu.

Ale co jak chcemy prowadzić statystyki miesięczne? 31 zmiennych? NO WAY!

Tablica (zwana również zmienną tablicową) złożona zmienna, będąca kolekcją ponumerowanych elementów tego samego typu. Innymi słowy jest to ciąg zmiennych tego samego typu. Dni_tygodnia 1h 3 h 2 h 1 h 2 h 2 h 5 h 0 1 2 3 4 5 6 Ciąg taki posiada swoją nazwę, typ wartości jaki przechowuje, a do jego poszczególnych elementów odwołujemy się przez podanie ich numeru. Numer ten zwany jest indeksem. Elementy zawszę są indeksowane od zera! Tablica 7-mio elementowa

Deklaracja tablicy ma z reguły postać: typ nazwa_tablicy[ rozmiar ]; Przykładowa deklaracja: float Dni_tygodnia[7]; Typ elementów tablicy Nazwa tablicy Liczba elementów tablicy lub co lepsze korzystając ze stałej określającej rozmiar tablicy: const int rozmiartab = 7; float Dni_tygodnia[rozmiarTab]; Dlaczego ten sposób zapisu jest lepszy? Należy pamiętać, że elementy tablicy są zawsze indeksowane od zera! Pierwszy ma indeks 0, drugi 1, aż do 6-tego. Dla tablicy o długości N (w tym przypadku 7), indeks jej ostatniego elementu to N 1.

Deklarujemy tablicę 7-elementową. Wpisujemy do każdego elementu tablicy czas biegu. Przechodzimy w pętli przez każdy element tablicy i sumujemy wartości pod konkretnymi indeksami.

Każdy element tablicy jest jak zwykła zmienna określonego typu (int, float, double, char, bool).

Ogólny schemat: for ( int i = 0; i < liczba_elementów; i++) operacja na i-tym elemencie tablicy t: t[i]; Zakładam, że mamy: int tab[20]; Zerowanie tablicy: for ( int i = 0; i < 20; i++) tab[i] = 0; Inicjalizacja kolejnymi liczbami naturalnymi (od zera): for ( int i = 0; i < 20; i++) tab[i] = i; Lokalizacja elementu najmniejszego: int minimum= 32767; //maksymalna wartość jaką przyjmuje typ int int jakiindeks = 0; for ( int i = 0; i < 20; i++) if( tab [i] <= minimum) { minimum= tab[i]; jakiindeks = i; }

Operatory inkrementacji/dekrementacji posiadają dwie formy: Przedrostkową ++zmienna, --zmienna; Przyrostkową zmienna++, zmienna--; Wersja przedrostkowa zwiększa (zmniejsza) wartość zmiennej przed użyciem jej wartości. Wersja przyrostkowa zwiększa (zmniejsza) wartość zmiennej po użyciu jej wartości.

Operator przypisania = ma formy skróconą, jeśli korzysta się z niego w raz z niektórymi innymi typami operatorów.

1. Napisz program wczytujący z klawiatury 10 liczb rzeczywistych. Wczytane liczby należy wypisać na ekranie w odwrotnej kolejności. 2. Napisz program wczytujący z klawiatury 8 liczb całkowitych. Program na wypisać ile z podanych liczb jest parzystych oraz ile z nich jest podzielnych przez 3. 3. Proszę stworzyć program, który zainicjuje tablicę 40 elementową wartościami losowymi z zakresu 10 50. Następnie proszę sprawdzić czy jakikolwiek element w tej tablicy się powtarza. Jeśli tak proszę wyświetlić o jaki element chodzi, oraz ile razy się on powtórzył w tablicy. 4. Napisz program wypełniający tablicę 50- elementową ciągiem 1, 2, 4, 8, 16, 32 2 n.

Istnieje wiele algorytmów sortowania danych. Bardzo dobre ich omówienie znajduje się w książce p. Wirtha pt. Algorytmy + struktury danych = programy. Ponadto polecam stronę: http://edu.i-lo.tarnow.pl/inf/alg/003_sort/index.php Jednym z najprostszych jest algorytm sortowania bąbelkowego. Załóżmy, że mamy ciąg wejściowy [4,2,5,1,7]. Każdy wiersz symbolizuje wypchnięcie kolejnego największego elementu na koniec ("wypłynięcie największego bąbelka"). W każdym przebiegu porównywane są ze sobą dwa kolejne elementy i zamieniane miejscami jeśli ich kolejność się nie zgadza. Jeśli w danym przebiegu nie dokonano żadnej zmiany, algorytm kończy działanie.

5. Proszę stworzyć program, który wpisze do zmiennej tablicowej 10 liczb całkowitych podanych przez użytkownika. Następnie dla danych zawartych w tablicy proszę wyliczyć: Średnią arytmetyczną. Sumę wszystkich elementów. Minimum i maksimum. Liczbę elementów ujemnych. Liczbę elementów parzystych. 6. Proszę stworzyć program, który uzupełni tablicę 100- elementową wartościami losowymi z zakresu -40 do 50. Następnie proszę wyświetlić wypełnioną tablicę. Później, proszę dokonać sortowania jej elementów w porządku malejącym, wykorzystując sortowanie bąbelkowe, oraz wyświetlić posortowaną tablicę.

Załóżmy, że chcemy zaprojektować grę w statki, z udziałem wyłącznie jednomasztowców. Na początku gry użytkownik określa położenie swoich statków na planszy 10 x 10. Obecność statku jest symbolizowana wartością 1. Wartość 0 oznacza brak statku w danym polu. Cała plansza jest następnie wyświetlana użytkownikowi, i może on oddawać strzały, podając odpowiednie współrzędne pól. Możliwe są 3 trafienia.

Do tej pory używaliśmy tablic jednowymiarowych (tożsamych z pojęciem wektora). Ale do gry w statki potrzebna jest plansza 10 x 10 (czyli dwu wymiarowa). Z pomocą przychodzą tablice wielowymiarowe. Ich deklaracja jest bardzo podobna jak znanych już tablic jednowymiarowych. Tablice wielowymiarowe definiujemy podając przy zmiennej kilka wymiarów: float macierz[5][5]; //tablica 2-wymiarowa int tab[2][3][4]; //tablica 3-wymiarowa Tak samo wygląda dostęp do poszczególnych elementów tablicy: macierz[2][3] = 1.5; Aby zainicjować tablicę wielowymiarową należy zastosować zagłębianie klamr, np.: float macierz[3][4] = { { 1.6, 4.5, 2.4, 5.6 }, /* pierwszy wiersz */ { 5.7, 4.3, 3.6, 4.3 }, /* drugi wiersz */ { 8.8, 7.5, 4.3, 8.6 } /* trzeci wiersz */ }; Dodatkowo, pierwszego wymiaru nie musimy określać i wówczas kompilator sam ustali odpowiednią wielkość, np.: float macierz[][4] = { { 1.6, 4.5, 2.4, 5.6 }, /* pierwszy wiersz */ { 5.7, 4.3, 3.6, 4.3 } /* drugi wiersz */ };

Plansza gry to tablica 10 x 10 typu bool. Typ bool służący do przechowywania jednej z dwóch wartości logicznych: true (prawda), lub false (fałsz). Dla nas będzie on oznaczał umiejscowienie statki na danej pozycji (true).

7. Przypomnij sobie tabliczkę mnożenia. Zadeklaruj tablicę 10x10, wypełnij ją tak jak tabliczkę mnożenia. 8. Utwórz tablicę 10x5, wypełnij ją losowymi liczbami całkowitymi [0-20], a następnie sprawdź w którym wierszu jest największa suma (wypisz liczby na ekran, obok podaj sumę każdego wiersza). 9. Zmodyfikuj podany kod gry w statki, tak aby powstały dwie plansze 10 x 10 jedna podawana przez użytkownika, a druga wypełniana w sposób losowy. Następnie dodaj funkcjonalność gry z komputerem komputer oddaje losowy strzał do planszy użytkownika, użytkownik oddaje określony strzał do planszy komputera. Wygrywa ten kto jako pierwszy zatopi wszystkie statki przeciwnika. Dodaj również informację o tym ile jeszcze jednomasztowców zostało do zatopienia. 10. Wypełnij tablicę 10 x 10 wartościami losowymi z zakresu od -20 do 20, a następnie wyznacz sumę elementów na jej prawej przekątnej.