tablica: dane_liczbowe

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

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

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

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

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

4) Operacje na tablicy dwuwymiarowej bez wykorzystywania indeksów liczbowych:

Języki programowania - podstawy

Podstawy Programowania C++

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

INSTRUKCJE REPETYCYJNE PĘTLE

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Język C, tablice i funkcje (laboratorium)

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Podstawy programowania. Wykład: 6. Tablice statyczne. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

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

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

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

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Wstęp do Informatyki

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

Co nie powinno być umieszczane w plikach nagłówkowych:

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury

Operacje wejścia/wyjścia odsłona pierwsza

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

Wstęp do programowania

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

METODY I JĘZYKI PROGRAMOWANIA. Programowanie w języku C notatki z wykładów

Część 4 życie programu

( wykł. dr Marek Piasecki )

DYNAMICZNE PRZYDZIELANIE PAMIECI

Stałe, tablice dynamiczne i wielowymiarowe

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

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

Podstawy programowania w języku C i C++

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

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

INSTRUKCJE REPETYCYJNE PĘTLE

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

O podstawowych operacjach na tablicach. Mateusz Ziółkowski, MBiU II

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

1 Podstawy c++ w pigułce.

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!

Programowanie - wykład 4

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Pytania sprawdzające wiedzę z programowania C++

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

C-struktury wykład. Dorota Pylak

r. Tablice podstawowe operacje na tablicach

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Programowanie i struktury danych

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Wstęp do programowania

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

ECLIPSE wnioski z dwóch pierwszych laboratoriów

struct Student { char nazwisko[30]; int wiek; float ocena; }; #define MAX_ROZMIAR 3 Student lista_studentow[max_rozmiar];

Wstęp do programowania

Zmienne i struktury dynamiczne

Język C++ zajęcia nr 2

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata

Podstawy algorytmiki i programowania - wykład 1 Tablice powtórzenie Tablice znaków Tablice dwuwymiarowe

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

Tablice. int rozmiar; cout << Jaki ma być rozmiar tabeli? ; cin >> rozmiar; { int tablica[rozmiar]; /* TU JEST ŹLE */... }

Podstawy Programowania. Specyfikacja funkcji, operacje wejścia i wyjścia na plikach, rekurencja, tablice i wskaźniki

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

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

Ćwiczenie 5 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Programowanie strukturalne i obiektowe

Struktury Struktura polami struct struct struct struct

Wstęp do programowania

Język C zajęcia nr 11. Funkcje

1 Podstawy c++ w pigułce.

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

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

C-struktury wykład. Dorota Pylak

Tablice deklaracja, reprezentacja wewnętrzna

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

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Programowanie obiektowe W3

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

2 Przygotował: mgr inż. Maciej Lasota

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37

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

Inicjacja tablicy jednowymiarowej

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd.

Wstęp do wskaźników w języku ANSI C

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

Spis treści JĘZYK C - TABLICE DWUWYMIAROWE, OPERACJE NA TABLICACH. Metodyki i techniki programowania

Transkrypt:

TABLICE W JĘZYKU C/C++ tablica: dane_liczbowe float dane_liczbowe[5]; dane_liczbowe[0]=12.5; dane_liczbowe[1]=-0.2; dane_liczbowe[2]= 8.0;... 12.5-0.2 8.0...... 0 1 2 3 4 indeksy/numery elementów Tablica jest reprezentacją umożliwiającą zgrupowanie kilku danych tego samego typu i odwoływanie się do nich za pomocą wspólnej nazwy. Jest to jeden z najczęściej wykorzystywanych typów danych. Ogólna postać definicji tablicy: typ_elementu nazwa_tablicy [ liczba_elementów ] ; np. float dane_liczbowe[ 5 ]; // 5-cio elementowa tablica liczb rzeczywistych int tab[ 10 ]; // 10-cio elementowa tablica liczb całkowitych char tekst[ 255 ]; // 255-cio elementowa tablica znaków double ( funkcje[ 20 ]) (double,double); // tablica 20 wskaźników na funkcje M.Piasecki: PODSTAWY PROGRAMOWANIA 1 (W4) Tablice w języku C/C++

Uwagi o tablicach: Ważną cechą tablic jest reprezentacja w postaci spójnego obszaru pamięci oraz równomierne rozmieszczenie kolejnych elementów bezpośrednio jeden po drugim. Dzięki takiej reprezentacji możliwe jest szybkie wyliczanie położenia zadanego elementu w pamięci operacyjnej (na podstawie jego numeru porządkowego - indeksu) oraz znaczne skrócenie kodu przetwarzającego duże tablice poprzez zastosowanie instrukcji pętlowych. Elementy tablicy są indeksowane od zera! W języku C i C++ nie jest sprawdzana poprawność (zakres) indeksów! Często jest to przyczyną trudnych do wykrycia błędów. Na przykład przy definicji: float dane_liczbowe[5]; instrukcja: dane_liczbowe[5]=10.5; niszczy / zamazuje zawartość pamięci zaraz po ostatnim elemencie tej tablicy. Nazwa tablicy jest jednocześnie adresem pierwszego elementu tej tablicy, tzn. nazwa_tablicy == &nazwa_tablicy[0] Zwykła tablica nie przechowuje informacji o liczbie swoich elementów. Uwaga! Polecenie: sizeof( ) nie zwraca rozmiaru w sensie liczby elementów. Definicja tablicy wielowymiarowej: typ_elementu nazwa_tablicy [wymiar_1] [wymiar_2] [wymiar_3]... ; np. char kostka_rubika [ 3 ][ 3 ][ 3 ]; float macierz [ 5 ] [ 2 ]; // dwuwymiarowa tablica: 5 wierszy po 2 kolumny, 0, 0 0, 1 1, 0 1, 1 1, 2 2, 0 2, 1 3, 0 3, 1 4, 0 4, 1 reprezentacja tej macierzy w pamięci komputera 0, 0 0, 1 1, 0 1, 1 2, 0 2, 1 3, 0 3, 1 4, 0 4, 1 macierz[ 1 ][ 2 ] M.Piasecki: PODSTAWY PROGRAMOWANIA 2 (W4) Tablice w języku C/C++

Definicję tablicy można połączyć z inicjalizacją jej zawartości: int tab[ 10 ]; // sama definicja bez inicjalizacji int tab_inicjalizowana[ 10 ] = 20, -3, 12, 1, 0, 7, -5, 100, 2, 5 ; char tab_znakow[ 5 ] = a, B, \n, 1, \0 ; float macierz_a[ 3 ][ 2 ] = 1,1, 3.5,7.0, -15,100 ; float macierz_b[ 3 ][ 2 ] = 1, 1, 3.5, 7.0, -15, 100 ; Kolejne inicjalizatory zawsze wstawiane są do kolejnych komórek tablicy (w związku z tym można pominąć wewnętrzne nawiasy klamrowe). Jeżeli lista inicjalizatorów jest krótsza niż ilość elementów tablicy to pozostałe elementy są uzupełniane zerami lub wskaźnikami NULL np. definicja: int tab[ 10 ] = 20, -3, 12, 1 ; jest równoważna: int tab[ 10 ] = 20, -3, 12, 1, 0, 0, 0, 0, 0, 0 ; a definicja: float macierz[ 3 ][ 2 ] = 1, 3.5,7.0 ; jest równoważna: float macierz[ 3 ][ 2 ] = 1,0, 3.5,7.0, 0,0 ; lub: float macierz[ 3 ][ 2 ] = 1, 0, 3.5, 7.0, 0, 0 ; W języku C inicjalizatorami muszą być stałe, natomiast w języku C++ inicjalizatorami mogą być zarówno stałe jak i zmienne. Wykorzystanie stałych do definiowania ilości elementów tablicy: int tablica [ 100 ] ; #define ROZMIAR 100 int tablica [ ROZMIAR ] ; const int ROZMIAR_2 = 100 ; int tablica_2 [ ROZMIAR_2 ] ; for( int i=0 ; i < ROZMIAR ; i++ ) printf ( %d, tablica[ i ] ); // rozmiar zadany bezpośrednio // definicja stałej w stylu języka C // definicja stałej w stylu języka C++ // przykład dalszego wykorzystania stałej M.Piasecki: PODSTAWY PROGRAMOWANIA 3 (W4) Tablice w języku C/C++

Podstawowe operacje na elementach tablicy #include <stdio.h> int main( ) const ROZM = 4 ; int Tab [ ROZM ] ; // bezpośrednie przypisanie wartości Tab[ 0 ] = 0 ; Tab[ 1 ] = 10 ; Tab[ 2 ] = - 20 ; Tab[ 3 ] = 3 ; // wczytanie zawartości z klawiatury scanf( %d, &Tab[ 0 ] ) ; scanf( %d %d, &Tab[ 1 ], &Tab[ 2 ] ) ; printf( Podaj 4 element tablicy = ); scanf( %d, &Tab[ 3 ] ) ; // prymitywne sumowanie wartości elementów tablicy long suma = Tab[0] + Tab[1] + Tab[2] + Tab[3] ; // wyświetlanie zawartości elementów tablicy printf( Tab[1] = %5d, Tab[0] ); printf( Tab[2] = %5d, Tab[1] ); printf( Tab[3] = %5d, Tab[2] ); printf( Tab[4] = %5d, Tab[3] ); // pośrednie zadawanie wartości indeksu za pomocą zmiennej pomocniczej int i = 2 ; Tab[ i ] = 10; // równoważne poleceniu: Tab[ 2 ] = 10; // zadawanie indeksu elementu z klawiatury printf( Podaj indeks elementu którego wartość chcesz wczytać ); scanf( %d, &i ); printf( Podaj nową wartość Tab[ %d ] =, i ); scanf( %d, &Tab[ i ] ); printf( Nowa wartość Tab[ %d ] wynosi %d, i, Tab[ i ] ); M.Piasecki: PODSTAWY PROGRAMOWANIA 4 (W4) Tablice w języku C/C++

Zastosowanie instrukcji repetycyjnej for do operacji na tablicach #include <stdio.h> int main( void ) #define ROZMIAR 10 float tablica[ ROZMIAR ]; int i ; // definicja tablicy liczb rzeczywistych // inicjalizacja zawartości tablicy kolejnymi liczbami parzystymi: 0,2,4,6,... tablica[ i ] = 2 i ; // --------------------- wczytanie zawartości elementów tablicy z klawiatury printf( Podaj Tab[%2d] =, i+1 ); scanf( %f, &tablica[ i ] ); // ----------------------------------- wyświetlenie zawartości elementów tablicy printf( Tab[%2d] = %10.3f, i+1, tablica[ i ] ); //-------------------------------------- zsumowanie wartości elementów tablicy float suma = 0 ; suma = suma + tablica[ i ]; // suma += tablica[ i ]; printf( Suma wartości elementów tablicy wynosi: %.2f, suma ); //------------------------- zliczenie ilości elementów o dodatnich wartościach int ilosc = 0 ; if( tablica[ i ] > 0 ) ilosc = ilosc + 1 ; // ilość += 1; lub ilość++; if( ilość>0 ) printf( Ilość dodatnich elementów = %d, ilosc ); else printf( W tablicy nie ma ani jednego dodatniego elementu ); M.Piasecki: PODSTAWY PROGRAMOWANIA 5 (W4) Tablice w języku C/C++

cd. Przykłady algorytmów tablicowych (z pętalmi typu for ) #include <iostream> using namespace std; int main( void ) const int ROZMIAR = 10; int i, tablica[ ROZMIAR ]; //----------- wczytanie liczb z klawiatury cout << Tab[ << (i+1) << ] = ; cin >> tablica[ i ]; int ilosc=0; //--------------------------- zliczanie elementów niezerowych if( tablica[ i ] ) ilosc++; int suma=0; //---------------- wyznaczenie średniej z ujemnych wartości ilosc=0; if( tablica[ i ] < 0 ) suma += tablica[ i ]; ilosc++; if( ilosc ) srednia = (double)suma / ilosc; cout << endl << "Srednia ujemnych = " << srednia ; else cout << endl << "Nie ma elementow o ujemnych wartościach" ; int max=tablica[0]; // wyznaczenie wartości i pozycji maksimum int poz=0; for( i=1; i<rozmiar ; i++ ) if( max < tablica[ i ] ) max = tablica[ i ]; poz = i ; cout << endl << "Najwieksza wartosc jest rowna: " << max; cout << endl << "i wystapila na pozycji: " << (poz+1); M.Piasecki: PODSTAWY PROGRAMOWANIA 6 (W4) Przetwarzanie tablic

Negatywne przykłady programowania z innymi pętlami niż for #include <stdio.h> // Uwaga: przetwarzanie tablic innymi pętlami niż for int main( void ) // często pogarsza czytelność kodu #define ROZMIAR 10 int i=0, tab[ ROZMIAR ]; while(i < ROZMIAR) //----------- wczytanie liczb z klawiatury printf( Tab[%2d] =, i+1 ); scanf( %d, &tab[ i ] ); i = i+1; i=0; int ilosc=0; //--------------------------- zliczanie elementów niezerowych while( ROZMIAR i ) if( tab[i++] ) ilosc++; int suma=0; //---------------- wyznaczenie średniej z ujemnych wartości ilosc=0; i=0; do if( tab[ i ] < 0 ) suma += tab[ i ]; ilosc++; while( ++i < ROZMIAR ); if( ilosc ) srednia = (double)suma / ilosc; printf( "\nsrednia ujemnych = %.2f", srednia ); else printf( "\nnie ma elementow o ujemnych wartościach" ); int max=tab[0]; //------------- wyznaczenie wartości i pozycji maksimum int poz=0; while( --i ) // z poprzedniej pętli pozostało i==11 if( max < tab[ i ] ) max = tab[ i ]; poz = i ; printf( "\nnajwieksza wartosc jest rowna %d", max ); printf( "i wystapila na pozycji %d", poz+1 ); M.Piasecki: PODSTAWY PROGRAMOWANIA 7 (W4) Przetwarzanie tablic

Przykłady funkcji operujących na tablicach #include <stdio.h> #include <conio.h> #define ROZMIAR 10 void WczytajTablice( double tablica[ ] ) clrscr(); printf( Podaj wartości elementów tablicy \n ); for( int i = 0 ; i < ROZMIAR ; i++ ) printf( Tab[%2d] =, i+1 ); scanf( %lf, &tablica[ i ] ); //----------------------------------------------------------------- funkcja WczytajTablicę void WyswietlTablice( double tablica[ ] ) clrscr(); printf( Wartości elementów tablicy są równe: \n ); for( int i = 0 ; i < ROZMIAR ; i++ ) printf( Tab[%2d] = %f, i+1, tablica[ i ] ); printf( Nacisnij dowolny klawisz ); getch(); //--------------------------------------------------------------- funkcja WyswietlTablicę void DodajTablice(double wejscie_1[ ], double wejscie_2[ ], double wynik[ ]) for( int i = 0 ; i < ROZMIAR ; i++ ) wynik[ i ] = wejscie_1[ i ] + wejscie_2[ i ] ; //------------------------------------------------------------------ funkcja DodajTablice int main( void ) double A[ ROZMIAR ] ; double B[ ROZMIAR ], C[ ROZMIAR ] ; WczytajTablice( A ); WyswietlTablice( A ); WczytajTablice( B ); DodajTablice( A, B, C ); WyswietlTablice( C ); M.Piasecki: PODSTAWY PROGRAMOWANIA 8 (W4) Definiowanie własnych funkcji