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

Podobne dokumenty
wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

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

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

Część 4 życie programu

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;

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

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Programowanie komputerowe. Zajęcia 3

Wskaźniki. Informatyka

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

tablica: dane_liczbowe

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

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

Tablice, funkcje - wprowadzenie

ALGORYTMY I STRUKTURY DANYCH

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

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

Podstawy programowania 1

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Wskaźniki. Programowanie Proceduralne 1

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

Wstęp do Programowania, laboratorium 02

Lab 9 Podstawy Programowania

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

Funkcja (podprogram) void

I - Microsoft Visual Studio C++

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Microsoft IT Academy kurs programowania

Spis treści JĘZYK C - PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI, REKURENCJA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

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

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

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Wskaźniki w C. Anna Gogolińska

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

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

KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty.

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

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

Funkcje i tablice. Elwira Wachowicz. 23 maja 2013

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

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

Tablice, funkcje, wskaźniki - wprowadzenie

Wstęp do programowania

Język C zajęcia nr 11. Funkcje

1 Podstawy c++ w pigułce.

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

Instrukcje sterujące. Programowanie Proceduralne 1

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

Laboratorium 5: Tablice. Wyszukiwanie binarne

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Podstawy Programowania C++

Zmienne, stałe i operatory

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

5 Przygotował: mgr inż. Maciej Lasota

Język C, tablice i funkcje (laboratorium)

Język C++ wykład VIII

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

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

Język C zajęcia nr 5

1 Podstawy c++ w pigułce.

Programowanie Proceduralne

Rekurencja (rekursja)

Języki i metodyka programowania. Wskaźniki i tablice.

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

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

2 Przygotował: mgr inż. Maciej Lasota

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach.

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

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski

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

Pytania dla języka C++

Argumenty wywołania programu, operacje na plikach

IX. Wskaźniki.(3 godz.)

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

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

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

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

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

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

Programowanie Obiektowe i C++

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

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

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

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

Wykład 2 Składnia języka C# (cz. 1)

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

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

Struktury, unie, formatowanie, wskaźniki

Proste programy w C++ zadania

#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 ); }

Język C++ zajęcia nr 2

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

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

KURS C/C++ WYKŁAD 6. Wskaźniki

ZASADY PROGRAMOWANIA KOMPUTERÓW

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

Algorytmy i język C++

6 Przygotował: mgr inż. Maciej Lasota

Transkrypt:

i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski

1 i cz. 2 2 i cz. 2 3

Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje }

i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } Funkcje ˆ return wyrażenie - przekazuje wartość wyrażenia typu typ

i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } Funkcje ˆ return wyrażenie - przekazuje wartość wyrażenia typu typ ˆ typ=void oznacza brak typu

i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } Funkcje ˆ return wyrażenie - przekazuje wartość wyrażenia typu typ ˆ typ=void oznacza brak typu ˆ lista-parametrów - parametry przekazywane są przez wartość

i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } Funkcje ˆ return wyrażenie - przekazuje wartość wyrażenia typu typ ˆ typ=void oznacza brak typu ˆ lista-parametrów - parametry przekazywane są przez wartość ˆ Funkcje mogą być wywoływane rekurencyjnie

i cz. 2 1 #include <s t d i o. h> 2 3 double max ( double a, double b ) { 4 if ( a > b ) 5 return a ; 6 else 7 return b ; 8 } 9 10 int main ( ) { 11 double wynik ; 12 13 wynik = max (200,300) ; 14 printf ( "%f\n", wynik ) ; 15 16 return 0 ; 17 }

i cz. 2 1 #include <s t d i o. h> 2 /* d e k l a r a c j a f u n k c j i */ 3 double max ( double, double ) ; 4 5 int main ( ) { 6 double wynik ; 7 8 wynik = max ( 2 0. 3 4, 3 0. 2 0 ) ; 9 printf ( "%f\n", wynik ) ; 10 11 return 0 ; 12 } 13 14 15 double max ( double a, double b ) { 16 if ( a > b ) 17 return a ; 18 else 19 return b ; 20 }

Przekazywanie parametrów, zasięg zmiennych i cz. 2 1 #include <s t d i o. h> 2 3 void fun ( int a ) { 4 a++; 5 printf ( " Wartosc a wewnatrz funkcji %d\n", a ) ; 6 } 7 8 int main ( ) { 9 int a=0; 10 11 fun ( a ) ; 12 printf ( " Wartosc a poza funkcja %d\n", a ) ; 13 14 return 0 ; 15 }

i cz. 2 1 #include <s t d i o. h> 2 3 void gwiazdki ( void ) { 4 int i ; 5 for ( i=0;i<100;i++) { 6 printf ( "*" ) ; 7 } 8 printf ( "\n" ) ; 9 } 10 11 int main ( ) { 12 13 gwiazdki ( ) ; 14 15 return 0 ; 16 } Brak argumentów w funkcji

i cz. 2 albo rekursja (ang. recursion, z łac. recurrere, przybiec z powrotem) to odwoływanie się funkcji do samej siebie. { 1, n = 0 n! = n (n 1)!, n 1

i cz. 2 1 #include <s t d i o. h> 2 3 int silnia ( int n ) { 4 if ( n==0) { 5 return 1 ; 6 else 7 return n * silnia ( n 1) ; /* r e k u r e n c j a */ 8 } 9 10 int main ( ) { 11 int n, wynik ; 12 13 printf ( "Podaj liczbe " ) ; 14 scanf ( "%d",&n ) ; 15 printf ( "%d! = %d\n", n, silnia ( n ) ) ; 16 17 return 0 ; 18 }

Algorytm Euklidesa - rekurencja i cz. 2 NWD(a, b) ˆ Jeśli a = b, to NWD(a, b) = a ˆ Jeśli a > b, to NWD(a, b) = NWD(a b, b). W przeciwnym przypadku NWD(a, b) = NWD(a, b a).

i cz. 2 1 #include <s t d i o. h> 2 3 int nwd ( int a, int b ) { 4 if ( a == b ) 5 return a ; 6 else if ( a > b ) 7 return nwd ( a b, b ) ; 8 else 9 return nwd ( a, b a ) ; 10 } 11 12 int main ( ) { 13 int a, b ; 14 15 scanf ( "%d %d", &a, &b ) ; 16 printf ( "NWD(%d,%d) = %d\n", a, b, nwd ( a, b ) ) ; 17 18 return 0 ; 19 }

i cz. 2 Deklaracja typ tab[rozm]; definiuje tablicę obiektów typu typ o rozmiarze rozm. Elementy tej tablicy są indeksowane liczbami od 0 do rozm-1. W przypadku potrzeby używania tablic dwu- lub więcej wymiarowych można deklarować tablice tablic. Dla przykładu zadeklarowaną w poniższy sposób tablicę typ tab[rozm1][rozm2]; można używać jak dwuwymiarową tablicę obiektów typu typ o rozmiarze rozm1 rozm2.

i cz. 2 1 #include <s t d i o. h> 2 3 int main ( ) { 4 int i, rozmc ; 5 6 int a [ 5 ] = { 1, 2, 3 } ; 7 int b [ 5 ] = {0}; 8 int c [ ] = { 1, 2, 3 } ; 9 int d [ 5 ] ; 10 /* i n t d [ ] ; otrzymamy b l a d */ 11 12 for ( i=0; i<5; i++) { 13 d [ i]=i*i ; 14 } 15 16 for ( i=0; i<5; i++) { 17 printf ( "%d ", a [ i ] ) ; 18 } 19 printf ( "\n" ) ;

i cz. 2 20 21 for ( i=0; i<5; i++) { 22 printf ( "%d ", b [ i ] ) ; 23 } 24 printf ( "\n" ) ; 25 26 rozmc = sizeof ( c ) /sizeof ( int ) ; 27 for ( i=0; i < rozmc ; i++) { 28 printf ( "%d ", c [ i ] ) ; 29 } 30 printf ( "\n" ) ; 31 32 for ( i=0; i<5; i++) { 33 printf ( "%d ", d [ i ] ) ; 34 } 35 printf ( "\n" ) ; 36 37 return 0 ; 38 }

i cz. 2 1 #include <s t d i o. h> 2 void wyswietl ( int tab [ ] [ 3 ], int l_w ) { 3 /* musimy podac l i c z b e kolumn 3 */ 4 int i, j ; 5 for ( i=0;i<l_w ; i++){ 6 for ( j=0;j<3;j++) 7 printf ( "%4d", tab [ i ] [ j ] ) ; 8 printf ( "\n" ) ; 9 } 10 printf ( "\n" ) ; 11 } 12 13 int main ( ) { 14 int a [ 2 ] [ 3 ] = { 1, 2, 3, 4, 5 } ; 15 int b [ 4 ] [ 3 ] = { { 1, 2 }, { 3, 4, 5 }, { 1 } } ; 16 int c [ ] [ 3 ] = { 1, 2, 3, 4, 5 } ; 17 18 wyswietl ( a, 2 ) ; 19 wyswietl ( b, 4 ) ; 20 wyswietl ( c, 2 ) ; 21 return 0 ; 22 }

i cz. 2 Wskaźnik jest adresem obiektu w pamięci komputera. Deklaracja wskaźnika, który wskazuje na obiekt typu typ jest następująca: typ *wsk; Adres obiektu pobieramy za pomocą jednoargumentowego operatora &.

i cz. 2 1 #include <s t d i o. h> 2 3 int main ( ) { 4 int a = 5, b = 6 ; 5 int *c ; 6 7 c = &a ; /* c wskazuje na a */ 8 printf ( "%d\n", *c ) ; 9 10 b = *c ; 11 printf ( "%d\n", b ) ; 12 13 *c = 4 ; 14 printf ( "%d\n", a ) ; 15 printf ( "%d\n", b ) ; 16 printf ( "%d\n", * c ) ; 17 18 return 0 ; 19 }

Operatory & i * są wzajemnie odwrotne. i cz. 2

i cz. 2 Operatory & i * są wzajemnie odwrotne. 1 #include <s t d i o. h> 2 3 int main ( ) { 4 int a = 5, b = 6 ; 5 int *c, *d ; 6 7 c = &a ; /* c wskazuje na a */ 8 9 b = *&a ; 10 d = &*c ; 11 12 printf ( "%d\n", b ) ; 13 printf ( "%d\n", * d ) ; 14 15 return 0 ; 16 }

i cz. 2 1 #include <s t d i o. h> 2 3 void fun ( int x ) { 4 x++; 5 printf ( " Wewnatrz funkcji fun %d\n", x ) ; 6 } 7 8 void fun_wsk ( int *x ) { 9 (* x )++; /* *x++ to n i e to samo */ 10 printf ( " Wewnatrz funkcji fun_wsk %d\n", * x ) ; 11 } 12 13 int main ( ) { 14 int a=5; 15 16 fun ( a ) ; 17 printf ( "main %d\n", a ) ; 18 fun_wsk(&a ) ; 19 printf ( "main %d\n", a ) ; 20 21 return 0 ; 22 }

i cz. 2 Funkcje w języku C nie są zmiennymi, ale można zdefiniować do funkcji. typ (*funkcja)(...) Uwaga: Powyższa deklaracja różni się od deklaracji typ *funkcja(...), która oznacza zwykłą funkcję zwracającą wskaźnik do obiektu typu typ.

i cz. 2 1 #include <s t d i o. h> 2 3 4 double fun1 ( double x ) { 5 6 return x* x ; 7 } 8 9 double wartosc ( double (* fp ) ( double x ), 10 double a ) { 11 return (* fp ) ( a ) ; 12 } 13 14 int main ( ) { 15 16 printf ( "%f\n", wartosc ( fun1, 5 ) ) ; 17 18 return 0 ; 19 }

i cz. 2 1 #include <s t d i o. h> 2 double a ; 3 4 double *fun1 ( double x ) { 5 a=x*x ; 6 return &a ; 7 } 8 9 double wartosc ( double *(* fp ) ( double x ), 10 double a ) { 11 return *(* fp ) ( a ) ; 12 } 13 14 int main ( ) { 15 16 printf ( "%f\n", wartosc ( fun1, 5 ) ) ; 17 18 return 0 ; 19 }

i cz. 2 W języku C istnieje zależność pomiędzy funkcjami a wskaźnikami na funkcje. W szczególności ˆ dla funkcji o deklaracji int funkcja(); wyrażenie funkcja() przyjmuje wartość zwróconą przez rozważaną funkcję, a wyrażenie funkcja przyjmuje wartość adresu tej funkcji; ˆ dla deklaracji double (*fp)(double); double a; zamiast wyrażenia (*fp)(a) można użyć konstrukcji fp(a).

i cz. 2 1 #include<s t d i o. h> 2 #include<s t d l i b. h> 3 4 int dodawanie ( int a, int b ) { return a+b ; } 5 int odejmowanie ( int a, int b ) { return a b ; } 6 int (* operacja ) ( int, int ) ; 7 8 int main ( int argc, char *argv [ ] ) { 9 int liczba1, liczba2 ; 10 char znak ; 11 12 if ( argc!= 4) { 13 printf ( "Zla liczba argumentow!\n" ) ; 14 printf ( " Wywolanie: %s liczba1 operacja liczba2\n", 15 argv [ 0 ] ) ; 16 return 1 ; 17 } 18 19 liczba1 = atoi ( argv [ 1 ] ) ; 20 znak = argv [ 2 ] [ 0 ] ; 21 liczba2 = atoi ( argv [ 3 ] ) ;

i cz. 2 22 23 switch ( znak ) { 24 case '+' : 25 operacja = dodawanie ; 26 break ; 27 case '-' : 28 operacja = odejmowanie ; 29 break ; 30 default : 31 printf ( " Niewlasciwy znak operacji!\ n" ) ; 32 printf ( " Wywolanie: %s liczba1 operacja liczba2\n", 33 argv [ 0 ] ) ; 34 return 2 ; 35 } 36 37 printf ( " Wynik operacji: %d %c %d = %d\n", 38 liczba1, znak, liczba2, 39 operacja ( liczba1, liczba2 ) ) ; 40 41 return 0 ; 42 }

i cz. 2 W języku C występuje ścisła zależność pomiędzy tablicami i wskaźnikami. Dla danej tablicy typ tab[5], tab jest em do piewszego (o indeksie 0) elementu tablicy, zaś jego wartość wynosi *tab. Ogólnie, tab[i] jest równoważne *(tab+i), a stąd &tab[i] jest równoważne (tab+i).

i cz. 2 1 #include <s t d i o. h> 2 3 int main ( ) { 4 int tab [ ] = { 3, 4, 5, 6, 7 } ; 5 int *p ; 6 7 p=tab ; 8 printf ( "%d\n", *p ) ; 9 p++; 10 printf ( "%d\n", *p ) ; 11 printf ( "%d\n", *( tab+4) ) ; 12 13 return 0 ; 14 }

i cz. 2 1 #include <s t d i o. h> 2 void wyswietl ( int tab [ ] [ 3 ], int l_w ) { 3 /* musimy podac l i c z b e kolumn 3 */ 4 int i, j ; 5 for ( i=0;i<l_w ; i++) { 6 for ( j=0;j<3;j++) 7 printf ( "%4d", tab [ i ] [ j ] ) ; 8 printf ( "\n" ) ; 9 } 10 printf ( "\n" ) ; 11 } 12 int main ( ) { 13 int a [ 2 ] [ 3 ] = { 1, 2, 3, 4, 5, 6 } ; 14 wyswietl ( a, 2 ) ; 15 printf ( "wsk %d, tab %d\n", **a, a [ 0 ] [ 0 ] ) ; 16 printf ( "wsk %d, tab %d\n", **( a+1), a [ 1 ] [ 0 ] ) ; 17 printf ( "wsk %d, tab %d\n", **( a+2), a [ 2 ] [ 0 ] ) ; /* poza t a b l i c a */ 18 printf ( " wsk %d, tab %d\n", 19 * ( * ( a+1)+2), a [ 1 ] [ 2 ] ) ; 20 return 0 ; 21 }

i cz. 2 Stała napisowa w języku C jest tablicą znaków (char) zakończoną znakiem \0. Przykładem jest parametr "Witaj" w funkcji printf("witaj");

i cz. 2 1 #include <s t d i o. h> 2 3 void wyswietl ( char *) ; 4 5 int main ( ) { 6 char *nap = "Witaj" ; 7 char tab [ ] = "Witoj" ; 8 printf ( "%c\n\n", nap [ 2 ] ) ; 9 wyswietl ( nap ) ; 10 wyswietl ( tab ) ; 11 tab [3]= 'i' ; /* Blad! nap [3]= ' i ' */ 12 wyswietl ( tab ) ; 13 return 0 ; 14 } 15 16 void wyswietl ( char *n ) { 17 while ( *n!= '\0' ) { 18 printf ( "%c ", *n ) ; 19 n++; 20 } 21 printf ( "\n" ) ; 22 }

Kopiowanie napisów i cz. 2 Stała napisowa w języku C jest tablicą znaków (char) zakończoną znakiem \0. Przykładem jest parametr "Witaj" w funkcji char nap1="ala ma kota"; char nap2="witaj"; Instrukcja nap1=nap2; kopiuje tylko.

i cz. 2 1 #include <s t d i o. h> 2 3 void copy ( char [ ], char [ ] ) ; 4 void copy2 ( char *, char *) ; 5 6 int main ( ) { 7 char nap1 [ ] = " Ala ma kota" ; 8 char nap2 [ ] = "Witaj" ; 9 10 printf ( "%s\n", nap1 ) ; 11 12 copy ( nap1, nap2 ) ; 13 printf ( "%s\n", nap1 ) ; 14 15 copy2 ( nap1, "Hej" ) ; 16 printf ( "%s\n", nap1 ) ; 17 18 return 0 ; 19 } 20 21 22

i cz. 2 23 void copy ( char n1 [ ], char n2 [ ] ) { 24 int i=0; 25 while ( n1 [ i ]!= '\0' ) { 26 n1 [ i]=n2 [ i ] ; 27 i++; 28 } 29 } 30 31 void copy2 ( char *n1, char *n2 ) { 32 while ( (* n1++ = *n2++)!= '\0' ) { 33 ; 34 } 35 }

Argumenty funkcji main() Funkcja main() przyjmuje dwa argumenty: liczbę parametrów oraz tablice parametrów wywołania programu. i cz. 2 1 #include <s t d i o. h> 2 3 int main ( int argc, char *argv [ ] ) { 4 printf ( " Liczba parametrow %d\n", argc ) ; 5 while ( argc > 0) { 6 argc ; 7 printf ( "%s ", argv [ argc ] ) ; 8 } 9 printf ( "\n" ) ; 10 return 0 ; 11 }

i cz. 2 1 #include <s t d i o. h> 2 3 int main ( int argc, char ** argv ) { 4 printf ( " Liczba parametrow %d\n", argc ) ; 5 while ( argc ) { 6 7 printf ( "%s ", *argv++) ; 8 } 9 printf ( "\n" ) ; 10 return 0 ; 11 }

i cz. 2 1 #include<s t d i o. h> 2 #include<s t d l i b. h> 3 4 int dodawanie ( int a, int b ) { return a+b ; } 5 int odejmowanie ( int a, int b ) { return a b ; } 6 int (* operacja ) ( int, int ) ; 7 8 int main ( int argc, char *argv [ ] ) { 9 int liczba1, liczba2 ; 10 char znak ; 11 12 if ( argc!= 4) { 13 printf ( "Zla liczba argumentow!\n" ) ; 14 printf ( " Wywolanie: %s liczba1 operacja liczba2\n", 15 argv [ 0 ] ) ; 16 return 1 ; 17 } 18 19 liczba1 = atoi ( argv [ 1 ] ) ; 20 znak = argv [ 2 ] [ 0 ] ; 21 liczba2 = atoi ( argv [ 3 ] ) ;

i cz. 2 22 23 switch ( znak ) { 24 case '+' : 25 operacja = dodawanie ; 26 break ; 27 case '-' : 28 operacja = odejmowanie ; 29 break ; 30 default : 31 printf ( " Niewlasciwy znak operacji!\ n" ) ; 32 printf ( " Wywolanie: %s liczba1 operacja liczba2\n", 33 argv [ 0 ] ) ; 34 return 2 ; 35 } 36 37 printf ( " Wynik operacji: %d %c %d = %d\n", 38 liczba1, znak, liczba2, 39 operacja ( liczba1, liczba2 ) ) ; 40 41 return 0 ; 42 }

Problemy Zadanie Wczytać liczbę naturalną n i wyznaczyć n liczb ciągu Fibonacciego F n = { 1, n = 0, 1 F n 1 + F n 2, n 1 i cz. 2

i cz. 2 Problemy Zadanie Wczytać liczbę naturalną n i wyznaczyć n liczb ciągu Fibonacciego F n = Zadanie Zdefiniować funkcję { 1, n = 0, 1 F n 1 + F n 2, n 1 double calka (double (*fp)(double x), double a, double b, int n), która dla danego wskaźnika do funkcji fp oblicza całkę funkcji fp na przedziale [a, b] metodą trapezów uwzględniając podział odcinka n. Oblicz całki kilku wybranych funkcji. Porównaj przykład na stronie 26.

Dziękuję za uwagę. i cz. 2