PODSTAWY PROGRAMOWANIA W C. Bibliografia W-1. Dr. Inż. Hab. Siergiej Fialko, PK,

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

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

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

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

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

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

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

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

Informatyka, Ćwiczenie Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

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

Stałe i zmienne znakowe. Stała znakowa: znak

Wstęp do Programowania, laboratorium 02

Metodyki i Techniki Programowania MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

2 Przygotował: mgr inż. Maciej Lasota

1. Wprowadzanie danych z klawiatury funkcja scanf

Wstęp do programowania. Wykład 1

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Język ludzki kod maszynowy

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

Podstawy programowania C. dr. Krystyna Łapin

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

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

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

Programowanie strukturalne język C - wprowadzenie

Podział programu na moduły

Struktury, unie, formatowanie, wskaźniki

Język C i C++. Podstawy. Zagadnienia do opanowania. Przykład 1. (modyfikuj kod, aby zrealizować punkty 5., 7.)

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

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

Zmienne, stałe i operatory

Tablice, funkcje - wprowadzenie

Proces tworzenia programu:

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

Wstęp do programowania

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

( wykł. dr Marek Piasecki )

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

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

Formatowane (tekstowe) wejście/wyjście. Binarne wejście/wyjście.

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

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

Struktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem.

Funkcja (podprogram) void

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

Język C zajęcia nr 11. Funkcje

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

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

Bibliografia 1. B. Stroustrup. Jezyk C++. Wydawnictwo Naukowo-Techniczne, Warszawa,

Biblioteka standardowa - operacje wejścia/wyjścia

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

KURS C/C++ WYKŁAD 1. Pierwszy program

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

Programowanie w języku C++

Microsoft IT Academy kurs programowania

Programowanie strukturalne i obiektowe

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

Język C - podstawowe informacje

Pliki. Informacje ogólne. Obsługa plików w języku C

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

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

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!

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

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

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

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Język C++ Różnice między C a C++

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

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

1 Podstawy c++ w pigułce.

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

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

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Wskaźniki w C. Anna Gogolińska

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

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Programowanie Proceduralne

IX. Wskaźniki.(3 godz.)

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Funkcje zawarte w bibliotece < io.h >

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

Pliki wykład 2. Dorota Pylak

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

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

Wstęp do Programowania 2

1 Podstawy c++ w pigułce.

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

Lab 1. Wstęp do programowania w C. Zintegrowane środowisko programistyczne Visual Studio.

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

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Podstawy i języki programowania

Część 4 życie programu

Transkrypt:

PODSTAWY PROGRAMOWANIA W C Dr. Inż. Hab. Siergiej Fialko, PK, sfialko@riad.pk.edu.pl http://torus.uck.pk.edu.pl/~fialko Bibliografia 1. B.M. Kernighan and D.M. Ritchie. Język C. WNT, Warszawa, 1988 2. B. Straustrup, The C++ Programming, 3. rd. ed., Addison-Wesley, 1997. 3. D. Zboż. Podstawy programowania w C, PK im. Tadeusza Kościuszki, wyd. 3, Kraków, 2002. 4. MSDN - Microsoft Developer Network. 5. G. H. Golub, C. F. Van Loan. Matrix computations. III edition, The Johns Hopkins University Press, 1996 1

Język C jest językiem oprogramowania wysokiego poziomu (językiem strukturalnym). Przy tym posiada wielu cech języków niskiego poziomu. Język strukturalny pozwala tworzyć programy w postaci jednolitych bloków (struktur) bez korzystania z instrukcji skoku. Język C stosuje się w różnych branżach: Metody numeryczne Edytory i procesory tekstowe Obsługa baz danych Obsługa kart graficznych, urządzeń mobilnych, mikrokontrolerów Interface użytkownika Systemy operacyjne, sterowniki Oprogramowanie wielowątkowe, techniki SSE, SSE2, SSE3, AVX 2

Istnieje tylko jeden sposób nauczyć się języku oprogramowania zacząć oprogramowywać. Przykład 1 (WW1) #include <stdio.h> int main(int argc, char* argv[]) { int ch; printf("zaczynamy\n"); printf("\tnauke\n\tjezyka C\n"); /*EOF - CTRL + Z input with keyboard*/ while((ch = getchar())!= EOF) putchar(ch); } return 0; 3

CRT MSDN (biblioteka C run-time): https://msdn.microsoft.com/ru-ru/library/windows/desktop/2aza74he %28v=vs.71%29.aspx 4

Program C składa się: plików filename1.c (*.cpp) filename2.c (*.cpp)... header1.h (*.hpp) header2.h (*.hpp)... To jest za mało dla tego żeby uruchomić program. Dla otrzymania działającego kodu koniecznie są 2 etapy: kompilacji i linkowania wiązania). Kompilacja : kod źródłowy kod obiektowy (maksymalnie przybliżony do rozkazów komputera). Linkowanie : łączenie różnych bloków (module) kodu obiektowego w jedyny plik do wykonania *.exe albo *.dll. 5

W poważnych opracowaniach programowych używają to albo inne środowisko, na przykład Bilder C++... (Borland International), Microsoft Visual C++... i takie inne. Będziemy nazywali to środowisko IDE Integrated Development Environment (Zintegrowane środowisko programistyczne). IDE odpowiada za stworzenie projektu, za wykonanie kompilacji i linkowania, nadaje możliwość uruchomienia programu, debagowania i wielu różnych rzeczy. 6

Przykład otwierania projektu podać tu. Program w C składa się z dyrektyw preprocesora, deklaracji globalnych oraz jednej lub wielu funkcji. Definicja funkcji: typ nazwa_funkcji(lista_argumentów) { treść funkcji } W całym projekcie ta funkcja może być zdefiniowana tylko jeden raz. Jeśli funkcja jest zadeklarowana jako static, jej zasiąg deklaracji jest ograniczony tylko jednym plikiem. Wtedy w innym pliku może istnieć inna funkcja static z tą samą nazwą. 7

File_1.cpp static int fun() { return 1; } File_2.cpp static int fun() { return 10; } To jest OK. Jednak jeśli usunąć static, linker zgłosi błąd, ponieważ projekt ma dwie funkcje z tą samą nazwą. Powstaje niejednoznaczność: w miejscu wywołania int i = fun(); którą z nich trzeba wywołać? Nie może definicja funkcji być zapisana w treści innej funkcji. Lista deklaracji argumentów może być pustą: typ funkc_z_pusta_lista() { treść funkcji } 8

W wypadku, kiedy funkcja nic nie zwraca, piszemy void ta_funkc_nic_nie_zwraca(lista_argum) {... } Treść funkcji składa się z definicji, deklaracji, instrukcji i komentarzy Blok: { }... Każdy program w C rozpoczyna działanie od pierwszej instrukcji funkcji main Funkcja main zwraca typ integer Może być tylko jedna funkcja main 9

Definicja: int ch; Instrukcja: printf(...); while(...) ch = getchar(); Komentarz: /*...*/ //ok /*aaaaaa/*bbbbbb*/aaaaaaa*/ //!ok błąd 10

W języku C nie ma instrukcji dla wprowadzenia danych i wyprowadzenia wyników Używamy funkcje biblioteczne printf( zbiór symboli,id_1, id_2, ); Przykład: printf( wartość %d\n, i); printf( i = %d j = %d Aij = %e\n, i, j, A[ij]); Znaki specjalne (escape sequence) \n nowa linie \t tabulacje \b cofanie (back space) \r powrót karetki \f nowa strona 11

Przykład WW1_1 Symbol \ jest symbolem specjalnym \\ na wydruku będzie \ \ Polecenie (dyrektywa) preprocesora #include <nazwa_pliku.h> lub #include nazwa_pliku.h oznacza, że zawartość danego pliku będzie dodana do tekstu żródłowego przed kompilacją w tym miejscu, gdzie stoi polecenie #include. To jest koniecznie dla poprawnej kompilacji. Dołączenie funkcji printf( ) i getchar() do kodu ostatecznego będzie zrobione przy linkowaniu. 12

Nazwy i zmienne Identyfikator (nazwa zmiennej) to jest sekwencja dużych i małych liter, cyfr i znaku podkreślenia ( _ ). Może być dowolnej długości, tylko pierwsze znaki (ich ilość zależy od wersji kompilatora) mają znaczenie dla odróżnienia jednej zmiennej od drugiej. Nie powinno zaczynać się z cyfry. int I21 /* to jest ok*/ int _21 /* to jest też ok*/ int 2i /* to jest błąd */ Taki same duże i małe litery oznaczają różne znaki: int ia_1 i int Ia_1 to są różne zmienne. Zmienne muszą być zdefiniowane przed ich pierwszym użyciem, nie koniecznie na początku bloku. Definicja zmiennej powoduje rezerwacje pamięci. Ta sama zmienna może być zdefiniowana tylko jeden raz w zakresie bloku. 13

Zmienne i bloki. Przykład int i1 = 100; void fun() { printf("i1 = %d\n", i1); //i1 = 100; int i1 = 10; printf("i1 = %d\n", i1); //i1 = 10; { int i1 = 1; printf("i1 = %d\n", i1); //i1 = 1; printf("i1 = %d\n", ::i1); //i1 = 100; fun2(); } printf("i1 = %d\n", i1); //i1 = 10; } void fun2() { printf("i1 = %d\n", i1); //i1 = 100; } 14

Często zmienne systemowe (nazwy funkcyj systemowych) zaczynają się z _. Dla tego nie radzimy zaczynać swoje zmienne (nazwy funkcyj) ze znaku _. To nie jest błąd (kompilator nic nie wykryje), ale może spowodować błędy na etapie linkowania albo obliczenia, które bardzo ciężko wykryć. Podstawowe typy zmiennych //liczby całkowite int // 2 lub 4 B zależy od kompilatora short // 2 B [-32 768, 32 767] long // 4 B [-2 147 483 648, 2 147 483 647] int64 // 8 B [ 9 223 372 036 854 775 808, 9 223 372 036 854 775 807] 15

unsigned short // 2 B [0, 65 535] Uwaga! u_a u_b > 0! unsigned long // 4 B [0, 4 294 967 295] unsigned int u_a = 2; unsigned int u_b = 3; u_a - u_b = 4 294 967 295 //liczby rzeczywiste float // 4 B [+/- 3.4E +/- 38] (7 digits) double // 8 B [+/- 1.7E +/- 308] (15 digits) char //1 B zmienna znakowa (bit znaku jest interpret.) [-128, 127] unsigned char //1 B zmienna znakowa (bit znaku nie jest inter.) [ 0, 255] size_t sizeof ( typ_zmiennej ) zwraca długość zmiennej w B, 16

Przyklad: int ia; double ac; size_t len; len = sizeof(ia); //len = 4 len = sizeof(int); //len = 4 len = sizeof(ac); //len = 8 len = sizeof(double); //len = 8 Funkcja printf: int printf( const char *format [, argument]... ); Formatuje i wydrukuje ciąg znaków (symboli) i wartości w standardowy wyjściowy strumień stdout. Przy obecności argumentów ciąg znaków format mysi mieć specyfikacje, które definiują wejściowy format dla argumentów. Zwraca ilość znaków (symboli), które pozostali wydrukowane, albo ujemną wartość przy błędnym zakończeniu. Specyfikacja formatu: %[flags] [width] [.precision] [{h l I64 L}]type 17

type Symbol Typ Format wyjściowy d int Znakowa dziesiętna cała f e g u float double float double float double unsigned int Znakowa w kształcie [ ]dddd.dddd, dzie dddd jest jedna lub więcej cyfr dziesiętnych. Ilość cyfr przed. zależy od wielkości wartości, ilość po. - od żądanej precyzji. Wartość znakowa w kształcie [ ]d.dddd e [sign]dd[d], gdzie d jest jedną cyfrą dziesiętną, dddd - jedna lub więcej cyfr dziesiętnych, dd[d] są dwie lub trzy cyfry dziesiętny (zależy to od output format i wielkości eksponent. sign jest + lub. Wartość znakowa w formacie e lub f zależy to od tego, jaki format będzie bardziej kompakt. przy podanej wartości i precyzji Bez znakowa dziesiętna cała s string Ciąg znaków (symboli) 18

flags Flaga Znaczenie Domyślnie - Wyrównanie po lewej krawędzi pola Po prawej + Dla wartości znakowych drukować znak + Drukuje tylko -, + jest pominięty 0 Uzupełnienie 0 patrz width Uzupełnienie (spacjami) Width minimalny rozmiar pola. Wartość będzie wpisana do pola o co najmniej takim rozmiarze. Jeśli wartość składa się z mniejszej liczby znaków, to pole będzie uzupełnione odstępami (z prawej lub z lewej strony flag). Precision maksymalna wyprowadzona liczba cyfr po kropce dla wartości typu float, double. h l I64 L l - argument jest typu long, a nie int, lub double, a nie float h - short, a nie int I64 - int64 19

int scanf( const char *format [, argument]... ); Czyta dane z standardowy wejściowy strumień danych stdin (klawiatury) i przypisuje ich argumentom. Zwraca ilość udało przeczytanych, konwertowanych i przypisanych argumentom pól; wartość zwracana nie liczy pól, które byli przeczytane przecież nie pozostali przypisane. Zero oznacza, że żadnego pola nie pozostało przypisane. [argument] Musi odpowiadać typu zmiennej, określonej w formacie To jest wskaźnik na zmienne, czyli ej adres Przykład WW2 20

21

22

23