Język C, tablice i funkcje (laboratorium)

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

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

1 Podstawy c++ w pigułce.

tablica: dane_liczbowe

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

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

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

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

Programowanie strukturalne i obiektowe. Funkcje

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 zajęcia nr 11. Funkcje

Wstęp do informatyki- wykład 11 Funkcje

Podstawy Programowania C++

Wstęp do informatyki- wykład 9 Funkcje

2 Przygotował: mgr inż. Maciej Lasota

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

1 Podstawy c++ w pigułce.

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

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

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

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

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

Część 4 życie programu

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

Funkcje. Wprowadzenie. Mirosław Ochodek

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

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

7. Pętle for. Przykłady

Lab 9 Podstawy Programowania

Wstęp do Programowania, laboratorium 02

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

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

4. Funkcje. Przykłady

Tablice, funkcje - wprowadzenie

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

Proste programy w C++ zadania

Funkcje i tablice. Elwira Wachowicz. 23 maja 2013

W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. for (w1;w2;w3) instrukcja

Spis treści JĘZYK C - TABLICE JEDNOWYMIAROWE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF05Z

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

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

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

int tab1[30]; // 30-elementowa tablica elementów typu int char tekst[10]; // 10-elementowa tablica elementów typu char (tablica tekstowa)

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

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

Funkcja (podprogram) void

1 Powtórzenie wiadomości

Język C++ zajęcia nr 2

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

C-struktury wykład. Dorota Pylak

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

5 Przygotował: mgr inż. Maciej Lasota

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

Programowanie - wykład 4

I. Podstawy języka C powtórka

Pytania sprawdzające wiedzę z programowania C++

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

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

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

Wstęp do programowania

Stałe, tablice dynamiczne i wielowymiarowe

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Laboratorium nr 10. Temat: Funkcje cz.2.

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

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

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

Programowanie strukturalne i obiektowe

Wstęp do informatyki- wykład 9 Pętla while, do while,for -pętla w pętli- przykłady Funkcje

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Metody Metody, parametry, zwracanie wartości

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Rekurencja (rekursja)

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

Warsztaty dla nauczycieli

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

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

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

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

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

Dodatkowo klasa powinna mieć destruktor zwalniający pamięć.

Podstawy informatyki. Informatyka Stosowana Zajęcia nr 5. autor: Grzegorz Smyk

Spis treści JĘZYK C - TABLICE DWUWYMIAROWE, OPERACJE NA TABLICACH. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

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

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Wskaźniki w C. Anna Gogolińska

C-struktury wykład. Dorota Pylak

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

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

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

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

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

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

Ćwiczenie 1. Wprowadzenie do programu Octave

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

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Podstawy informatyki. Informatyka Stosowana Zajęcia nr 6. autor: Grzegorz Smyk

Transkrypt:

Język C, tablice i funkcje (laboratorium) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci. Tablica w języku C jest identyfikowana przez nazwę (identyfikator), a do konkretnych elementów można odwołać się poprzez indeks. Tablicę definiuje się w następujący sposób typ nazwa_tablicy[rozmiar_tablicy]; Typ jest typem (np. int, char, long) elementów przechowywanych w tablicy. Rozmiar tablicy to liczba całkowita określająca liczbę przechowywanych w tablicy elementów. Liczba ta musi być wartością stałą, znaną na etapie kompilacji. Przykłady definicji tablic int pomiary[10]; //10-elementowa tablica liczb calkowitych double fun[25]; //25-elementowa tablica liczb zmiennoprzecinkowych char imie[64]; //64-elementowa tablica znakow int wsp[3] = 34, 12, 99; //definicja tablicy z inicjalizacja - nadaniem //wartosci poczatkowych kolejnym elementom Do elementów tablicy odwołujemy się najczęściej poprzez operator indeksowania [], podając numer elementu: nazwa_tablicy[nr_elementu]; na przykład a = pomiary[0]; //podstawienie do zmiennej a wartości pierwszego //elementu tablicy printf("%d",pomiary[5]); //wypisanie piątego elementu tablicy pomiary[7] = 11; //przypisanie do siódmego elementu tablicy wartosci 11 UWAGA! Tablice w języku C są indeksowane od 0 (pierwszy element) do ROZMIAR_TABLICY-1 (ostatni element), np. tablica pomiary, której definicję podano powyżej, zawiera elementy o indeksach 0,1,2,3,4,5,6,7,8,9. Należy zwracać uwagę na nieprzekraczanie zakresu tablicy, gdyż może to spowodować otrzymanie dziwnych danych lub wystąpienie błędu naruszenia ochrony pamięci. Do wykonywania operacji na elementach tablicy często używa się pętli. Przykłady (tablice) Wczytywanie elementów tablicy int tab[10]; //definicja tablicy, elementy 0..9 //licznik petli for (i=0; i<10; i++)

scanf("%d",&tab[i]); Wczytywanie określonej (podanej przez użytkownika) liczby elementów tablicy W tym i kolejnych przykładach rozmiar tablicy definiowany jest jako stała ROZMIAR_TAB. Jeżeli okaże się, że konieczne jest np. zwiększenie rozmiaru, wystarczy dokonać zmiany tylko w jednym miejscu nie trzeba przeglądać wszystkich warunków w pętlach odwołujących się do tablicy itp.. //'stala' rozmiar tablicy #define ROZMIAR_TAB 10 int tab[rozmiar_tab]; //definicja tablicy, elementy 0..9 //licznik petli int N; //liczba elementow do wczytania podaje uzytkownik printf("ile elementow tablicy wczytac (max. 10): "); scanf("%d",&n); //sprawdzenie, czy N elementow zmiesci sie w tablicy if (N<=ROZMIAR_TAB) for (i=0; i<n; i++) printf("podaj element nr %d:",i); scanf("%d",&tab[i]); else printf("tablica może zawierac max. %d elementow!",rozmiar_tab); Dla zainteresowanych: #define NAZWA CZYM_ZASTAPIC jest dyrektywą preprocesora, tzw. makrodefinicją. Wystąpienie takiej dyrektywy powoduje, że przed kompilacją programu preprocesor podmienia w kodzie źródłowym (tym przekazywanym kompilatorowi, nie edytowanym przez programistę!) wszystkie wystąpienia NAZWA poprzez CZYM_ZASTAPIC. Obliczanie sumy elementów w tablicy liczb całkowitych //'stala' rozmiar tablicy #define ROZMIAR_TAB 5 //inicjalizacja tablicy przykladowymi wartosciami int tab[rozmiar_tab] = 1, 33, 66, 77, 21; //licznik petli int suma = 0; //suma elementow tablicy for (i=0; i<rozmiar_tab; i++) suma+=tab[i]; //odpowiednik suma=suma+tab[i]

printf("suma elementow tablicy wynosi %d", suma); Tablice wielowymiarowe przykład float macierz[10][10]; macierz[1][2]=3.0f; Wstęp (funkcje) Funkcja (podprogram) jest wydzieloną częścią programu, wykonująca określone instrukcje. Może przyjmować argumenty (parametry) i zwracać w wyniku działania wartość. Funkcja może zostać wywołana z poziomu innej funkcji (np. z poziomu głównego programu - funkcji main) lub wywoływać samą siebie (rekurencja). Dzięki funkcjom unika się powielania kodu, a tworzony program łatwiej jest modyfikować. Ogólny schemat definicji funkcji: typ_zwracany nazwa_funkcji(typ1 argument1, typ2 argument2, typ_n argument_n) /* instrukcje */ Funkcja może nie zwracać żadnej wartości, wtedy jako typ_zwracany podaje się void. Jeżeli funkcja nie przyjmuje żadnych parametrów, jej definicja wygląda następująco: typ_zwracany nazwa_funkcji(void) /* instrukcje */ Ogólny schemat wywołania funkcji: nazwa_funkcji(argument1, argument2, argumentn); //przypisanie wartosci zwroconej przez funkcje do zmiennej zmienna=nazwa_funkcji(argument1, argument2, argumentn); //jeżeli funkcja nie przyjmuje żadnych argumentów puste nawiasy okragle nazwa_funkcji2(); Deklaracja funkcji Nazwa, parametry i wartość zwracana przez funkcję powinny być znane kompilatorowi w miejscu jej wywołania. W tym celu stosuje się deklarację (prototyp) funkcji, tj. nagłówek funkcji zakończony średnikiem. Przykład typ_zwracany nazwa_funkcji(void); Funkcja dla której podano deklarację, musi zostać zdefiniowana w obrębie programu. Uwaga: Deklaracja funkcji nie jest konieczna, jeżeli przed miejscem wywołania funkcja została już zdefiniowana. Częstą praktyką (w obrębie pojedynczego pliku źródłowego) jest umieszczanie deklaracji własnych funkcji przed definicją main, a definicji tychże funkcji po definicji funkcji main (przykład poniżej).

Przykład deklaracji, definicji i wywołania funkcji //deklaracja funkcji suma //funkcja przyjmuje 2 parametry calkowitoliczbowe //w wyniku jej dzialania zwracana jest liczba calkowita int suma(int x, int y); //uwaga: deklaracja nie jest konieczna, w tym miejscu mogłaby się pojawić //definicja int x=1; int rezultat = suma(x,3); printf("rezultat funkcji: %d",rezultat); //mozna tez tak, bez dodatkowej zmiennej pomocniczej printf("rezultat funkcji: %d",suma(x,3)); //definicja funkcji suma int suma(int x, int y) int s = x + y; //obliczenie sumy argumentow x i y return s; //i jej zwrocenie Zdefiniowana została funkcja suma, przyjmująca 2 parametry całkowitoliczbowe x, y i zwracająca w wyniku działania liczbę całkowitą. Ciało funkcji (operacje które wykonuje) jest zawarte w nawiasach klamrowych. Instrukcja return w ciele powoduje zakończenie jej wykonywania ze zwróceniem wyrażenia podanego po return jako wyniku. Wywołanie funkcji odbywa się poprzez podanie jej nazwy i argumentów oddzielonych przecinkami. Jeżeli funkcja zwraca wynik, można go np. przypisać do zmiennej, jak w przykładzie powyżej. Uwaga! W języku C argumenty funkcji są przekazywane przez wartość. Przy wywołaniu funkcji tworzone są lokalne kopie przekazywanych argumentów i wewnątrz funkcji operuje się na tych kopiach. Oznacza to, że przekazywane argumenty nie ulegają zmianie. Przykład: void dokwadratu(int x) printf("funkcja dokwadratu poczatek, x=%d",x); x*=x; //odpowiada x=x*x; printf("funkcja dokwadratu po wykonaniu operacji, x=%d",x); int liczba=5; printf("liczba przed wywolaniem dokwadratu: %d",liczba); //wywolanie funkcji dokwadratu, zmienna liczba jest kopiowana do argumentu x //funkcji! dokwadratu(liczba);

//wartosc zmiennej liczba nie zostanie zmodyfikowana, funkcja pracuje na //kopii printf("liczba po wywolaniu dokwadratu: %d",liczba); Przykład przekazywania do funkcji argumentów będących tablicami int sumuj(int tab[], int rozmiar) int suma = 0; for (i=0; i<rozmiar; ++i) suma += tab[i]; return suma; int liczby[] = 1, 3, 6, 7, 2 ; int suma = 0; suma = sumuj(liczby, 5); Zadania 1. Napisz program, który wczyta N liczb całkowitych do tablicy i obliczy sumę liczb dodatnich i ujemnych. Przykładowe działanie programu (wartości wpisywane z klawiatury zostały pogrubione): Ile elementow tablicy wczytac? 5 Podaj kolejne elementy: 2 3-5 -11 4 Suma dodatnich: 9 Suma ujemnych: -16 2. Napisz program, który wczyta ciąg N liczb, a następnie wypisze liczby, które się powtarzają. Ile elementow tablicy wczytac? 7 Podaj kolejne elementy: 11 55 11 22 34 22 11 Powtórzenia: 11 22 3. Napisz, a następnie wywołaj w programie funkcję wyznaczającą wartość bezwzględną liczby przekazanej jako parametr. 4. Napisz, a następnie wywołaj w programie funkcję wyznaczającą średnią dwóch liczb zmiennoprzecinkowych 5. Napisz, a następnie wywołaj w programie funkcję przyjmującą 2 parametry liczbowe (np. N i X), która obliczy N-tą potęgę liczby X (bez wykorzystania funkcji pow z biblioteki standardowej). 6. Wewnątrz funkcji z punktu 4 oblicz średnią wartości bezwzględnych argumentów (przy pomocy funkcji z punktu 3). Przykładowe działanie programu: Podaj X: -4 Podaj Y: 6

'Srednia': 5 7. Napisz a następnie wywołaj w programie funkcję sprawdzającą, czy liczba podana jako parametr jest liczbą pierwszą. Podpowiedź: wykorzystaj operator reszty z dzielenia (%). 8. Napisz funkcję przyjmującą jako argumenty tablicę liczb całkowitych i rozmiar tej tablicy. Funkcja ma modyfikować zawartość tablicy tak, że i-ty element będzie zsumowany z sumą poprzedzających go elementów. W programie głównym wywołaj funkcję, wypisz zawartość tablicy przed i po wywołaniu funkcji. Na przykład tablica: 2, 4, 12, 3, 5 powinna zostać przez funkcję zmodyfikowana do postaci: 2, 6 (=2+4), 18 (=6+12), 21 (=18+3), 26 (=21+5) 9. Napisz funkcję przyjmującą jako argumenty dwie tablice liczb zmiennoprzecinkowych (o takich samych rozmiarach) i rozmiar tych tablic. Funkcja powinna zwracać iloczyn skalarny wektorów, reprezentowanych przez te tablice. Wywołaj funkcję dla przykładowych danych w programie głównym. Na przykład dla tablic: A = 1,2,3,4, B = 5, 6, 7, 8 funkcja powinna zwrócić wynik 70 (1*5+2*6+3*7+4*8). 10. Napisz funkcję przyjmującą jako argument tablicę dwuwymiarową o rozmiarach NxN i zwracającą sumę elementów na przekątnej. 11. Napisz funkcję przyjmującą jako argumenty 2 macierze (tablice dwuwymiarowe) o rozmiarach MxN, wykonującą operację dodawania macierzy i wypisującą wynik na ekran.