Programowanie Proceduralne



Podobne dokumenty
Wykład 2

Wykład 1

PROGRAMOWANIE w C prolog

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

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

Programowanie strukturalne i obiektowe

Wstęp do programowania 1

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

2 Przygotował: mgr inż. Maciej Lasota

( wykł. dr Marek Piasecki )

Programowanie Proceduralne

Wartości domyślne, szablony funkcji i klas

Programowanie w języku C++

wykład I uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Wstęp do języka C wykład I dr Jarosław Mederski Spis Ogólne informacje

Języki programowania - podstawy

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

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

Programowanie strukturalne język C - wprowadzenie

Wprowadzenie do Valgrinda

1. Wprowadzenie do C/C++

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

1. Brian W. Kernighan, Dennis M. Ritchie, Język ANSI C, WNT, Warszawa 1998.

Podstawy programowania w języku C

Sieciowa komunikacja procesów - XDR i RPC

Microsoft IT Academy kurs programowania

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Język ANSI C. Pierwsze starcie. Programowanie Proceduralne 1

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

Wstęp do programowania

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

Język ANSI C. Pierwsze starcie. Programowanie Proceduralne 1

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

Język C - podstawowe informacje

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

1. Wprowadzenie do C/C++

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Funkcja (podprogram) void

Język ludzki kod maszynowy

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

Zmienne, stałe i operatory

Języki i metody programowania. Omówienie języków C, C++ i Java

Uniwersytet Rzeszowski

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Programowanie Proceduralne

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Podstawy programowania C. dr. Krystyna Łapin

Programowanie obiektowe

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

Wstęp do Programowania, laboratorium 02

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

PowerShell. Sławomir Wawrzyniak

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

ECLIPSE wnioski z dwóch pierwszych laboratoriów

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

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

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

Programowanie 2. Język C++. Wykład 2.

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Wskaznik. Przekazywanie wyniku funkcji przez return. Typy i zmienne wskaznikowe. Zmienna wskazywana. typ * nazwa_wkaznika

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Języki i metodyka programowania. Wprowadzenie do języka C

Preprocesor języka C

Stuck in the loop. Sterowanie. Marcin Makowski. 29 października Zak lad Chemii Teoretycznej UJ

ROZDZIAŁ 2. Operatory

SFML. (Simple and Fast Multimedia Library)

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

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

nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof

ZAJ CIA 4. Podstawowe informacje o algorytmie. Operatory relacyjne i logiczne, instrukcja warunkowa if

Wstęp do Programowania 2

PERSON Kraków

Pobieranie argumentów wiersza polecenia

INFORMATYKA Studia Niestacjonarne Elektrotechnika

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

Projektowanie i programowanie obiektowe (materiały do wykładu cz. VI)

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

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Elementy cyfrowe i układy logiczne

Algorytmy i Struktury Danych.

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

Informatyka, I stopień. Programowanie (PRO300.1)

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

PL/SQL. Zaawansowane tematy PL/SQL

Wstęp do programowania

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Here comes the sun. Wyk lad niesystematyczny. Marcin Makowski. 24 października Zak lad Chemii Teoretycznej UJ

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

Podstawy programowania w języku C

z programowania z przykładowymi rozwiązaniami

O autorze... 9 Wprowadzenie... 11

1 Podstawy c++ w pigułce.

Komunikacja w sieci Industrial Ethernet z wykorzystaniem Protokołu S7 oraz funkcji PUT/GET

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

1 Podstawy c++ w pigułce.

Podstawy programowania. Wykład 2 Zmienne i obsługa wejścia/wyjścia. Krzysztof Banaś Podstawy programowania 1

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

Inżynieria Wytwarzania Systemów Wbudowanych

Transkrypt:

Programowanie Proceduralne Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1

Wprowadzenie Cel wykładów z programowania proceduralnego Wykład jest poświęcony językowi C i jego celem jest nauczenie projektowania i psania programów w tym języku. Zalecana Literatura Kernighan Brian W., Ritchie Dennis M. Język ANSI C. Wydawnictwa Naukowo-Techniczne. Warszawa, 2004 i późniejsze. Stephen Prata. Język C. Szkoła Programowania. Wydanie V. Wydawnictwo Helion. 2006 i poźniejsze.

Wprowadzenie Cel wykładów z programowania proceduralnego Wykład jest poświęcony językowi C i jego celem jest nauczenie projektowania i psania programów w tym języku. Zalecana Literatura Kernighan Brian W., Ritchie Dennis M. Język ANSI C. Wydawnictwa Naukowo-Techniczne. Warszawa, 2004 i późniejsze. Stephen Prata. Język C. Szkoła Programowania. Wydanie V. Wydawnictwo Helion. 2006 i poźniejsze.

Wprowadzenie Plan Wprowadzenie do C Pisanie programów w C Nasz pierwszy program - podstawy

Wprowadzenie do C Rozwój języka C Język C został zaprojektowany przez Dennisa Ritchie ego w laboratoriach AT&T Bell na poczatku lat 70-tych XX wieku. Poprzednikiem języka C był interpretowany język B, który Ritchie rozwinał właśnie w język C. Pierwszy okres rozwoju języka to lata 1969-1973. W roku 1973 w języku C udało się zaimplementować jadro (ang. kernel) systemu operacyjnego Unix. W roku 1978 Brian Kernighan i Dennis Ritchie opublikowali dokumentację języka: The C Programming Language (wydanie polskie, Język ANSI C). Englewood Cliffs, NJ: Prentice Hall. ISBN 0-13-110163-3.

Wprowadzenie do C Rozwój języka C Język C został zaprojektowany przez Dennisa Ritchie ego w laboratoriach AT&T Bell na poczatku lat 70-tych XX wieku. Poprzednikiem języka C był interpretowany język B, który Ritchie rozwinał właśnie w język C. Pierwszy okres rozwoju języka to lata 1969-1973. W roku 1973 w języku C udało się zaimplementować jadro (ang. kernel) systemu operacyjnego Unix. W roku 1978 Brian Kernighan i Dennis Ritchie opublikowali dokumentację języka: The C Programming Language (wydanie polskie, Język ANSI C). Englewood Cliffs, NJ: Prentice Hall. ISBN 0-13-110163-3.

Wprowadzenie do C Rozwój języka C Język C został zaprojektowany przez Dennisa Ritchie ego w laboratoriach AT&T Bell na poczatku lat 70-tych XX wieku. Poprzednikiem języka C był interpretowany język B, który Ritchie rozwinał właśnie w język C. Pierwszy okres rozwoju języka to lata 1969-1973. W roku 1973 w języku C udało się zaimplementować jadro (ang. kernel) systemu operacyjnego Unix. W roku 1978 Brian Kernighan i Dennis Ritchie opublikowali dokumentację języka: The C Programming Language (wydanie polskie, Język ANSI C). Englewood Cliffs, NJ: Prentice Hall. ISBN 0-13-110163-3.

Wprowadzenie do C Rozwój języka C Język C został zaprojektowany przez Dennisa Ritchie ego w laboratoriach AT&T Bell na poczatku lat 70-tych XX wieku. Poprzednikiem języka C był interpretowany język B, który Ritchie rozwinał właśnie w język C. Pierwszy okres rozwoju języka to lata 1969-1973. W roku 1973 w języku C udało się zaimplementować jadro (ang. kernel) systemu operacyjnego Unix. W roku 1978 Brian Kernighan i Dennis Ritchie opublikowali dokumentację języka: The C Programming Language (wydanie polskie, Język ANSI C). Englewood Cliffs, NJ: Prentice Hall. ISBN 0-13-110163-3.

Wprowadzenie do C Rozwój języka C Język C został zaprojektowany przez Dennisa Ritchie ego w laboratoriach AT&T Bell na poczatku lat 70-tych XX wieku. Poprzednikiem języka C był interpretowany język B, który Ritchie rozwinał właśnie w język C. Pierwszy okres rozwoju języka to lata 1969-1973. W roku 1973 w języku C udało się zaimplementować jadro (ang. kernel) systemu operacyjnego Unix. W roku 1978 Brian Kernighan i Dennis Ritchie opublikowali dokumentację języka: The C Programming Language (wydanie polskie, Język ANSI C). Englewood Cliffs, NJ: Prentice Hall. ISBN 0-13-110163-3.

Wprowadzenie do C Rozwój języka C Wersja języka C opisana w The C Programming Language często nazywana jest K&R C (od nazwisk autorów), aby odróżnić ja od późniejszego standardu C89 wprowadzonego w roku 1989, nazywanego dziś ANSI C lub też Standard C. W roku 1990 standard ANSI C został zmodyfikowany i nazwany C90. W roku 1999 standard C90 został zmodyfikowany i nazwany C99. W roku 2007 ogłoszono pracę nad nowym standardem C1X. Na wykładzie z programowania prodeduralnego i laboratoriach będziemy używać standardu C89/C99.

Wprowadzenie do C Rozwój języka C Wersja języka C opisana w The C Programming Language często nazywana jest K&R C (od nazwisk autorów), aby odróżnić ja od późniejszego standardu C89 wprowadzonego w roku 1989, nazywanego dziś ANSI C lub też Standard C. W roku 1990 standard ANSI C został zmodyfikowany i nazwany C90. W roku 1999 standard C90 został zmodyfikowany i nazwany C99. W roku 2007 ogłoszono pracę nad nowym standardem C1X. Na wykładzie z programowania prodeduralnego i laboratoriach będziemy używać standardu C89/C99.

Wprowadzenie do C Rozwój języka C Wersja języka C opisana w The C Programming Language często nazywana jest K&R C (od nazwisk autorów), aby odróżnić ja od późniejszego standardu C89 wprowadzonego w roku 1989, nazywanego dziś ANSI C lub też Standard C. W roku 1990 standard ANSI C został zmodyfikowany i nazwany C90. W roku 1999 standard C90 został zmodyfikowany i nazwany C99. W roku 2007 ogłoszono pracę nad nowym standardem C1X. Na wykładzie z programowania prodeduralnego i laboratoriach będziemy używać standardu C89/C99.

Wprowadzenie do C Rozwój języka C Wersja języka C opisana w The C Programming Language często nazywana jest K&R C (od nazwisk autorów), aby odróżnić ja od późniejszego standardu C89 wprowadzonego w roku 1989, nazywanego dziś ANSI C lub też Standard C. W roku 1990 standard ANSI C został zmodyfikowany i nazwany C90. W roku 1999 standard C90 został zmodyfikowany i nazwany C99. W roku 2007 ogłoszono pracę nad nowym standardem C1X. Na wykładzie z programowania prodeduralnego i laboratoriach będziemy używać standardu C89/C99.

Wprowadzenie do C Rozwój języka C Wersja języka C opisana w The C Programming Language często nazywana jest K&R C (od nazwisk autorów), aby odróżnić ja od późniejszego standardu C89 wprowadzonego w roku 1989, nazywanego dziś ANSI C lub też Standard C. W roku 1990 standard ANSI C został zmodyfikowany i nazwany C90. W roku 1999 standard C90 został zmodyfikowany i nazwany C99. W roku 2007 ogłoszono pracę nad nowym standardem C1X. Na wykładzie z programowania prodeduralnego i laboratoriach będziemy używać standardu C89/C99.

Wprowadzenie do C Gdzie jest stosowany język C? C stał się popularny poza Laboratoriami Bella (gdzie powstał) po 1980 roku i stał się dominujacym językiem do programowania: systemów operacyjnych z rodziny Linux. mikrokontrolerów: samochody, samolotach, urzadzeniach kuchennych, itp. systemów wbudowanych: telefony komórkowe, ipod-y, itp. procesorów sygnałowych (ang. digital signal processor - DSP), czyli procesorów do cyfrowej obróbki sygnałów: systemy telewizji cyforowej, odtwarzacze audio, itp.... wszędzie tam, gdzie zależy nam na pisaniu szybkich i niskopoziomowych programów. Na bazie języka C w latach osiemdziesi atych Bjarne Stroustrup stworzył język C++, który wprowadza możliwość programowania obiektowego.

Wprowadzenie do C Gdzie jest stosowany język C? C stał się popularny poza Laboratoriami Bella (gdzie powstał) po 1980 roku i stał się dominujacym językiem do programowania: systemów operacyjnych z rodziny Linux. mikrokontrolerów: samochody, samolotach, urzadzeniach kuchennych, itp. systemów wbudowanych: telefony komórkowe, ipod-y, itp. procesorów sygnałowych (ang. digital signal processor - DSP), czyli procesorów do cyfrowej obróbki sygnałów: systemy telewizji cyforowej, odtwarzacze audio, itp.... wszędzie tam, gdzie zależy nam na pisaniu szybkich i niskopoziomowych programów. Na bazie języka C w latach osiemdziesi atych Bjarne Stroustrup stworzył język C++, który wprowadza możliwość programowania obiektowego.

Wprowadzenie do C Gdzie jest stosowany język C? C stał się popularny poza Laboratoriami Bella (gdzie powstał) po 1980 roku i stał się dominujacym językiem do programowania: systemów operacyjnych z rodziny Linux. mikrokontrolerów: samochody, samolotach, urzadzeniach kuchennych, itp. systemów wbudowanych: telefony komórkowe, ipod-y, itp. procesorów sygnałowych (ang. digital signal processor - DSP), czyli procesorów do cyfrowej obróbki sygnałów: systemy telewizji cyforowej, odtwarzacze audio, itp.... wszędzie tam, gdzie zależy nam na pisaniu szybkich i niskopoziomowych programów. Na bazie języka C w latach osiemdziesi atych Bjarne Stroustrup stworzył język C++, który wprowadza możliwość programowania obiektowego.

Wprowadzenie do C Cechy języka C Niewielka liczba słów kluczowych. auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while

Wprowadzenie do C Cechy języka C Niewielka liczba słów kluczowych. auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while

Wprowadzenie do C Cechy języka C Możliwość definiowania złożonych struktur danych: struktury, unie. Jawne stosowanie wskaźników - zarzadzanie pamięcia i tablicami. Kompilacja do kodu natywnego (ang. native code), czyli kodu pracujacego z danym procesorem (np. Intel x86) i zbiorem jego instrukcji. Współpraca z macro preprocessor-em: m.in. obsługa dyrektywy #include, #ifndef, #define, #endif, itp. Szeroka gama bibliotek standardowych.

Wprowadzenie do C Cechy języka C Możliwość definiowania złożonych struktur danych: struktury, unie. Jawne stosowanie wskaźników - zarzadzanie pamięcia i tablicami. Kompilacja do kodu natywnego (ang. native code), czyli kodu pracujacego z danym procesorem (np. Intel x86) i zbiorem jego instrukcji. Współpraca z macro preprocessor-em: m.in. obsługa dyrektywy #include, #ifndef, #define, #endif, itp. Szeroka gama bibliotek standardowych.

Wprowadzenie do C Cechy języka C Możliwość definiowania złożonych struktur danych: struktury, unie. Jawne stosowanie wskaźników - zarzadzanie pamięcia i tablicami. Kompilacja do kodu natywnego (ang. native code), czyli kodu pracujacego z danym procesorem (np. Intel x86) i zbiorem jego instrukcji. Współpraca z macro preprocessor-em: m.in. obsługa dyrektywy #include, #ifndef, #define, #endif, itp. Szeroka gama bibliotek standardowych.

Wprowadzenie do C Cechy języka C Możliwość definiowania złożonych struktur danych: struktury, unie. Jawne stosowanie wskaźników - zarzadzanie pamięcia i tablicami. Kompilacja do kodu natywnego (ang. native code), czyli kodu pracujacego z danym procesorem (np. Intel x86) i zbiorem jego instrukcji. Współpraca z macro preprocessor-em: m.in. obsługa dyrektywy #include, #ifndef, #define, #endif, itp. Szeroka gama bibliotek standardowych.

Wprowadzenie do C Cechy języka C Możliwość definiowania złożonych struktur danych: struktury, unie. Jawne stosowanie wskaźników - zarzadzanie pamięcia i tablicami. Kompilacja do kodu natywnego (ang. native code), czyli kodu pracujacego z danym procesorem (np. Intel x86) i zbiorem jego instrukcji. Współpraca z macro preprocessor-em: m.in. obsługa dyrektywy #include, #ifndef, #define, #endif, itp. Szeroka gama bibliotek standardowych.

Wprowadzenie do C Standardowe zbiory nagłówkowe stdio.h - funkcje standardowego wejścia/wyjścia, obsługa plików stdlib.h - najbardziej podstawowe funkcje, np. do zarzadzania pamięcia ctype.h - klasyfikowanie znaków. math.h - funkcje matematyczne string.h - funkcje do obsługi łańcuchów znaków limits.h/float.h - właściwości typów całkowitych/zmiennoprzecinkowych zależne od implementacji. time.h - funkcje obsługi czasu. stdarg.h - narzędzia dla funkcji ze zmienna liczba argumentów. locale.h - ustawienia międzynarodowe. errno.h - deklaracje kodów błędów.

Wprowadzenie do C Cechy języka C Język C nie posiada obsługi: wyjatków. sprawdzania zakresów, np. zakresów tablic (ang. range-checking). sprawdzania zgodności typów podczas czasu wykonania. automatycznego zarzadzania dynamicznie przydzielona pamięcia (ang. garbage collection). obiektów - nie jest to język zorientowany na programowanie obiektowe tak ja np. C++, Java, C#, czy Python. metod/funkcji wirtualnych - możliwość istnienia wielu funkcji o tej samej nazwie, powiazana z możliwościa wyboru konkretnej metody podczas czasu wykonania (ang. polymorphism).

Wprowadzenie do C Cechy języka C Język C nie posiada obsługi: wyjatków. sprawdzania zakresów, np. zakresów tablic (ang. range-checking). sprawdzania zgodności typów podczas czasu wykonania. automatycznego zarzadzania dynamicznie przydzielona pamięcia (ang. garbage collection). obiektów - nie jest to język zorientowany na programowanie obiektowe tak ja np. C++, Java, C#, czy Python. metod/funkcji wirtualnych - możliwość istnienia wielu funkcji o tej samej nazwie, powiazana z możliwościa wyboru konkretnej metody podczas czasu wykonania (ang. polymorphism).

Wprowadzenie do C Cechy języka C Język C nie posiada obsługi: wyjatków. sprawdzania zakresów, np. zakresów tablic (ang. range-checking). sprawdzania zgodności typów podczas czasu wykonania. automatycznego zarzadzania dynamicznie przydzielona pamięcia (ang. garbage collection). obiektów - nie jest to język zorientowany na programowanie obiektowe tak ja np. C++, Java, C#, czy Python. metod/funkcji wirtualnych - możliwość istnienia wielu funkcji o tej samej nazwie, powiazana z możliwościa wyboru konkretnej metody podczas czasu wykonania (ang. polymorphism).

Wprowadzenie do C Cechy języka C Język C nie posiada obsługi: wyjatków. sprawdzania zakresów, np. zakresów tablic (ang. range-checking). sprawdzania zgodności typów podczas czasu wykonania. automatycznego zarzadzania dynamicznie przydzielona pamięcia (ang. garbage collection). obiektów - nie jest to język zorientowany na programowanie obiektowe tak ja np. C++, Java, C#, czy Python. metod/funkcji wirtualnych - możliwość istnienia wielu funkcji o tej samej nazwie, powiazana z możliwościa wyboru konkretnej metody podczas czasu wykonania (ang. polymorphism).

Wprowadzenie do C Cechy języka C Język C nie posiada obsługi: wyjatków. sprawdzania zakresów, np. zakresów tablic (ang. range-checking). sprawdzania zgodności typów podczas czasu wykonania. automatycznego zarzadzania dynamicznie przydzielona pamięcia (ang. garbage collection). obiektów - nie jest to język zorientowany na programowanie obiektowe tak ja np. C++, Java, C#, czy Python. metod/funkcji wirtualnych - możliwość istnienia wielu funkcji o tej samej nazwie, powiazana z możliwościa wyboru konkretnej metody podczas czasu wykonania (ang. polymorphism).

Wprowadzenie do C Cechy języka C Język C nie posiada obsługi: wyjatków. sprawdzania zakresów, np. zakresów tablic (ang. range-checking). sprawdzania zgodności typów podczas czasu wykonania. automatycznego zarzadzania dynamicznie przydzielona pamięcia (ang. garbage collection). obiektów - nie jest to język zorientowany na programowanie obiektowe tak ja np. C++, Java, C#, czy Python. metod/funkcji wirtualnych - możliwość istnienia wielu funkcji o tej samej nazwie, powiazana z możliwościa wyboru konkretnej metody podczas czasu wykonania (ang. polymorphism).

Pisanie programów w C Plan Wprowadzenie do C Pisanie programów w C Nasz pierwszy program - podstawy

Pisanie programów w C Program w języku C Program w C to plik (zbiór) tekstowy, który zawiera instrukcje języka C (czyli ciagi znaków), zgodne z obowiazuj acym standardem tego języka (obecnie c99). Pliki z programami źródłowymi w języku C powinny mieć rozszerzenie c.

Pisanie programów w C Kompilacja programu w C Podstawowym (i najprostszym) poleceniem kompilacji pliku o nazwie plik.c jest gcc plik.c które w przypadku pomyślnym generuje plik wykonywalny o nazwie a.out umieszczony w tym samym katalogu, zaś w przypadku niepomyślnym wyświetla listę komunikatów o błędach.

Pisanie programów w C Kompilacja programu w C Jeśli chcemy, żeby plik wynikowy miał dowolna inna ustalona przez nas nazwę (rozszerzenie out nie jest obowiazkowe), możemy użyć polecenia postaci: gcc plik.c -o nazwa Polecenie gcc umożliwia również jednoczesna kompilację i połaczenie w całość kilku plików źródłowych zawierajacych różne fragmenty (ale nie dowolne) jednego programu.

Pisanie programów w C Kompilacja programu w C Jeśli chcemy, żeby plik wynikowy miał dowolna inna ustalona przez nas nazwę (rozszerzenie out nie jest obowiazkowe), możemy użyć polecenia postaci: gcc plik.c -o nazwa Polecenie gcc umożliwia również jednoczesna kompilację i połaczenie w całość kilku plików źródłowych zawierajacych różne fragmenty (ale nie dowolne) jednego programu.

Pisanie programów w C Kompilacja programu w C Aby kompilować programy zgodne z najnowszym standardem c99 należy użyć następujacego polecenia: gcc -std=c99 plik.c -o nazwa Aby kompilator gcc traktował ostrzeżenia jako błędy należy użyć następujacego polecenia: gcc -std=c99 -Wall plik.c -o nazwa Do przeprowadzania bardziej skomplikowanych kompilacji i łaczeń zalecany jest program make współpracujacy z zawierajacym polecenia dla niego plikiem Makefile o tym na jednym z późniejszych wykładów.

Pisanie programów w C Kompilacja programu w C Aby kompilować programy zgodne z najnowszym standardem c99 należy użyć następujacego polecenia: gcc -std=c99 plik.c -o nazwa Aby kompilator gcc traktował ostrzeżenia jako błędy należy użyć następujacego polecenia: gcc -std=c99 -Wall plik.c -o nazwa Do przeprowadzania bardziej skomplikowanych kompilacji i łaczeń zalecany jest program make współpracujacy z zawierajacym polecenia dla niego plikiem Makefile o tym na jednym z późniejszych wykładów.

Pisanie programów w C Kompilacja programu w C Aby kompilować programy zgodne z najnowszym standardem c99 należy użyć następujacego polecenia: gcc -std=c99 plik.c -o nazwa Aby kompilator gcc traktował ostrzeżenia jako błędy należy użyć następujacego polecenia: gcc -std=c99 -Wall plik.c -o nazwa Do przeprowadzania bardziej skomplikowanych kompilacji i łaczeń zalecany jest program make współpracujacy z zawierajacym polecenia dla niego plikiem Makefile o tym na jednym z późniejszych wykładów.

Pisanie programów w C Kompilacja programu w C W przypadku pomyślnego przebiegu kompilacji kompilator gcc nie wyświetla żadnego komunikatu, zwraca jedynie sterowanie do linii poleceń. W przypadku błędów kompilator gcc wyprowadza na standardowe wyjście błędów (czyli zazwyczaj na ekran) od razu cała listę wykrytych błędów wraz z podanymi numerami linii programu, w których występuja.

Pisanie programów w C Kompilacja programu w C W przypadku pomyślnego przebiegu kompilacji kompilator gcc nie wyświetla żadnego komunikatu, zwraca jedynie sterowanie do linii poleceń. W przypadku błędów kompilator gcc wyprowadza na standardowe wyjście błędów (czyli zazwyczaj na ekran) od razu cała listę wykrytych błędów wraz z podanymi numerami linii programu, w których występuja.

Pisanie programów w C debugowanie Kompilacja programu w C - odrobaczanie/debugowanie, ang. debugging Aby kompilator gcc przekazał informacje o komilowanym programie do programu debugującego gdb należy użyć następujacego polecenia: gcc -g -std=c99 -Wall plik.c -o nazwa

Pisanie programów w C debugowanie Kompilacja programu w C - odrobaczanie/debugowanie bws@bws:~/programy$ gcc -g -Wall p1.c -o p1 bws@bws:~/programy$ gdb p1 GNU gdb (GDB) 7.1-ubuntu Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /home/bws/programy/p1...done. (gdb) r Starting program: /home/bws/programy/p1 Hello word! Program exited normally. (gdb) q bws@bws:~/programy$

Pisanie programów w C debugowanie Kompilacja programu w C - używanie gdb break linenumber - utwórz punkt zatrzymania programu w linii linenumber break file:linenumber - utwórz punkt zatrzymania programu w linii linenumber pliku file. run lub r - uruchom program c - kontynuuj wykonywanie next lub n - wykonaj następna linię step - wykonaj następna linię lub wejdź do funkcji quit lub q - wyjście z programu gdb print expression lub p expression - drukuj bieżaca wartość wyrażenia expression help lub h- help programu

Pisanie programów w C debugowanie Kompilacja programu w C - używanie gdb bws@bws:~/programy$ gdb p1gnu gdb (GDB) 7.1-ubuntu... Reading symbols from /home/bws/programy/p1...done. (gdb) break 2 Breakpoint 1 at 0x40056c: file p1.c, line 2. (gdb) r Starting program: /home/bws/programy/p1 Breakpoint 1, main () at p1.c:4 4 printf("hello word! \n"); (gdb) n Hello word! 5 int a = 1; (gdb) next 6 printf("a = %d",a); (gdb) print a $1 = 1 (gdb) p a $2 = 1 (gdb) c Continuing. a = 1 Program exited normally. (gdb) q #include <stdio. h> i n t main ( void ) { p r i n t f ( " Hello word! \ n " ) ; i n t a = 1 ; p r i n t f ( " a = %d ", a ) ; r e t u r n 0 ; }

Pisanie programów w C Debugowanie pamięci Debugowanie pamięci - program valgrind bws@bws:~/programy$ valgrind./p1 ==13211== Memcheck, a memory error detector ==13211== Copyright (C) 2002-2009, and GNU GPL d, by Julian Seward et al. ==13211== Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for copyright info ==13211== Command:./p1 ==13211== Hello word! a = 1==13211== ==13211== HEAP SUMMARY: ==13211== in use at exit: 0 bytes in 0 blocks ==13211== total heap usage: 0 allocs, 0 frees, 0 bytes allocated ==13211== ==13211== All heap blocks were freed -- no leaks are possible ==13211== ==13211== For counts of detected and suppressed errors, rerun with: -v ==13211== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)

Pisanie programów w C Debugowanie pamięci Debugowanie pamięci - program valgrind bws@bws:~/programy$ valgrind ls ==13217== Memcheck, a memory error detector ==13217== Copyright (C) 2002-2009, and GNU GPL d, by Julian Seward et al. ==13217== Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for copyright info ==13217== Command: ls ==13217== p0.c p1 p1.c p2.c ==13217== ==13217== HEAP SUMMARY: ==13217== in use at exit: 19,194 bytes in 11 blocks ==13217== total heap usage: 538 allocs, 527 frees, 83,869 bytes allocated ==13217== ==13217== LEAK SUMMARY: ==13217== definitely lost: 120 bytes in 1 blocks ==13217== indirectly lost: 0 bytes in 0 blocks ==13217== possibly lost: 0 bytes in 0 blocks ==13217== still reachable: 19,074 bytes in 10 blocks ==13217== suppressed: 0 bytes in 0 blocks ==13217== Rerun with --leak-check=full to see details of leaked memory ==13217== ==13217== For counts of detected and suppressed errors, rerun with: -v ==13217== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)

Nasz pierwszy program Plan Wprowadzenie do C Pisanie programów w C Nasz pierwszy program - podstawy

Nasz pierwszy program Struktura Struktura pliku źródłowego.c /* Rozpocznij od komentarza zawierajacego opis zawartości pliku */ Dyrektywy #include dołaczanie (standardowych) bibliotek Inne definicje dla preprocessora Prototypy funkcji i deklaracje zmiennych Definicja funkcji main() { Ciało funkcji main } Definicje pozostałych funkcji

Nasz pierwszy program Struktura Komentarze Jednoliniowy: // this is a simple comment Wieloliniowy: /* To jest komentarz wieloliniowy Druga linia Trzecia linia */ Ignorowane przez kompilator Moga wystapić prawie wszędzie. Komentarze wileoliniowe nie moga być zagnieżdżane.

Nasz pierwszy program Struktura Najprostszy program w C i n t main ( void ) { r e t u r n 0 ; }

Nasz pierwszy program Struktura Dyrektywa #include Dyrektywa #include < standardowy zbiór nagłówkowy > lub #include zbiór nagłówkowy w bieżącym katalogu programisty wczytuje/dołacza do programu zawartość zbioru nagłówkowego, np. #include <stdio.h> dołacza do programu zbiór stdio.h zawierajacy podstawowe funkcje wejścia/wyjścia

Nasz pierwszy program Struktura Dyrektywa #include Dyrektywa #include < standardowy zbiór nagłówkowy > lub #include zbiór nagłówkowy w bieżącym katalogu programisty wczytuje/dołacza do programu zawartość zbioru nagłówkowego, np. #include <stdio.h> dołacza do programu zbiór stdio.h zawierajacy podstawowe funkcje wejścia/wyjścia

Nasz pierwszy program Struktura Dyrektywa #include # include < s t d i o. h> i n t main ( void ) { p r i n t f ( " Hello word! " ) ; r e t u r n 0 ; }

Nasz pierwszy program Typy danych Standardowe typy danych Typ Przykłady stałych Formanty funkcji printf char a, \n % c bool 0, 1 % d, % u short - % hd, % hx, % ho unsigned short - % hu,% hx, % ho int 12, -97, 0xFFE0, 0177 %d, %i, %x, %o unsigned int 12u, 100U, 0XFFu %u, %x, %o long 12L,-2001, 0xffffL %ld, %li, %lx, %lo unsigned long 12UL,100ul, 0xffeeUL %ld, %li,%lx, %lo long long 0xe5e5e5e5LL, 500ll %lld, %llx, %llo unsigned long long 12ull, 0xffeeULL %llu, %llx, %llo float 12.34f,3.1e-5f, 0x1.5p10, 0x1P-1 %f, %e, %g, %a double 12.24,3.1e-5, 0x.1p3 %lf, %e, %g, %a long double 12.34l,3.1e-5l %Lf, %Le, %Lg

Nasz pierwszy program Definicje zmiennych Definicje zmiennych Zanim zmienna zostanie użyta musi zostać zdefiniowana: # i n clude < s t d i o. h> i n t main ( void ) { char c ; s h o r t s1, s2, s3 ; / / l i s t a zmiennych unsigned s h o r t u s i ; i n t i ; unsigned i n t u i ; long l ; long i n t l i ; unsigned long u l i ; long long l l i ; unsigned long long u l l ; f l o a t f ; double d1 ; long double ld, l d 2 ; / / l i s t a zmiennych r e t u r n 0 ; }

Nasz pierwszy program Definicje zmiennych Definicje zmiennych Definicje zmiennych dla standardowych typów połaczone z inicjalizacja. # i n clude < s t d i o. h> i n t main ( void ) { char c = a ; s h o r t s = 12; unsigned s h o r t u s i = 12; i n t i = 12; unsigned i n t u i = 12u ; long l = 12L ; unsigned long u l i = 13UL ; long long l l i = 12LL ; unsigned long long u l l = 12 u l l ; f l o a t f = 12.34 f ; double d = 1 2.24; long double l d = 12.34 l ; r e t u r n 0 ; }

Nasz pierwszy program Operatory Operatory arytmetyczne #include <stdio.h> int main (void) { int a = 100, b = 2, c =25, d = 4, result; result = a - b; // odejmowanie printf ("a - b = %i\n", result); result = b * c; // mnożenie printf ("b * c = %i\n", result); result = a / c; // dzielenie printf ("a / c = %i\n", result); result = a + b * c; // priorytety printf ("a + b * c = %i\n", result); printf ("a * b + c * d = %i\n", a * b + c * d); return 0; }

Nasz pierwszy program Operatory Wyniki a - b = 98 b * c = 50 a / c = 4 a + b * c = 150 a * b + c * d = 300

Nasz pierwszy program Operatory Arytmetyka inaczej #include <stdio.h> int main(void) { int a, b; printf("podaj pierwsza liczbe: "); scanf("%d", &a); printf("podaj druga liczbe: "); scanf("%d", &b); printf("%d + %d = %d\n", a, b, a + b); printf("%d - %d = %d\n", a, b, a - b); printf("%d * %d = %d\n", a, b, a * b); printf("%d / %d = %d\n", a, b, a / b); printf("%d %% %d = %d\n", a, b, a % b); return 0; }

Nasz pierwszy program Operatory Operatory logiczne i porównania Operator Znaczenie > wiekszy od < mniejszy od <= mniejszy od lub równy >= wiekszy od lub równy == równy! = różny && iloczyn logiczny (and) suma logiczna (or)! negacja (not)

Nasz pierwszy program Operatory Operatory przypisania a=b=c=d=3; Znaczy tyle samo, co a=3; b=3; c=3; d=3;

Nasz pierwszy program Operatory Operatory przypisania Operator Znaczenie + = a+ = b znaczy a = a+b = a = b znaczy a = a b = a = b znaczy a = a b / = a/ = b znaczy a = a/b % = a% = b znaczy a = a%b

Nasz pierwszy program Operatory Operator dekrementacji #include <stdio.h> int main (void) { int a = 3; printf("%d\n", a); // dekrementacja przedrostkowa // najpierw zmniejsz, potem użyj printf("%d\n", --a); printf("%d\n", a); // dekrementacja przyrostkowa // najpierw użyj, potem zmiejsz printf("%d\n", a--); printf("%d\n", a); return 0; }

Nasz pierwszy program Operatory Operator inkrementacji #include <stdio.h> int main (void) { int a = 3; printf("%d\n", a); // inkrementacja przedrostkowa // najpierw zwiększ, potem użyj printf("%d\n", ++a); printf("%d\n", a); // inkrementacja przyrostkowa // najpierw użyj, potem zwiększ printf("%d\n", a++); printf("%d\n", a); return 0; }

Instrukcja warunkowa if #include <stdio.h> int main(void) { int a, b; printf("podaj pierwszą liczbę: "); scanf("%d", &a); printf("podaj drugą liczbę: "); scanf("%d", &b); printf("%d + %d = %d\n", a, b, a + b); printf("%d - %d = %d\n", a, b, a - b); printf("%d * %d = %d\n", a, b, a * b); if (b!= 0) { printf("%d / %d = %d\n", a, b, a / b); printf("%d %% %d = %d\n", a, b, a % b); } return 0; }

Instrukcja warunkowa if-else #include <stdio.h> int main (void) { char c; printf ("Podaj pojedyńczy znak: "); scanf ("%c", &c); if ((c>= a && c<= z ) (c>= A && c<= Z )) { printf ("To jest litera.\n"); } else if ( c >= 0 && c <= 9 ) { printf ("To jest cyfra.\n"); } else { printf ("To jest znak specjalny.\n"); } return 0; }

Instrukcje iteracyjne while #include <stdio.h> int main (void) { int k = 0; while ( k < 5 ) { printf ("%d. Hello!\n", k + 1); ++k; } return 0; }

Instrukcje iteracyjne while - Wypisywanie liczby od prawej do lewej #include <stdio.h> int main (void) { int number, rightdigit; printf ("Podaj liczbę: "); scanf ("%d", &number); while (number!= 0) { rightdigit = number % 10; printf ("%d", rightdigit); number /= 10; } printf ("\n"); return 0; }

Instrukcje iteracyjne do-while #include <stdio.h> int main (void) { int s = 0, a; do { printf("podaj liczbę: "); scanf("%d", &a); if (a > 0) { continue; } if (a == 0) { break; } s += a; } while(1); printf("suma wprowadzonych liczb ujemnych = %d\n", s); return 0; }

Tablice #include <stdio.h> int main(void) { long tab[12]={31,28,31,30,31,30,31,31,30,31,30,31}; // Wypisujemy elementy tablicy tab int k = 0; while (k < 12) { printf("%ld ", tab[k]); ++k; } printf("\n"); // Obliczamy sume wszystkich elementów tablicy tab long s = 0; k = 0; while (k < 12) { s += tab[k]; ++k; } printf("%ld\n", s); return 0; }

Instrukcja iteracyjna for #include <stdio.h> int main(void) { long a[]={31,28,31,30,31,30,31,31,30,31,30,31}; int const n = sizeof(a) / sizeof(a[0]); // Wypisanie tablicy int k; for (k = 0; k < n; ++k) { printf("%ld ", a[k]); } printf("\n"); // Obliczanie sumy elementów tablicy long s = 0; for (k = 0; k < n; ++k) { s += a[k]; } printf("suma = %ld\n", s); return 0; }