Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Sprawy organizacyjne 1. Zasady zaliczenia przedmiotu samodzielne wykonanie zadanego programu oraz odpowiedź na pytania dotyczące szczegółów implementacji.

Podobne prezentacje


Prezentacja na temat: "Sprawy organizacyjne 1. Zasady zaliczenia przedmiotu samodzielne wykonanie zadanego programu oraz odpowiedź na pytania dotyczące szczegółów implementacji."— Zapis prezentacji:

1 Sprawy organizacyjne 1. Zasady zaliczenia przedmiotu samodzielne wykonanie zadanego programu oraz odpowiedź na pytania dotyczące szczegółów implementacji i wprowadzenie na bieżąco drobnych zmian, kolokwium 2. Kontakt 3. Podręcznik Grębosz J., Symfonia C++, Oficyna Kallimach, Kraków, 1999

2 Wprowadzenie do programowania 1. Dlaczego C? 2. Na jakie wynagrodzenie może liczyć programista Polska Reszta świata

3 Pierwszy program w C (1) 1.Uruchom program Dev-C++ (C:\Dev-Cpp\devcpp.exe) 2.Utwórz nowy projekt – menu File\New\Project... 3.Wybierz opcje C Project, Console Application i wpisz nazwę projektu.

4 Pierwszy program w C (2) 4. Zapisz projekt na dysku. 5. Napisz program: 6. Wybierz z menu opcje Execute\Compile & Run lub naciśnij F9. 7. Zapisz program pod zaproponowaną nazwą.

5 Typy danych NazwaWielkość w bajtachZakres wartości char1-128 do 127 unsigned char10 do 255 short do unsigned short20 do long do unsigned long40 do int do unsigned int40 do float41.2* do 3.4*10 38 double82.2* do 1.8* bool1true lub false

6 Najczęściej używane operatory (1) OperatorZnaczeniePrzykład Operatory arytmetyczne +Dodawaniex=y+z; -Odejmowaniex=y-z; *Mnożeniex=y*z; /dzieleniex=y/z; Operatory przypisania =Przypisaniex=10; +=Dodanie i przypisaniex+=10; -=Odjęcie i przypisaniex-=10; *=Mnożenie i przypisaniex*=10; /=Dzielenie i przypisaniex/=10; &=Iloczyn bitowy i przypisaniex&=0x02; |=Suma bitowa i przypisaniex|=0x02;

7 Najczęściej używane operatory (2) OperatorZnaczeniePrzykład Operatory relacyjne = Równyif(x= =10) {...} !=Różny odif(x!=10) {...} Większy odif(x>10) {...} <=Mniejszy lub równyif(x<=10) {...} >=Większy lub równyif(x=>10) {...} Operatory logiczne &&Iloczyn logiczny (koniunkcja)if(x&&0xFF) {...} ||Suma logiczna (alternatywa)if(x||0xFF) {...}

8 Najczęściej używane operatory (3) OperatorZnaczeniePrzykład Operatory jednoargumentowe *Wyłuskanie (dereferencja)int x = *y &Adres obiektu (referencja)int* x = &y ~Negacja bitowax= ~0x02 !Negacja logicznaif(!valid){...} ++Inkrementacjax++; --Dekrementacjax--;

9 Instrukcje warunkowe (1) Składnia instrukcji warunkowych if: 1.if(warunek) {blok instrukcji} 2.if(warunek) {blok instrukcji} else {alternatywny blok instrukcji} 3.if(warunek 1) {blok instrukcji 1} else if(warunek 2) {blok instrukcji 2} else{alternatywny blok instrukcji}

10 Instrukcje warunkowe (2) Składnia instrukcji switch: switch(wyrażenie) { case wyrażenie_stałe1: insrukcje1; case wyrażenie_stałe2: insrukcje2; case wyrażenie_stałe3: insrukcje3;... default: instrukcje4; }

11 Instrukcje warunkowe (3) Przykład 1 Przepisz i uruchom poniższy program: #include int main(int argc, char *argv[]){ float x; printf("Podaj liczbe: "); scanf("%f", &x); if (x<10) { printf("Podana liczba jest mniejsza od 10\n"); } else if (x>10){ printf("Podana liczba jest wieksza od 10\n"); } else { printf("Podana liczba jest rowna 10\n"); } system("PAUSE"); return 0; }

12 Instrukcje warunkowe (4) Przykład 2 Przepisz i uruchom poniższy program: #include int main(int argc, char *argv[]){ int x; printf("Podaj liczbe calkowita: "); scanf("%d", &x); switch (x){ case 1: printf("Wpisano 1\n"); break; case 2: printf("Wpisano 2\n"); break; case 1000: printf("Wpisano 3\n"); break; default: printf("Wpisano liczbe rozna od 1,2,1000\n"); } system("PAUSE"); return 0; }

13 Pętle (1) Pętla for for(poczatek; koniec; przyrost) { instrukcje } Przykład: #include int main(int argc, char *argv[]){ int i; for (i = 1; i<10; i++){ printf("%d. wykonanie instrukcji w petli\n", i); } system("PAUSE"); return 0; }

14 Pętle (2) Pętla while while(warunek) { instrukcje } #include int main(int argc, char *argv[]){ int i = 1; while(i<10){ printf("%d. wykonanie instrukcji w petli\n", i); i++; } system("PAUSE"); return 0; }

15 Pętle (3) Pętla do-while do { instrukcje } while(warunek); #include int main(int argc, char *argv[]){ int i = 1; do{ printf("%d. wykonanie instrukcji w petli\n", i); i++; } while (i<10); system("PAUSE"); return 0; }

16 Pętle (4) Pętla do-while do { instrukcje } while(warunek); #include int main(int argc, char *argv[]){ int i = 1; do{ printf("%d. wykonanie instrukcji w petli\n", i); i++; }while (i<10); system("PAUSE"); return 0; }

17 Pętle (5) Zadanie 1. Napisz program wykorzystujący pętle wypisujący kolejno wartości 2 1, 2 2, 2 3,..., Zadanie 2. Napisz program wypisujący wartości funkcji sin i cos w przedziale od 0 do 360 stopni z krokiem 45 stopni. Wskazówki: Funkcje sin() i cos() przyjmują argumenty w radianach. Wartość liczby pi można obliczyć np. jako 4.0*atan(1.0).

18 Instrukcja break (1) Instrukcja break użyta wewnątrz pętli powoduje wyjście z najbardziej zagnieżdżonej pętli. Przykład: #include int main(int argc, char *argv[]){ int i, l; for (i = 0; i < 10; i ++) { scanf("%d", &l); if (l < 0) break; printf("l = %d\n", l); } system("PAUSE"); return 0; }

19 Instrukcja break (2) Instrukcja break użyta w instrukcji switch powoduje wyjście z tej instrukcji. #include int main(int argc, char *argv[]){ int i; scanf("%d",&i); switch (i){ case 1: case 2: printf("1 lub 2\n"); break; default : printf("Inne\n"); break; } system("PAUSE"); return 0; }

20 Instrukcja continue Instrukcja continue może być użyta tylko wewnątrz instrukcji pętli. Powoduje przejście do instrukcji sprawdzającej warunek. #include int main(int argc, char *argv[]){ int i = 0, l ; while(i < 10) { scanf("%d", &l) ; if (l < 0) continue; printf("l = %d\n", l); i++; } system("PAUSE"); return 0; }

21 Czas istnienia i zasięg widoczności (1) Zmienne lokalne deklarowane są w obrębie bloku. Do zmiennych tego rodzaju można odwoływać się tylko w obrębie bloku, wewnątrz którego zostały one zadeklarowane. Przykład: int main(int argc, char *argv[]) { auto int i; register char j; static long k; system("PAUSE"); return 0; }

22 Czas istnienia i zasięg widoczności (2) -zmienne lokalne można deklarować w trzech klasach pamięci: auto, static i register, -zmienne automatyczne (klasy auto) tworzone na stosie w momencie rozpoczęcia wykonywania bloku, a usuwane natychmiast po zakończeniu wykonywania bloku, -zmienne automatyczne nie zachowują wartości pomiędzy poszczególnymi wykonaniami bloku, -zmienne rejestrowe (klasy register) zachowują się jak zmienne automatyczne, ale są przechowywane w rejestrach procesora lub w szybkiej pamięci, a nie na stosie. Czas dostępu do takiej zmiennej jest krótszy niż do zmiennej automatycznej, -zmienne rejestrowe nie posiadają adresu, nie można dla nich używać operatora &, -zmienne statyczne (klasy static) przechowywane są w obszarze pamięci programu. Są tworzone w momencie tworzenia programu, a kasowane w momencie jego zakończenia, -zmienne statyczne nie zmieniają wartości między kolejnymi wykonaniami bloku, -pamięć, w której umieszczane są zmienne automatyczne i rejestrowe ma zawsze przypadkową wartość, - pamięć, w której umieszczane są zmienne statyczne jest zerowana przed uruchomieniem programu.

23 Czas istnienia i zasięg widoczności (3) Zmienne globalne są deklarowane poza jakimkolwiek blokiem i mogą być użyte w dowolnym miejscu w programie po ich deklaracji. Tworzone są w obszarze danych programu w momencie jego uruchomienia i usuwane w momencie zakończenia. Pamięć, w której umieszczane są zmienne globalne jest zerowana przed uruchomieniem programu.

24 Czas istnienia i zasięg widoczności (4) REGUŁA PRZESŁANIANIA - Zasięgiem zmiennych lokalnych jest blok, w którym są zadeklarowane, - Zasięgiem zmiennych globalnych jest część pliku od miejsca deklaracji do końca pliku, - Jeśli w zasięgu zmiennej zostanie zadeklarowana zmienna o tej samej nazwie, to nowa zmienna staje się dostępna, a zmienna pierwotna przestaje być widoczna, czyli zostaje zasłonięta, - zmienna zasłonięta zaczyna być ponownie widoczna, gdy kończy się zasięg zmiennej zasłaniającej.

25 Czas istnienia i zasięg widoczności (5) REGUŁA PRZESŁANIANIA Przykład: #include int main(int argc, char *argv[]){ int x = 10; printf("Liczba1: %d\n", x); { int x = 20; printf("Liczba 2: %d\n", x); } printf("Liczba 3: %d\n", x); system("PAUSE"); return 0; }

26 Modyfikator const Zmienna z modyfikatorem const może zostać zainicjalizowana w momencie tworzenia za pomocą operatora przypisania. Użycie modyfikatora sprawia, że zmienna jest taktowana jako zmienna tylko do odczytu. Przykład: #include int main(int argc, char *argv[]){ const float pi= 4*atan(1); printf("Pi = %f\n",pi); /*pi = 3; //BLAD */ system("PAUSE"); return 0; }

27 Funkcje (1) Funkcja to wyróżniona część programu realizująca ściśle określone zadanie. Funkcje składają się z nagłówka i ciała. Nagłówek funkcji typ_wartsoci nazwa_funkcji(parametry_formalne) Przykłady: long silnia(int n); void drukuj(char a, int d); int fi_przelicz_harmonogram(int har_id); Parametry formalne określają wartości przekazywane do funkcji w momencie jej wywołania. Parametry można przekazywać przez wartość lub przez referencję. Przy przekazanie parametru przez wartość w momencie wywołania funkcji tworzona jest zmienna lokalna o podanej nazwie i do niej jest kopiowana wartość parametru. W momencie zakończenia wykonania funkcji zmienne związane z parametrami przestają istnieć. Zmiana wartości parametrów wewnątrz funkcji nie powoduje zmiany wartości w funkcji wywołującej.

28 Funkcje (2) - ciało funkcji składa się z dowolnej ilości deklaracji i instrukcji, - każdy parametr musi mieć oddzielną specyfikacje typu, Przykład: long potega(int podstawa, int wykladnik){} /*dobrze*/ long potega(int podstawa, wykladnik){} /*BŁĄD!*/ -wywołanie funkcji składa się z nazwy funkcji i ewentualnych wyrażeń oddzielonych przecinakami ujętych w okrągłe nawiasy, np. potega(3,4). Na podstawie podanych wyrażeń przed wywołaniem funkcji zostają obliczone jej parametry aktualne.

29 Funkcje (3) - ciało funkcji składa się z dowolnej ilości deklaracji i instrukcji, - każdy parametr musi mieć oddzielną specyfikacje typu, Przykład: long potega(int podstawa, int wykladnik){} /*dobrze*/ long potega(int podstawa, wykladnik){} /*BŁĄD!*/ -wywołanie funkcji składa się z nazwy funkcji i ewentualnych wyrażeń oddzielonych przecinakami ujętych w okrągłe nawiasy, np. potega(3,4). Na podstawie podanych wyrażeń przed wywołaniem funkcji zostają obliczone jej parametry aktualne.

30 Funkcje (4) INSTRUKCJA return; Powoduje wyjście z aktualnie wykonywanej funkcji. Instrukcja może wystąpić w dowolnym miejscu w ciele funkcji. Instrukcja return może wystąpić z wyrażeniem lub bez wyrażenia. Jeśli podano wyrażenie, to jego wartość przed wyjściem z funkcji jest obliczana i zwracana. Przykład: long silnia(int n) { long wynik; int i; if (n <= 0) return 1; wynik = 1; for (i = 1; i <= n; i ++) wynik *= i; return wynik; }

31 Funkcje (5) Przykład: #include long potega(int a, int b){ int i; long wynik = a; for(i=1;i

32 Funkcje (6) Zadanie 3. Zmodyfikuj funkcję long potega(int, int) tak, aby pokazywała poprawnie wartości liczby podniesionej do zerowej potęgi.

33 Lista częstych błędów 1) syntax error at end of input Brak zamykającego nawiasu 2) undefined reference to XXXXX Brak zdefiniowanej zmiennej lub funkcji XXXXX Błąd w słowie kluczowym lub w nazwie funkcji 3) syntax error before "YYYY" Brak znaku ";" przed słowem YYYY 4) missing terminating " character Brak zamknięcia cudzysłowu

34 Funkcje printf (1) Funkcja printf służy do zapisywania danych w standardowym strumieniu wyjściowym. Funkcja zwraca liczbę wyświetlonych znaków. int printf(char * Format [, wartość,...]); Funkcja analizuje na początku pierwszy argument i na jego podstawie wypisuje kolejne wartości. Ilość wartości musi być zgodna z przekazanym formatem. Format składa sie z tekstu i informacji o koniecznych konwersjach. Informacje o konwersji zaczynają się znakiem "%". Przykłady: printf("Witaj świecie\n"); /*Witaj świecie*/ printf("20 % 10 = 0"); /*20 % 10 = 0*/

35 Funkcje printf (2) Określanie konwersji: d - akceptuje parametr typu całkowitego i wykonuje konwersję do zapisu całkowitego ze znakiem, u - akceptuje parametr typu całkowitego i wykonuje konwersję do zapisu całkowitego bez znaku, o - akceptuje parametr typu całkowitego i wykonuje konwersję do zapisu całkowitego bez znaku w systemie ósemkowym, u - akceptuje parametr typu całkowitego i wykonuje konwersję do zapisu całkowitego bez znaku w sytemie szesnastkowym, f - akceptuje wartość typu float lub double i wykonuje konwersję do postaci [- ]ddd.ddd, E - akceptuje wartość typu float lub double i wykonuje konwersję do postaci liczby zmienneprzecinkowej postaci [-]d.ddd+|-dd, c - akceptuje i wypisuje pojedynczy znak, s - akceptuje string (char*), p - akceptuje wskaźnik (void *) i wypisuje go w postaci szesnastkowej Przykłady: printf("%d+%d = %d\n", 5, 5, 5+5); /* 5+5 = 10 */ printf("Jestes %d. gosciem na tej stronie",234 ); /*Jestes 234. gosciem na tej stronie*/

36 Funkcje printf (3) Polskie znaki \ + kod znaku Kody znaków polskich: ć ł ś ó ą ę ź ż ń

37 Funkcje scanf Funkcja scanf odczytuje dane ze standardowego strumienia wejściowego, wykonuje ich konwersję w zależności od podanego formatu i zachowuje rezultat w podanym miejscu w pamięci int printf(char * Format [, wartość,...]); Funkcja scanf analizuje Format i na podstawie informacji zawartych w tym tekście, odczytuje ze standardowego strumienia wejściowego wartości. Ilość wartości musi być zgodna z przekazanym formatem. Kody konwersji są analogiczne jak w funkcji printf Przykład 1.: int i; scanf("%d", &i); Przykład 2.: char tytul[50]; scanf("%[^\n]", tytul);

38 Zadanie Zadanie 4. Napisz program obliczający średnią podanych liczb. Zadanie 5. Napisz program obliczający pole i obwód prostokąta, trójkąta, koła i trapezu o podanych przez użytkownika wymiarach. W programie utwórz funkcje zwracające wymagane wartości.


Pobierz ppt "Sprawy organizacyjne 1. Zasady zaliczenia przedmiotu samodzielne wykonanie zadanego programu oraz odpowiedź na pytania dotyczące szczegółów implementacji."

Podobne prezentacje


Reklamy Google