Etapy kompilacji. Wykład 7. Przetwarzanie wstępne, str. 1. #define ILE for(i=0; i<ile; i++)...

Wielkość: px
Rozpocząć pokaz od strony:

Download "Etapy kompilacji. Wykład 7. Przetwarzanie wstępne, str. 1. #define ILE for(i=0; i<ile; i++)..."

Transkrypt

1 Etapy kompilacji Wykład 7 Przetwarzanie wstępne, str 1 #define ILE 100 for(i=0; i<ile; i++)

2 Etapy kompilacji Wykład 7 Przetwarzanie wstępne, str 1 #define ILE 100 for(i=0; i<ile; i++) #include #define #if

3 Etapy kompilacji Wykład 7 Przetwarzanie wstępne, str 1 #define ILE 100 for(i=0; i<ile; i++) przetwarzanie wstępne #include #define #if for(i=0; i<100; i++)

4 Etapy kompilacji Wykład 7 Przetwarzanie wstępne, str 1 #define ILE 100 for(i=0; i<ile; i++) przetwarzanie wstępne #include #define #if for(i=0; i<100; i++) kompilacja właściwa binaria

5 Etapy kompilacji Wykład 7 Przetwarzanie wstępne, str 1 #define ILE 100 for(i=0; i<ile; i++) przetwarzanie wstępne #include #define #if for(i=0; i<100; i++) kompilacja właściwa dane binaria wyniki

6 Etapy kompilacji Wykład 7 Przetwarzanie wstępne, str 1 #define ILE 100 for(i=0; i<ile; i++) przetwarzanie wstępne #include #define #if for(i=0; i<100; i++) kompilacja właściwa dane Przetwarzanie wstępne preprocessing binaria wyniki

7 Wykład 7 Przetwarzanie wstępne, str 2 Przed właściwą kompilacją tekst programu jest przekształcany zgodnie z dyrektywami programisty

8 Wykład 7 Przetwarzanie wstępne, str 2 Przed właściwą kompilacją tekst programu jest przekształcany zgodnie z dyrektywami programisty To przekształcenie jest czysto tekstowe preprocesor nie zajmuje się logiką programu Nieostrożnie napisane dyrektywy mogą spowodować, że program nie da się skompilować, albo będzie działał błędnie

9 Wykład 7 Przetwarzanie wstępne, str 2 Przed właściwą kompilacją tekst programu jest przekształcany zgodnie z dyrektywami programisty To przekształcenie jest czysto tekstowe preprocesor nie zajmuje się logiką programu Nieostrożnie napisane dyrektywy mogą spowodować, że program nie da się skompilować, albo będzie działał błędnie

10 Wykład 7 Przetwarzanie wstępne, str 2 Przed właściwą kompilacją tekst programu jest przekształcany zgodnie z dyrektywami programisty To przekształcenie jest czysto tekstowe preprocesor nie zajmuje się logiką programu Nieostrożnie napisane dyrektywy mogą spowodować, że program nie da się skompilować, albo będzie działał błędnie Podstawowe dyrektywy: #include włączyć plik

11 Wykład 7 Przetwarzanie wstępne, str 2 Przed właściwą kompilacją tekst programu jest przekształcany zgodnie z dyrektywami programisty To przekształcenie jest czysto tekstowe preprocesor nie zajmuje się logiką programu Nieostrożnie napisane dyrektywy mogą spowodować, że program nie da się skompilować, albo będzie działał błędnie Podstawowe dyrektywy: #include włączyć plik #define zastąpić w tekście programu

12 Wykład 7 Przetwarzanie wstępne, str 2 Przed właściwą kompilacją tekst programu jest przekształcany zgodnie z dyrektywami programisty To przekształcenie jest czysto tekstowe preprocesor nie zajmuje się logiką programu Nieostrożnie napisane dyrektywy mogą spowodować, że program nie da się skompilować, albo będzie działał błędnie Podstawowe dyrektywy: #include włączyć plik #define zastąpić w tekście programu #if kompilować warunkowo

13 Wykład 7 Przetwarzanie wstępne, str 3 #include program na wielu plikach

14 Wykład 7 Przetwarzanie wstępne, str 3 #include program na wielu plikach #include"plik" plik Włącza(bez interpretowania) cały plik

15 Wykład 7 Przetwarzanie wstępne, str 3 #include program na wielu plikach #include"plik" plik Włącza(bez interpretowania) cały plik Dyrektywa#include"plik" włącza plik z aktualnego katalogu opracowany przez programistę

16 Wykład 7 Przetwarzanie wstępne, str 3 #include program na wielu plikach #include"plik" plik Włącza(bez interpretowania) cały plik Dyrektywa#include"plik" włącza plik z aktualnego katalogu opracowany przez programistę Dyrektywa#include<plik> włącza plik z katalogu kompilatora opracowany przez autora kompilatora

17 Wykład 7 Przetwarzanie wstępne, str 4 #include program na wielu plikach #include"globalne" intmain(){ printf("\n%s\n\n",haslo); return 0; }

18 Wykład 7 Przetwarzanie wstępne, str 4 #include program na wielu plikach #include"globalne" intmain(){ printf("\n%s\n\n",haslo); return 0; } Błędy: niezadeklarowane printf haslo

19 Wykład 7 Przetwarzanie wstępne, str 4 #include program na wielu plikach #include"globalne" intmain(){ printf("\n%s\n\n",haslo); return 0; } globalne #include<stdioh> char haslo[20] ="Naprzod!";

20 Wykład 7 Przetwarzanie wstępne, str 4 #include program na wielu plikach #include"globalne" intmain(){ printf("\n%s\n\n",haslo); return 0; } Drukuje: Naprzod! globalne #include<stdioh> char haslo[20] ="Naprzod!";

21 Wykład 7 Przetwarzanie wstępne, str 4 #include program na wielu plikach #include"globalne" intmain(){ printf("\n%s\n\n",haslo); return 0; } Drukuje: Naprzod! globalne #include<stdioh> char haslo[20] ="Naprzod!"; Plik inkludowany może inkludować inne pliki

22 Wykład 7 Przetwarzanie wstępne, str 5 #include program na wielu plikach Co inkludujemy, pisząc na początku programu #include<stdioh> lub #include<mathh> itp?

23 Wykład 7 Przetwarzanie wstępne, str 5 #include program na wielu plikach Co inkludujemy, pisząc na początku programu #include<stdioh> lub #include<mathh> itp? (Na sigmie te pliki mieszczą w/usr/include/ można zajrzeć)

24 Wykład 7 Przetwarzanie wstępne, str 5 #include program na wielu plikach Co inkludujemy, pisząc na początku programu #include<stdioh> lub #include<mathh> itp? (Na sigmie te pliki mieszczą w/usr/include/ można zajrzeć) W standardowym pliku nagłówkowym(header file) mieszczą się min definicjetypów npfile

25 Wykład 7 Przetwarzanie wstępne, str 5 #include program na wielu plikach Co inkludujemy, pisząc na początku programu #include<stdioh> lub #include<mathh> itp? (Na sigmie te pliki mieszczą w/usr/include/ można zajrzeć) W standardowym pliku nagłówkowym(header file) mieszczą się min definicjetypów npfile definicjestałych npeof

26 Wykład 7 Przetwarzanie wstępne, str 5 #include program na wielu plikach Co inkludujemy, pisząc na początku programu #include<stdioh> lub #include<mathh> itp? (Na sigmie te pliki mieszczą w/usr/include/ można zajrzeć) W standardowym pliku nagłówkowym(header file) mieszczą się min definicjetypów npfile definicjestałych npeof deklaracje zmiennych np stdout(zmienna typu FILE*, wskaźnik na plik związany z ekranem)

27 Wykład 7 Przetwarzanie wstępne, str 5 #include program na wielu plikach Co inkludujemy, pisząc na początku programu #include<stdioh> lub #include<mathh> itp? (Na sigmie te pliki mieszczą w/usr/include/ można zajrzeć) W standardowym pliku nagłówkowym(header file) mieszczą się min definicjetypów npfile definicjestałych npeof deklaracje zmiennych np stdout(zmienna typu FILE*, wskaźnik na plik związany z ekranem) nagłówki funkcji np printf; wyłącznie nagłówki, bez definicji!

28 Wykład 7 Przetwarzanie wstępne, str 5 #include program na wielu plikach Co inkludujemy, pisząc na początku programu #include<stdioh> lub #include<mathh> itp? (Na sigmie te pliki mieszczą w/usr/include/ można zajrzeć) W standardowym pliku nagłówkowym(header file) mieszczą się min definicjetypów npfile definicjestałych npeof deklaracje zmiennych np stdout(zmienna typu FILE*, wskaźnik na plik związany z ekranem) nagłówki funkcji np printf; wyłącznie nagłówki, bez definicji!

29 Wykład 7 Przetwarzanie wstępne, str 5 #include program na wielu plikach Co inkludujemy, pisząc na początku programu #include<stdioh> lub #include<mathh> itp? (Na sigmie te pliki mieszczą w/usr/include/ można zajrzeć) W standardowym pliku nagłówkowym(header file) mieszczą się min definicjetypów npfile definicjestałych npeof deklaracje zmiennych np stdout(zmienna typu FILE*, wskaźnik na plik związany z ekranem) nagłówki funkcji np printf; wyłącznie nagłówki, bez definicji! Np intprintf(char*format,);

30 Wykład 7 Przetwarzanie wstępne, str 5 #include program na wielu plikach Co inkludujemy, pisząc na początku programu #include<stdioh> lub #include<mathh> itp? (Na sigmie te pliki mieszczą w/usr/include/ można zajrzeć) W standardowym pliku nagłówkowym(header file) mieszczą się min definicjetypów npfile definicjestałych npeof deklaracje zmiennych np stdout(zmienna typu FILE*, wskaźnik na plik związany z ekranem) nagłówki funkcji np printf; wyłącznie nagłówki, bez definicji! Np intprintf(char*format,); Definicje funkcji standardowych mieszczą się w bibliotece standardowej C, a nie w pliku nagłówkowym

31 Wykład 7 Przetwarzanie wstępne, str 6 #include własny plik nagłówkowy

32 Wykład 7 Przetwarzanie wstępne, str 6 #include własny plik nagłówkowy Modularność programu ułatwia panowanie nad dużymi systemami W najprostszym przypadku:

33 Wykład 7 Przetwarzanie wstępne, str 6 #include własny plik nagłówkowy Modularność programu ułatwia panowanie nad dużymi systemami W najprostszym przypadku: funkcje ogólne na jednym pliku; np 1ulamki-definicjec

34 Wykład 7 Przetwarzanie wstępne, str 6 #include własny plik nagłówkowy Modularność programu ułatwia panowanie nad dużymi systemami W najprostszym przypadku: funkcje ogólne na jednym pliku; np 1ulamki-definicjec używający ich program główny na innym; np 1ulamki-glownyc

35 Wykład 7 Przetwarzanie wstępne, str 6 #include własny plik nagłówkowy Modularność programu ułatwia panowanie nad dużymi systemami W najprostszym przypadku: funkcje ogólne na jednym pliku; np 1ulamki-definicjec używający ich program główny na innym; np 1ulamki-glownyc wspólna kompilacja: gcc-wall 1ulamki-definicjec 1ulamki-glownyc

36 Wykład 7 Przetwarzanie wstępne, str 6 #include własny plik nagłówkowy Modularność programu ułatwia panowanie nad dużymi systemami W najprostszym przypadku: funkcje ogólne na jednym pliku; np 1ulamki-definicjec używający ich program główny na innym; np 1ulamki-glownyc wspólna kompilacja: gcc-wall 1ulamki-definicjec 1ulamki-glownyc (patrz 07-Ulamki/)

37 Wykład 7 Przetwarzanie wstępne, str 6 #include własny plik nagłówkowy Modularność programu ułatwia panowanie nad dużymi systemami W najprostszym przypadku: funkcje ogólne na jednym pliku; np 1ulamki-definicjec używający ich program główny na innym; np 1ulamki-glownyc wspólna kompilacja: gcc-wall 1ulamki-definicjec 1ulamki-glownyc (patrz 07-Ulamki/) gcc-wall część wspólna definicje część wspólna główny

38 Wykład 7 Przetwarzanie wstępne, str 7 #include własny plik nagłówkowy część wspólna gcc-wall #include"" definicje h #include"" główny

39 Wykład 7 Przetwarzanie wstępne, str 7 #include własny plik nagłówkowy część wspólna gcc-wall #include"" definicje h #include"" główny typy, stałe, zmienne i nagłówki funkcji; np 2ulamkih; funkcje ogólne; np 2ulamki-definicjec; używający ich program główny; np 2ulamki-glownyc; wspólna kompilacja } biblioteka

40 Wykład 7 Przetwarzanie wstępne, str 7 #include własny plik nagłówkowy część wspólna gcc-wall #include"" definicje h #include"" główny typy, stałe, zmienne i nagłówki funkcji; np 2ulamkih; funkcje ogólne; np 2ulamki-definicjec; używający ich program główny; np 2ulamki-glownyc; wspólna kompilacja } biblioteka

41 Wykład 7 Przetwarzanie wstępne, str 7 #include własny plik nagłówkowy część wspólna gcc-wall #include"" definicje h #include"" główny typy, stałe, zmienne i nagłówki funkcji; np 2ulamkih; funkcje ogólne; np 2ulamki-definicjec; używający ich program główny; np 2ulamki-glownyc; wspólna kompilacja } biblioteka

42 Wykład 7 Przetwarzanie wstępne, str 7 #include własny plik nagłówkowy część wspólna gcc-wall #include"" definicje h #include"" główny typy, stałe, zmienne i nagłówki funkcji; np 2ulamkih; funkcje ogólne; np 2ulamki-definicjec; używający ich program główny; np 2ulamki-glownyc; wspólna kompilacja } biblioteka

43 Wykład 7 Przetwarzanie wstępne, str 7 #include własny plik nagłówkowy część wspólna gcc-wall #include"" definicje h #include"" główny typy, stałe, zmienne i nagłówki funkcji; np 2ulamkih; funkcje ogólne; np 2ulamki-definicjec; używający ich program główny; np 2ulamki-glownyc; wspólna kompilacja } biblioteka

44 Wykład 7 Przetwarzanie wstępne, str 8 #include własny plik nagłówkowy Utrzymywanie tej samej części wspólnej w kilku różnych plikach jest niepraktyczne Dokonywanie w niej zmian wymaga zmieniania kilku plików

45 Wykład 7 Przetwarzanie wstępne, str 8 #include własny plik nagłówkowy Utrzymywanie tej samej części wspólnej w kilku różnych plikach jest niepraktyczne Dokonywanie w niej zmian wymaga zmieniania kilku plików

46 Wykład 7 Przetwarzanie wstępne, str 8 #include własny plik nagłówkowy Utrzymywanie tej samej części wspólnej w kilku różnych plikach jest niepraktyczne Dokonywanie w niej zmian wymaga zmieniania kilku plików Staramysię,żebytensamkodpisanybyłtylkoraz;albowplikuz definicjami, albo w programie głównym

47 Wykład 7 Przetwarzanie wstępne, str 8 #include własny plik nagłówkowy Utrzymywanie tej samej części wspólnej w kilku różnych plikach jest niepraktyczne Dokonywanie w niej zmian wymaga zmieniania kilku plików Minimum tego, co musi być znane zarówno definicjom jak programowi głównemu(definicje typów, stałych, deklaracje zmiennych, nagłówki funkcji) wynosimy do odrębnego pliku nagłówkowego

48 Wykład 7 Przetwarzanie wstępne, str 8 #include własny plik nagłówkowy Utrzymywanie tej samej części wspólnej w kilku różnych plikach jest niepraktyczne Dokonywanie w niej zmian wymaga zmieniania kilku plików Staramysię,żebytensamkodpisanybyłtylkoraz;albowplikuz definicjami, albo w programie głównym Minimum tego, co musi być znane zarówno definicjom jak programowi głównemu(definicje typów, stałych, deklaracje zmiennych, nagłówki funkcji) wynosimy do odrębnego pliku nagłówkowego Nazwy plików nagłówkowych tradycyjnie mają rozszerzenie h od ang header

49 Wykład 7 Przetwarzanie wstępne, str 8 #include własny plik nagłówkowy Utrzymywanie tej samej części wspólnej w kilku różnych plikach jest niepraktyczne Dokonywanie w niej zmian wymaga zmieniania kilku plików Staramysię,żebytensamkodpisanybyłtylkoraz;albowplikuz definicjami, albo w programie głównym Minimum tego, co musi być znane zarówno definicjom jak programowi głównemu(definicje typów, stałych, deklaracje zmiennych, nagłówki funkcji) wynosimy do odrębnego pliku nagłówkowego Nazwy plików nagłówkowych tradycyjnie mają rozszerzenie h od ang header Autor programu głównego nie musi znać treści pliku z definicjami, ale powinien znać treść pliku nagłówkowego

50 Wykład 7 Przetwarzanie wstępne, str 9 #define zastępowanie w programie

51 Wykład 7 Przetwarzanie wstępne, str 9 #define zastępowanie w programie #define ABC defg ABC ABC

52 Wykład 7 Przetwarzanie wstępne, str 9 #define zastępowanie w programie #define ABC defg ABC ABC defg defg

53 Wykład 7 Przetwarzanie wstępne, str 9 #define zastępowanie w programie #define ABC defg ABC ABC defg defg Dyrektywa #define MAKRO reszta wiersza powoduje zastąpienie wszystkich wystąpień MAKRa w programie przez resztę wiersza

54 Wykład 7 Przetwarzanie wstępne, str 10 #define zastępowanie w programie Przykład: (UWAŻAĆ!) M #define ILE 100; if(ile < 1000) printf("\n mniejsze\n\n"); else printf("\n niemniejsze\n\n");

55 Wykład 7 Przetwarzanie wstępne, str 10 #define zastępowanie w programie Przykład: (UWAŻAĆ!) M #define ILE 100; if(ile < 1000) printf("\n mniejsze\n\n"); else printf("\n niemniejsze\n\n"); sygnalizuje błąd: error: expected ) before ; token

56 Wykład 7 Przetwarzanie wstępne, str 10 #define zastępowanie w programie Przykład: (UWAŻAĆ!) M #define ILE 100; if(ile < 1000) printf("\n mniejsze\n\n"); else printf("\n niemniejsze\n\n"); sygnalizuje błąd: error: expected ) before ; token Wynik zastąpienia: if(100; < 1000) printf("\n mniejsze\n\n"); else printf("\n niemniejsze\n\n");

57 Wykład 7 Przetwarzanie wstępne, str 10 #define zastępowanie w programie Przykład: (UWAŻAĆ!) M #define ILE 100; if(ile < 1000) printf("\n mniejsze\n\n"); else printf("\n niemniejsze\n\n"); sygnalizuje błąd: error: expected ) before ; token Wynik zastąpienia: if(100; < 1000) printf("\n mniejsze\n\n"); else printf("\n niemniejsze\n\n"); Winny jest średnik

58 Wykład 7 Przetwarzanie wstępne, str 11 #define zastępowanie w programie Nie zastępuje się części słów

59 Wykład 7 Przetwarzanie wstępne, str 11 #define zastępowanie w programie Nie zastępuje się części słów; np nie będzie żadnego zastąpienia w tym przypadku: #define KOT pies BOJKOT

60 Wykład 7 Przetwarzanie wstępne, str 11 #define zastępowanie w programie Nie zastępuje się części słów; np nie będzie żadnego zastąpienia w tym przypadku: #define KOT pies BOJKOT Nie zastępuje się we wnętrzu cudzysłowu

61 Wykład 7 Przetwarzanie wstępne, str 11 #define zastępowanie w programie Nie zastępuje się części słów; np nie będzie żadnego zastąpienia w tym przypadku: #define KOT pies BOJKOT Nie zastępuje się we wnętrzu cudzysłowu; np nie będzie żadnego zastąpienia w tym przypadku: #define KOT pies printf("wlazł KOT na płot\n");

62 Wykład 7 Przetwarzanie wstępne, str 12 #define zastępowanie z parametrami

63 Wykład 7 Przetwarzanie wstępne, str 12 #define zastępowanie z parametrami Makro może mieć parametry nazwy pooddzielane przecinkami

64 Wykład 7 Przetwarzanie wstępne, str 12 #define zastępowanie z parametrami Makro może mieć parametry nazwy pooddzielane przecinkami Przy zastępowaniu parametry są tekstowo (czyli na ślepo, bezmyślnie ) zastępowane argumentami wywołania

65 Wykład 7 Przetwarzanie wstępne, str 12 #define zastępowanie z parametrami Makro może mieć parametry nazwy pooddzielane przecinkami Przy zastępowaniu parametry są tekstowo (czyli na ślepo, bezmyślnie ) zastępowane argumentami wywołania #define KWADRAT(x) x*x printf("%i\n",kwadrat(4)); printf("%2lf\n",kwadrat(12));

66 Wykład 7 Przetwarzanie wstępne, str 12 #define zastępowanie z parametrami Makro może mieć parametry nazwy pooddzielane przecinkami Przy zastępowaniu parametry są tekstowo (czyli na ślepo, bezmyślnie ) zastępowane argumentami wywołania #define KWADRAT(x) x*x printf("%i\n",kwadrat(4)); printf("%2lf\n",kwadrat(12)); printf("%i\n",4*4); printf("%2lf\n",12*12);

67 Wykład 7 Przetwarzanie wstępne, str 12 #define zastępowanie z parametrami Makro może mieć parametry nazwy pooddzielane przecinkami Przy zastępowaniu parametry są tekstowo (czyli na ślepo, bezmyślnie ) zastępowane argumentami wywołania #define KWADRAT(x) x*x printf("%i\n",kwadrat(4)); printf("%2lf\n",kwadrat(12)); printf("%i\n",4*4); printf("%2lf\n",12*12); Aletrzebauważać

68 Wykład 7 Przetwarzanie wstępne, str 13 #define zastępowanie z parametrami #define KWADRAT(x) x*x printf("%i\n",kwadrat(2+2)); Taka komenda drukuje 8 (zamiast 16)

69 Wykład 7 Przetwarzanie wstępne, str 13 #define zastępowanie z parametrami #define KWADRAT(x) x*x printf("%i\n",kwadrat(2+2)); Taka komenda drukuje 8 (zamiast 16)

70 Wykład 7 Przetwarzanie wstępne, str 13 #define zastępowanie z parametrami #define KWADRAT(x) x*x printf("%i\n",kwadrat(2+2)); Taka komenda drukuje 8 (zamiast 16) Wynik zastąpienia: 2+2*2+2 Lepsza definicja: #define KWADRAT(x)(x)*(x) wynik zastąpienia: (2+2)*(2+2)

71 Wykład 7 Przetwarzanie wstępne, str 13 #define zastępowanie z parametrami #define KWADRAT(x) x*x printf("%i\n",kwadrat(2+2)); Taka komenda drukuje 8 (zamiast 16) Wynik zastąpienia: 2+2*2+2 Lepsza definicja: #define KWADRAT(x)(x)*(x) wynik zastąpienia: (2+2)*(2+2)

72 Wykład 7 Przetwarzanie wstępne, str 14 #define zastępowanie z parametrami #define DLA(I, N) for(i=0; I<(N); I++)

73 Wykład 7 Przetwarzanie wstępne, str 14 #define zastępowanie z parametrami #definedla(i,n)for(i=0;i<(n);i++) pętlapoiod0don

74 Wykład 7 Przetwarzanie wstępne, str 14 #define zastępowanie z parametrami #definedla(i,n)for(i=0;i<(n);i++) pętlapoiod0don Wtedy: w=1; DLA(i,N)w=2*w; obliczapotęgęw=2 N w=1; DLA(i,N)w=w*(i+1); obliczasilnięw=n! DLA(i,n) DLA(j,k) tab[i][j] = 0; zeruje tablicę tab[n][k]

75 Wykład 7 Przetwarzanie wstępne, str 14 #define zastępowanie z parametrami #definedla(i,n)for(i=0;i<(n);i++) pętlapoiod0don Wtedy: w=1; DLA(i,N)w=2*w; obliczapotęgęw=2 N w=1; DLA(i,N)w=w*(i+1); obliczasilnięw=n! DLA(i,n) DLA(j,k) tab[i][j] = 0; zeruje tablicę tab[n][k]

76 Wykład 7 Przetwarzanie wstępne, str 14 #define zastępowanie z parametrami #definedla(i,n)for(i=0;i<(n);i++) pętlapoiod0don Wtedy: w=1; DLA(i,N)w=2*w; obliczapotęgęw=2 N w=1; DLA(i,N)w=w*(i+1); obliczasilnięw=n! DLA(i,n) DLA(j,k) tab[i][j] = 0; zeruje tablicę tab[n][k]

77 Wykład 7 Przetwarzanie wstępne, str 15 #define zastępowanie z parametrami UWAGA NA SPACJE!

78 Wykład 7 Przetwarzanie wstępne, str 15 #define zastępowanie z parametrami UWAGA NA SPACJE! #define ZLE(int)06+(int) printf("%i\n",(int)(zle(06))); makro bez parametrów: printf("%i\n",(int)((int)06+(int)(06))); drukuje: 0 #define ZLE(int)06+(int) printf("%i\n",(int)(zle(06))); makro z parametrem: printf("%i\n",(int)(06+06)); drukuje: 1

79 Wykład 7 Przetwarzanie wstępne, str 15 #define zastępowanie z parametrami UWAGA NA SPACJE! #define ZLE(int)06+(int) printf("%i\n",(int)(zle(06))); makro bez parametrów: printf("%i\n",(int)((int)06+(int)(06))); drukuje: 0 #define ZLE(int)06+(int) printf("%i\n",(int)(zle(06))); makro z parametrem: printf("%i\n",(int)(06+06)); drukuje: 1

80 Wykład 7 Przetwarzanie wstępne, str 15 #define zastępowanie z parametrami UWAGA NA SPACJE! #define ZLE(int)06+(int) printf("%i\n",(int)(zle(06))); makro bez parametrów: printf("%i\n",(int)((int)06+(int)(06))); drukuje: 0 #define ZLE(int)06+(int) printf("%i\n",(int)(zle(06))); makro z parametrem: printf("%i\n",(int)(06+06)); drukuje: 1

81 Wykład 7 Przetwarzanie wstępne, str 15 #define zastępowanie z parametrami UWAGA NA SPACJE! #define ZLE(int)06+(int) printf("%i\n",(int)(zle(06))); makro bez parametrów: printf("%i\n",(int)((int)06+(int)(06))); drukuje: 0 #define ZLE(int)06+(int) printf("%i\n",(int)(zle(06))); makro z parametrem: printf("%i\n",(int)(06+06)); drukuje: 1

82 Wykład 7 Przetwarzanie wstępne, str 15 #define zastępowanie z parametrami UWAGA NA SPACJE! #define ZLE(int)06+(int) printf("%i\n",(int)(zle(06))); makro bez parametrów: printf("%i\n",(int)((int)06+(int)(06))); drukuje: 0 #define ZLE(int)06+(int) printf("%i\n",(int)(zle(06))); makro z parametrem: printf("%i\n",(int)(06+06)); drukuje: 1

83 Wykład 7 Przetwarzanie wstępne, str 15 #define zastępowanie z parametrami UWAGA NA SPACJE! #define ZLE(int)06+(int) printf("%i\n",(int)(zle(06))); makro bez parametrów: printf("%i\n",(int)((int)06+(int)(06))); drukuje: 0 #define ZLE(int)06+(int) printf("%i\n",(int)(zle(06))); makro z parametrem: printf("%i\n",(int)(06+06)); drukuje: 1

84 Wykład 7 Przetwarzanie wstępne, str 16 #define zastępowanie z parametrami Poprzedzenie parametru makra płotkiem# powoduje ujęcie argumentu w cudzysłów

85 Wykład 7 Przetwarzanie wstępne, str 16 #define zastępowanie z parametrami Poprzedzenie parametru makra płotkiem# powoduje ujęcie argumentu w cudzysłów: #define PYTAJ O(zmienna)\ {printf("%s==",#zmienna);scanf("%i",&zmienna); }

86 Wykład 7 Przetwarzanie wstępne, str 16 #define zastępowanie z parametrami Poprzedzenie parametru makra płotkiem# powoduje ujęcie argumentu w cudzysłów: #define PYTAJ O(zmienna)\ {printf("%s==",#zmienna);scanf("%i",&zmienna); } Wtedy PYTAJ O(N) rozwija się do {printf("%s==","n");scanf("%i",&n); }

87 Wykład 7 Przetwarzanie wstępne, str 16 #define zastępowanie z parametrami Poprzedzenie parametru makra płotkiem# powoduje ujęcie argumentu w cudzysłów: #define PYTAJ O(zmienna)\ {printf("%s==",#zmienna);scanf("%i",&zmienna); } Wtedy PYTAJ O(N) rozwija się do {printf("%s==","n");scanf("%i",&n); } idrukuje N== anastępniewczytujeliczbęcałkowitądozmiennej N

88 Wykład 7 Przetwarzanie wstępne, str 17 #define makra standardowe Komenda: printf(" Data:%s Czas:%s Plik:%s Wiersz:%i\n", DATE, TIME, FILE, LINE ); wydrukowała: Data: Mar Czas: 14:43:33 Plik: testc Wiersz: 5

89 Wykład 7 Przetwarzanie wstępne, str 17 #define makra standardowe Komenda: printf(" Data:%s Czas:%s Plik:%s Wiersz:%i\n", DATE, TIME, FILE, LINE ); wydrukowała: Data: Mar Czas: 14:43:33 Plik: testc Wiersz: 5 DATE data TIME czas(godz:min:sek) FILE przetwarzany plik LINE nrwiersza

90 Wykład 7 Przetwarzanie wstępne, str 17 #define makra standardowe Komenda: printf(" Data:%s Czas:%s Plik:%s Wiersz:%i\n", DATE, TIME, FILE, LINE ); wydrukowała: Data: Mar Czas: 14:43:33 Plik: testc Wiersz: 5 DATE data TIME czas(godz:min:sek) FILE przetwarzany plik LINE nrwiersza

91 Wykład 7 Przetwarzanie wstępne, str 17 #define makra standardowe Komenda: printf(" Data:%s Czas:%s Plik:%s Wiersz:%i\n", DATE, TIME, FILE, LINE ); wydrukowała: Data: Mar Czas: 14:43:33 Plik: testc Wiersz: 5 DATE data TIME czas(godz:min:sek) FILE przetwarzany plik LINE nrwiersza

92 Wykład 7 Przetwarzanie wstępne, str 17 #define makra standardowe Komenda: printf(" Data:%s Czas:%s Plik:%s Wiersz:%i\n", DATE, TIME, FILE, LINE ); wydrukowała: Data: Mar Czas: 14:43:33 Plik: testc Wiersz: 5 DATE data TIME czas(godz:min:sek) FILE przetwarzany plik LINE nrwiersza

93 Wykład 7 Przetwarzanie wstępne, str 18 #define zastosowaniemakr FILE i LINE #define BLAD WEWN\ printf("\nbladwewnetrzny");\ printf("\n Powiadom autora programu podajac:");\ printf("\n nazwepliku:%s", FILE );\ printf("\n numer wiersza:%i\n\n", LINE ); if()bladwewn

94 Wykład 7 Przetwarzanie wstępne, str 18 #define zastosowaniemakr FILE i LINE #define BLAD WEWN\ printf("\nbladwewnetrzny");\ printf("\n Powiadom autora programu podajac:");\ printf("\n nazwepliku:%s", FILE );\ printf("\n numer wiersza:%i\n\n", LINE ); if()bladwewn drukuje: BLAD WEWNETRZNY Powiadom autora programu podajac: nazwe pliku: testc numer wiersza: 10

95 Wykład 7 Przetwarzanie wstępne, str 19 #define zastępowanie z parametrami Napisy, ujęte w cudzysłowy i postawione obok siebie, zlewają się w jeden: char napis[30] ="Maly""dom"; = char napis[30] ="Maly dom";

96 Wykład 7 Przetwarzanie wstępne, str 19 #define zastępowanie z parametrami Napisy, ujęte w cudzysłowy i postawione obok siebie, zlewają się w jeden: char napis[30] ="Maly""dom"; = char napis[30] ="Maly dom"; #define OSTRZEGAJ JESLI(cos zle)\ if(cos zle)\ printf("ostrzezenie:"#coszle"wwierszu%i\n", LINE ); OSTRZEGAJ JESLI(a[i]==0)

97 Wykład 7 Przetwarzanie wstępne, str 19 #define zastępowanie z parametrami Napisy, ujęte w cudzysłowy i postawione obok siebie, zlewają się w jeden: char napis[30] ="Maly""dom"; = char napis[30] ="Maly dom"; #define OSTRZEGAJ JESLI(cos zle)\ if(cos zle)\ printf("ostrzezenie:"#coszle"wwierszu%i\n", LINE ); OSTRZEGAJ JESLI(a[i]==0) if(a[i]==0) printf("ostrzezenie:""a[i]==0"" w wierszu%i\n", 10);

98 Wykład 7 Przetwarzanie wstępne, str 19 #define zastępowanie z parametrami Napisy, ujęte w cudzysłowy i postawione obok siebie, zlewają się w jeden: char napis[30] ="Maly""dom"; = char napis[30] ="Maly dom"; #define OSTRZEGAJ JESLI(cos zle)\ if(cos zle)\ printf("ostrzezenie:"#coszle"wwierszu%i\n", LINE ); OSTRZEGAJ JESLI(a[i]==0) if(a[i]==0) printf("ostrzezenie:""a[i]==0"" w wierszu%i\n", 10); drukuje: OSTRZEZENIE: a[i]==0 w wierszu 10

99 Wykład 7 Przetwarzanie wstępne, str 20 Dziedziczenie wielostronne

100 Wykład 7 Przetwarzanie wstępne, str 20 Dziedziczenie wielostronne Wwyniku wielostronnego dziedziczenia przez #include dojść może do wielokrotnej definicji tego samego typu Błąd: conflicting types for punkt Jak tego uniknąć?

101 Wykład 7 Przetwarzanie wstępne, str 20 Dziedziczenie wielostronne Wwyniku wielostronnego dziedziczenia przez #include dojść może do wielokrotnej definicji tego samego typu Błąd: plik punkth: typedef struct { double x,y; } punkt; plik odcinekh: #include"punkth" typedef struct { punkt pocz,kon; }odcinek; plik trojkath: #include"punkth" typedef struct { punkt w1,w2,w3; }trojkat; conflicting types for punkt Jak tego uniknąć? plik geomc: #include"odcinekh" #include"trojkath" trojkattr={{0,0}, {1,0}, {0,1}};

102 Wykład 7 Przetwarzanie wstępne, str 20 Dziedziczenie wielostronne Wwyniku wielostronnego dziedziczenia przez #include dojść może do wielokrotnej definicji tego samego typu Błąd: plik punkth: typedef struct { double x,y; } punkt; plik odcinekh: #include"punkth" typedef struct { punkt pocz,kon; }odcinek; plik trojkath: #include"punkth" typedef struct { punkt w1,w2,w3; }trojkat; conflicting types for punkt Jak tego uniknąć? plik geomc: #include"odcinekh" #include"trojkath" trojkattr={{0,0}, {1,0}, {0,1}};

103 Wykład 7 Przetwarzanie wstępne, str 20 Dziedziczenie wielostronne Wwyniku wielostronnego dziedziczenia przez #include dojść może do wielokrotnej definicji tego samego typu Błąd: plik punkth: typedef struct { double x,y; } punkt; plik odcinekh: #include"punkth" typedef struct { punkt pocz,kon; }odcinek; plik trojkath: #include"punkth" typedef struct { punkt w1,w2,w3; }trojkat; conflicting types for punkt Jak tego uniknąć? plik geomc: #include"odcinekh" #include"trojkath" trojkattr={{0,0}, {1,0}, {0,1}};

104 Wykład 7 Przetwarzanie wstępne, str 20 Dziedziczenie wielostronne Wwyniku wielostronnego dziedziczenia przez #include dojść może do wielokrotnej definicji tego samego typu Błąd: plik punkth: typedef struct { double x,y; } punkt; plik odcinekh: #include"punkth" typedef struct { punkt pocz,kon; }odcinek; plik trojkath: #include"punkth" typedef struct { punkt w1,w2,w3; }trojkat; conflicting types for punkt Jak tego uniknąć? plik geomc: #include"odcinekh" #include"trojkath" trojkattr={{0,0}, {1,0}, {0,1}};

105 Wykład 7 Przetwarzanie wstępne, str 20 Dziedziczenie wielostronne Wwyniku wielostronnego dziedziczenia przez #include dojść może do wielokrotnej definicji tego samego typu Błąd: plik punkth: typedef struct { double x,y; } punkt; plik odcinekh: #include"punkth" typedef struct { punkt pocz,kon; }odcinek; plik trojkath: #include"punkth" typedef struct { punkt w1,w2,w3; }trojkat; conflicting types for punkt Jak tego uniknąć? plik geomc: #include"odcinekh" #include"trojkath" trojkattr={{0,0}, {1,0}, {0,1}};

106 Wykład 7 Przetwarzanie wstępne, str 21 Dziedziczenie wielostronne Wwyniku wielostronnego dziedziczenia przez #include dojść może do wielokrotnej definicji tego samego typu Błąd: conflicting types for punkt Jak tego uniknąć?

107 Wykład 7 Przetwarzanie wstępne, str 21 Dziedziczenie wielostronne Wwyniku wielostronnego dziedziczenia przez #include dojść może do wielokrotnej definicji tego samego typu Błąd: conflicting types for punkt Jak tego uniknąć? plik punkth: #ifndef PUNKT #define PUNKT typedef struct { double x,y; } punkt; #endif #define PUNKT definiuje makro specyficzne dla pliku punkth

108 Wykład 7 Przetwarzanie wstępne, str 21 Dziedziczenie wielostronne Wwyniku wielostronnego dziedziczenia przez #include dojść może do wielokrotnej definicji tego samego typu Błąd: conflicting types for punkt Jak tego uniknąć? plik punkth: #ifndef PUNKT #define PUNKT typedef struct { double x,y; } punkt; #endif #define PUNKT definiuje makro specyficzne dla pliku punkth

109 Wykład 7 Przetwarzanie wstępne, str 21 Dziedziczenie wielostronne Wwyniku wielostronnego dziedziczenia przez #include dojść może do wielokrotnej definicji tego samego typu Błąd: conflicting types for punkt Jak tego uniknąć? plik punkth: #ifndef PUNKT #define PUNKT typedef struct { double x,y; } punkt; #endif #define PUNKT definiuje makro specyficzne dla pliku punkth Część programu między #ifndef PUNKT a #endif jest wykonywana tylko wtedy, gdy makro PUNKT jest niezdefiniowane To się może zdarzyć tylko jeden raz

110 Wykład 7 Przetwarzanie wstępne, str 21 Dziedziczenie wielostronne Wwyniku wielostronnego dziedziczenia przez #include dojść może do wielokrotnej definicji tego samego typu Błąd: conflicting types for punkt Jak tego uniknąć? plik punkth: #ifndef PUNKT #define PUNKT typedef struct { double x,y; } punkt; #endif #define PUNKT definiuje makro specyficzne dla pliku punkth Część programu między #ifndef PUNKT a #endif jest wykonywana tylko wtedy, gdy makro PUNKT jest niezdefiniowane To się może zdarzyć tylko jeden raz

111 Wykład 7 Przetwarzanie wstępne, str 21 Dziedziczenie wielostronne Wwyniku wielostronnego dziedziczenia przez #include dojść może do wielokrotnej definicji tego samego typu Błąd: conflicting types for punkt Jak tego uniknąć? plik punkth: #ifndef PUNKT #define PUNKT typedef struct { double x,y; } punkt; #endif #define PUNKT definiuje makro specyficzne dla pliku punkth Część programu między #ifndef PUNKT a #endif jest wykonywana tylko wtedy, gdy makro PUNKT jest niezdefiniowane To się może zdarzyć tylko jeden raz Wobec tego typ punkt zostanie zdefiniowany tylko raz

112 Wykład 7 Przetwarzanie wstępne, str 22 Kompilacja warunkowa dyrektywy#if,#else,#elif,#endif

113 Wykład 7 Przetwarzanie wstępne, str 22 Kompilacja warunkowa dyrektywy#if,#else,#elif,#endif ( poprzednioomawianakonstrukcja#ifndef#endif też jest przykładem kompilacji warunkowej )

114 Wykład 7 Przetwarzanie wstępne, str 22 Kompilacja warunkowa dyrektywy#if,#else,#elif,#endif ( poprzednioomawianakonstrukcja#ifndef#endif też jest przykładem kompilacji warunkowej ) Te dyrektywy włączają do kompilacji fragmenty programu np w zależności od używanej maszyny lub systemu operacyjnego lub kompilatora

115 Wykład 7 Przetwarzanie wstępne, str 22 Kompilacja warunkowa dyrektywy#if,#else,#elif,#endif ( poprzednioomawianakonstrukcja#ifndef#endif też jest przykładem kompilacji warunkowej ) Te dyrektywy włączają do kompilacji fragmenty programu np w zależności od używanej maszyny lub systemu operacyjnego lub kompilatora, stadium uruchamiania programu wydruki testowe, ostatecznie usuwane

116 Wykład 7 Przetwarzanie wstępne, str 22 Kompilacja warunkowa dyrektywy#if,#else,#elif,#endif ( poprzednioomawianakonstrukcja#ifndef#endif też jest przykładem kompilacji warunkowej ) Te dyrektywy włączają do kompilacji fragmenty programu np w zależności od używanej maszyny lub systemu operacyjnego lub kompilatora, stadium uruchamiania programu wydruki testowe, ostatecznie usuwane, chwilowego wyboru wersji

117 Wykład 7 Przetwarzanie wstępne, str 22 Kompilacja warunkowa dyrektywy#if,#else,#elif,#endif ( poprzednioomawianakonstrukcja#ifndef#endif też jest przykładem kompilacji warunkowej ) Te dyrektywy włączają do kompilacji fragmenty programu np w zależności od używanej maszyny lub systemu operacyjnego lub kompilatora, stadium uruchamiania programu wydruki testowe, ostatecznie usuwane, chwilowego wyboru wersji, itp

118 Wykład 7 Przetwarzanie wstępne, str 23 Kompilacja warunkowa dyrektywy#if,#else,#elif,#endif #ifwarunek 0 program 0 #elifwarunek 1 program 1 #elifwarunek 2 program 2 #elifwarunek n program n #elseprogram n+1 #endif

119 Wykład 7 Przetwarzanie wstępne, str 23 Kompilacja warunkowa dyrektywy#if,#else,#elif,#endif #ifwarunek 0 program 0 #elifwarunek 1 program 1 #elifwarunek 2 program 2 #elifwarunek n program n #elseprogram n+1 #endif jeślispełnionyjestwarunek 0, tokompilowanyjesttylkoprogram 0 jeślispełnionyjestwarunek 1, tokompilowanyjesttylkoprogram 1 itd jeśli nie jest spełniony żaden z warunków, tokompilowanyjesttylkoprogram n+1

120 Wykład 7 Przetwarzanie wstępne, str 23 Kompilacja warunkowa dyrektywy#if,#else,#elif,#endif #ifwarunek 0 program 0 #elifwarunek 1 program 1 #elifwarunek 2 program 2 #elifwarunek n program n #elseprogram n+1 #endif jeślispełnionyjestwarunek 0, tokompilowanyjesttylkoprogram 0 jeślispełnionyjestwarunek 1, tokompilowanyjesttylkoprogram 1 itd jeśli nie jest spełniony żaden z warunków, tokompilowanyjesttylkoprogram n+1

121 Wykład 7 Przetwarzanie wstępne, str 23 Kompilacja warunkowa dyrektywy#if,#else,#elif,#endif #ifwarunek 0 program 0 #elifwarunek 1 program 1 #elifwarunek 2 program 2 #elifwarunek n program n #elseprogram n+1 #endif jeślispełnionyjestwarunek 0, tokompilowanyjesttylkoprogram 0 jeślispełnionyjestwarunek 1, tokompilowanyjesttylkoprogram 1 itd jeśli nie jest spełniony żaden z warunków, tokompilowanyjesttylkoprogram n+1

122 Wykład 7 Przetwarzanie wstępne, str 23 Kompilacja warunkowa dyrektywy#if,#else,#elif,#endif #ifwarunek 0 program 0 #elifwarunek 1 program 1 #elifwarunek 2 program 2 #elifwarunek n program n #elseprogram n+1 #endif jeślispełnionyjestwarunek 0, tokompilowanyjesttylkoprogram 0 jeślispełnionyjestwarunek 1, tokompilowanyjesttylkoprogram 1 itd jeśli nie jest spełniony żaden z warunków, tokompilowanyjesttylkoprogram n+1 Niekompilowanie niepotrzebnego kodu daje oszczędność pamięci

123 Wykład 7 Przetwarzanie wstępne, str 24 Kompilacja warunkowa dyrektywy#if,#else,#elif,#endif Przykład: M(Patrz 07-Sortowanie/)

124 Wykład 7 Przetwarzanie wstępne, str 24 Kompilacja warunkowa dyrektywy#if,#else,#elif,#endif Przykład: M(Patrz 07-Sortowanie/) W pliku sorth można wybrać jeden z algorytmów: #define BUBBLE //#define INSERTION //#definemerge

125 Wykład 7 Przetwarzanie wstępne, str 24 Kompilacja warunkowa dyrektywy#if,#else,#elif,#endif Przykład: M(Patrz 07-Sortowanie/) W pliku sorth można wybrać jeden z algorytmów: #define BUBBLE //#define INSERTION //#definemerge Wpliku sortc temuwyborowi odpowiada kompilacja warunkowa:

126 Wykład 7 Przetwarzanie wstępne, str 24 Kompilacja warunkowa dyrektywy#if,#else,#elif,#endif Przykład: M(Patrz 07-Sortowanie/) W pliku sorth można wybrać jeden z algorytmów: #define BUBBLE //#define INSERTION //#definemerge Wpliku sortc temuwyborowi odpowiada kompilacja warunkowa: #if defined BUBBLE void sort(double tab[wlk TABLICY]) { sortowaniebąbelkowe } #elif defined INSERTION void sort(double tab[wlk TABLICY]) { sortowanieprzezwstawianie } #elif defined MERGE void sort(double tab[wlk TABLICY]) { sortowanieprzezscalanie } #else #error"nieznany algorytm sortowania" #endif

127 Wykład 7 Przetwarzanie wstępne, str 25 Jak automatycznie uzyskać wynik preprocessingu?

128 Wykład 7 Przetwarzanie wstępne, str 25 Jak automatycznie uzyskać wynik preprocessingu? Komenda gcc-e-ccplikzdyrektywami dokonuje przetwarzania wstępnego i niczego więcej; i drukuje tekst z rozwiniętymi dyrektywami

129 Wykład 7 Przetwarzanie wstępne, str 25 Jak automatycznie uzyskać wynik preprocessingu? Komenda gcc-e-ccplikzdyrektywami dokonuje przetwarzania wstępnego i niczego więcej; i drukuje tekst z rozwiniętymi dyrektywami: #define mleka piwa #define tego ten #define szczescie zly los #define czeka wykiwa Kto wypije mleka, tego szczescie czeka Kto wypije mleka, tego szczescie czeka

130 Wykład 7 Przetwarzanie wstępne, str 25 Jak automatycznie uzyskać wynik preprocessingu? Komenda gcc-e-ccplikzdyrektywami dokonuje przetwarzania wstępnego i niczego więcej; i drukuje tekst z rozwiniętymi dyrektywami: #define mleka piwa #define tego ten #define szczescie zly los #define czeka wykiwa Kto wypije mleka, tego szczescie czeka Kto wypije piwa, ten zly los wykiwa

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

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

Bardziej szczegółowo

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

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.

Bardziej szczegółowo

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

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana Wykład Materiały bazują częściowo na slajdach Marata Dukhana Języki programowania Kompilowane np. C, C++, Pascal Interpretowane np. JavaScript, PHP, Python, VBA Pośrednie np. Java, C# Znane kompilatory

Bardziej szczegółowo

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

Co nie powinno być umieszczane w plikach nagłówkowych: Zawartość plików nagłówkowych (*.h) : #include #define ESC 27 dyrektywy dołączenia definicje stałych #define MAX(x,y) ((x)>(y)?(x):(y)) definicje makr int menu(char* tab[], int ilosc); struct

Bardziej szczegółowo

Abstrakcyjne struktury danych w praktyce

Abstrakcyjne struktury danych w praktyce Abstrakcyjne struktury danych w praktyce Wykład 13 7.4 notacja polska A.Szepietowski Matematyka dyskretna rozdział.8 stos kompilacja rozłączna szablony funkcji Przypomnienie Drzewo binarne wyrażenia arytmetycznego

Bardziej szczegółowo

Podział programu na moduły

Podział programu na moduły Materiały Podział programu na moduły Informatyka Szczegółowe informacje dotyczące wymagań odnośnie podziału na moduły: http://www.cs.put.poznan.pl/wcomplak/bfiles/c_w_5.pdf Podział programu na moduły pozwala

Bardziej szczegółowo

W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane:

W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane: Deklaracje W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane: int i,j,n; double x, tab[1000]; przykładowe deklaracje w C Pierwsze

Bardziej szczegółowo

Deklaracje. W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane:

Deklaracje. W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane: Deklaracje Wykład5TYPYDANYCH,str1 W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane: int i,j,n; double x, tab[1000]; } przykładowe

Bardziej szczegółowo

Preprocesor. natychmiast następuje \n są usuwane następny wiersz zostaje połączony z tym, w którym był znak \ o usuwane są wszystkie komentarze są

Preprocesor. natychmiast następuje \n są usuwane następny wiersz zostaje połączony z tym, w którym był znak \ o usuwane są wszystkie komentarze są Preprocesor włącza się automatycznie, bez udziału uŝytkownika poprzedza kompilację dokonuje konwersji tekstu realizuje dyrektywy (linie zaczynające się od znaku #) dyrektywy mogą wystąpić w dowolnym miejscu

Bardziej szczegółowo

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

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

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p. Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Dyrektywy preprocesora #include #define Interakcja

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

Bardziej szczegółowo

Laboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów. mgr inż. Arkadiusz Chrobot

Laboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów. mgr inż. Arkadiusz Chrobot Laboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów mgr inż. Arkadiusz Chrobot 10 listopada 2010 1 Preprocesor Preprocesor jest programem uruchamianym przed właściwym procesem kompilacji

Bardziej szczegółowo

Język C - podstawowe informacje

Język C - podstawowe informacje Język C - podstawowe informacje Michał Rad AGH Laboratorium Maszyn Elektrycznych 2014-12-05 Outline Program w języku C Funkcje Składnia Instrukcje sterujace Na koniec... Po kolei napisać program (zwykły

Bardziej szczegółowo

zastępować zarezerwowane słowa lub symbole innymi,

zastępować zarezerwowane słowa lub symbole innymi, Wykład 7 7. Preprocesor i dyrektywy kompilatora 7.1. Makrodefinicje proste 7.2. Makrodefinicje parametryczne 7.3. Usuwanie definicji makra 7.4. Włączanie innych zbiorów do tekstu programu 7.5. Dyrektywy

Bardziej szczegółowo

Poprzedni wykład [ ] :

Poprzedni wykład [ ] : Poprzedni wykład [ 20.11.2018 ] : - Funkcje w języku C (definicje i prototypy) - Struktura programu: Zmienne zewnętrzne, zasięg nazw; programy wieloplikowe (wprowadzenie) - Klasy pamięci: static, register

Bardziej szczegółowo

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

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Podstawy programowania. Wykład 9 Preprocesor i modularna struktura programów. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 9 Preprocesor i modularna struktura programów. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 9 Preprocesor i modularna struktura programów Krzysztof Banaś Podstawy programowania 1 Programy Większość programów w C stanowią rozbudowane kody, definiujące wiele funkcji

Bardziej szczegółowo

Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/

Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Podstawy programowania C dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Tematy Struktura programu w C Typy danych Operacje Instrukcja grupująca Instrukcja przypisania Instrukcja warunkowa Struktura

Bardziej szczegółowo

#line #endif #ifndef #pragma

#line #endif #ifndef #pragma 8.1 Instrukcje preprocesorowe... 1 8.1.1 Instrukcja #define... 1 8.1.2 Instrukcje #pragma... 2 8.2 Polecenie _asm... 3 8.3 Polecenie declspec... 4 8.4 Definiowanie makr... 5 8.5 Programy wieloplikowe,

Bardziej szczegółowo

Języki programowania obiektowego Nieobiektowe elementy języka C++

Języki programowania obiektowego Nieobiektowe elementy języka C++ Języki programowania obiektowego Nieobiektowe elementy języka C++ Roman Simiński roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Preprocesor koncepcja, rola zasady wykorzystania Co to jest

Bardziej szczegółowo

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Wykład 3 ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Waldi Ravens J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 75 / 146 deklaracje zmiennych instrukcja podstawienia

Bardziej szczegółowo

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR Zadanie polega na napisaniu pierwszego programu w języku C, jego poprawnej kompilacji i wgraniu na mikrokontroler. W tym celu należy zapoznać

Bardziej szczegółowo

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Programowanie w C++ Wykład 8 Katarzyna Grzelak 15 kwietnia 2019 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe

Bardziej szczegółowo

Funkcja (podprogram) void

Funkcja (podprogram) void Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji

Bardziej szczegółowo

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

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30 Programowanie w C++ Wykład 9 Katarzyna Grzelak 14 maja 2018 K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe plus

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

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

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów Funkcje. Spotkanie 5 Dr inż. Dariusz JĘDRZEJCZYK Tworzenie i używanie funkcji Przekazywanie argumentów do funkcji Domyślne wartości argumentów Przeładowanie nazw funkcji Dzielenie programu na kilka plików

Bardziej szczegółowo

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

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

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

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

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

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p. Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Komentarze Funkcja printf() Zmienne Łańcuchy

Bardziej szczegółowo

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

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania Przemysław Kobylański Wprowadzenie Każdy program w C musi zawierać przynajmniej funkcję o nazwie main(): Aby możliwe

Bardziej szczegółowo

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31 Programowanie w C++ Wykład 8 Katarzyna Grzelak 7 maja 2018 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:

Bardziej szczegółowo

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

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane

Bardziej szczegółowo

WYKŁAD 1 - KONSPEKT. Program wykładu:

WYKŁAD 1 - KONSPEKT. Program wykładu: mgr inż. Jarosław Forenc e-mail: jarekf@pb.bialystok.pl tel. (0-85) 746-93-97 WWW: http://we.pb.bialystok.pl/~jforenc konsultacje: zaliczenie: Program wykładu: WYKŁAD 1 - KONSPEKT 1. Ogólna struktura programu

Bardziej szczegółowo

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Makefile Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 14 Co to jest Makefile Makefile jest plikiem reguł dla programu make. Wykorzystywany jest

Bardziej szczegółowo

Zmienne, stałe i operatory

Zmienne, stałe i operatory Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe

Bardziej szczegółowo

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

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r. M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza

Bardziej szczegółowo

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

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

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

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można

Bardziej szczegółowo

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

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411b Plan wykładu Operacje wejścia-wyjścia Dostęp do plików Struktury

Bardziej szczegółowo

PMiK Programowanie Mikrokontrolera 8051

PMiK Programowanie Mikrokontrolera 8051 PMiK Programowanie Mikrokontrolera 8051 Wykład 3 Mikrokontroler 8051 PMiK Programowanie mikrokontrolera 8051 - wykład S. Szostak (2006) Zmienna typu bit #define YES 1 // definicja stałych #define NO 0

Bardziej szczegółowo

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 6 Katarzyna Grzelak kwiecień 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:

Bardziej szczegółowo

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

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy

Bardziej szczegółowo

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Programowanie w C++ Wykład 12 Katarzyna Grzelak 28 maja 2018 K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Klasy cd K.Grzelak (Wykład 12) Programowanie w C++ 2 / 27 Klasy - powtórzenie Klasy typy definiowane

Bardziej szczegółowo

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main Język obiektowy Wykład 13 Programowanie obiektowe z lotu ptaka, str 1 James Gosling, Mike Sheridan, Patrick Naughton Sun Microsystems 1995(20latmłodszyodC) C jest językiem proceduralnym Java jest językiem

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Przemysław Gawroński D-10, p. 234 Wykład 1 8 października 2018 (Wykład 1) Wstęp do programowania 8 października 2018 1 / 12 Outline 1 Literatura 2 Programowanie? 3 Hello World (Wykład

Bardziej szczegółowo

Podstawy Programowania.

Podstawy Programowania. Podstawy Programowania http://www.saltbox.com/img/under_the_hood.png O mnie... dr inż. Łukasz Graczykowski Zakład Fizyki Jądrowej Wydział Fizyki Politechniki Warszawskiej lgraczyk@if.pw.edu.pl www.if.pw.edu.pl/~lgraczyk/wiki

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 8 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Podprogramy Czasami wygodnie jest wyodrębnić jakiś fragment programu jako pewną odrębną całość umożliwiają to podprogramy.

Bardziej szczegółowo

Błędy leksykalne są na ogół nietrudne do znalezienia.

Błędy leksykalne są na ogół nietrudne do znalezienia. Rodzaje błędów w programach Wykład9.UWAGIOGÓLNE,str.1 Błąd leksykalny pojedyncza jednostka leksykalna(operator, słowo kluczowe, liczba itp.), której nie przewiduje definicja języka. Mn:=1; Sygn. błędu

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30 Programowanie w C++ Wykład 11 Katarzyna Grzelak 13 maja 2019 K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30 Klasy cd K.Grzelak (Wykład 11) Programowanie w C++ 2 / 30 Klasy - powtórzenie Klasy typy definiowane

Bardziej szczegółowo

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

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

C++. Leksykon kieszonkowy

C++. Leksykon kieszonkowy IDZ DO PRZYK ADOWY ROZDZIA KATALOG KSI EK ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK CENNIK I INFORMACJE ZAMÓW INFORMACJE O NOWOCIACH ZAMÓW CENNIK CZYTELNIA SPIS TRECI KATALOG ONLINE DODAJ DO KOSZYKA FRAGMENTY

Bardziej szczegółowo

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

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1 Tablice i struktury czyli złożone typy danych. Programowanie Proceduralne 1 Tablica przechowuje elementy tego samego typu struktura jednorodna, homogeniczna Elementy identyfikowane liczbami (indeksem).

Bardziej szczegółowo

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga! Programowanie I O czym będziemy mówili Podstawy programowania w językach proceduralnym ANSI C obiektowym Java Uwaga! podobieństwa w podstawowej strukturze składniowej (zmienne, operatory, instrukcje sterujące...)

Bardziej szczegółowo

Tablice, funkcje - wprowadzenie

Tablice, funkcje - wprowadzenie Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12 Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład

Bardziej szczegółowo

Programowanie strukturalne i obiektowe

Programowanie strukturalne i obiektowe Programowanie strukturalne i obiektowe Język C część I Opracował: Grzegorz Flesik Literatura: A. Majczak, Programowanie strukturalne i obiektowe, Helion, Gliwice 2010 P. Domka, M. Łokińska, Programowanie

Bardziej szczegółowo

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale

Bardziej szczegółowo

Przekazywanie argumentów wskaźniki

Przekazywanie argumentów wskaźniki Przekazywanie argumentów wskaźniki klasyczne wywołanie wyliczenie i zwrotne przekazanie tylko jednej wielkości moŝliwość uŝycia zmiennych globalnych niebezpieczeństwa z tym związane wyjście wywołanie funkcji

Bardziej szczegółowo

Język C zajęcia nr 11. Funkcje

Język C zajęcia nr 11. Funkcje Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji

Bardziej szczegółowo

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

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Ćwiczenie 1 Podstawy Wprowadzenie do programowania w języku C Kraków 2010 Twój pierwszy program w C Program w języku C, jak i w wielu innych językach

Bardziej szczegółowo

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

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1 Pętle Pętla jest konstrukcją sterującą stosowaną w celu wielokrotnego wykonania tego samego zestawu instrukcji jednokrotne

Bardziej szczegółowo

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.

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. 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. W ostatnich latach najbardziej używanym stylem oprogramowania

Bardziej szczegółowo

Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ

Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ Jeszcze o funkcjach i strukturze projektu Zak lad Chemii Teoretycznej UJ 3 grudnia 2008 1 2 3 4 5 typedef Plan typedef specyfikator typu nazwa S luży do stworzenia nowej nazwy dla jakiegoś typu. Nazwa

Bardziej szczegółowo

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Algorytmy liniowe Algorytmy z rozgałęzieniami

Bardziej szczegółowo

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35 Programowanie w C++ Wykład 3 Katarzyna Grzelak 12 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35 Zakres ważności obiektów K.Grzelak (Wykład 1) Programowanie w C++ 2 / 35 Zakres ważności obiektów

Bardziej szczegółowo

Wykład 1

Wykład 1 Wstęp do programowania 1 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

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Algorytmy liniowe Algorytmy z rozgałęzieniami

Bardziej szczegółowo

Wzorce funkcji (szablony)

Wzorce funkcji (szablony) Wzorce funkcji (szablony) Wzorce funkcji (ang. function template) dają możliwość wielokrotnego wykorzystywania tego samego kodu funkcji dla różnych typów danych. Załóżmy, że chcemy zdefiniować funkcję

Bardziej szczegółowo

Podstawy programowania komputerów

Podstawy programowania komputerów Podstawy programowania komputerów Wykład 14: Programowanie współbieżne w C Definicja programowania współbieżnego Programowanie współbieżne jest tworzeniem programów, których wykonanie powoduje uruchomienie

Bardziej szczegółowo

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

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ w C Zak lad Chemii Teoretycznej UJ 30 listopada 2006 1 2 3 Inicjalizacja zmiennych Zmienne jednowymiarowe można inicjować przy ich definicji. #include i n t x = 1 ; l o n g day = 1000L * 60L

Bardziej szczegółowo

Podstawy Programowania

Podstawy Programowania Podstawy Programowania http://www.saltbox.com/img/under_the_hood.png Any sufficiently advanced technology is indistinguishable from magic. Arthur C. Clarke O mnie... dr inż. Małgorzata Janik Zakład Fizyki

Bardziej szczegółowo

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty) Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty) // to jest pojedynczy komentarz (1-linijkowy) to jest wielolinijkowy komentarz Budowa "czystego" skryptu PHP (tak

Bardziej szczegółowo

Rodzaje błędów w programach. Wykład9.UWAGIOGÓLNE,str.1

Rodzaje błędów w programach. Wykład9.UWAGIOGÓLNE,str.1 Wykład9.UWAGIOGÓLNE,str.1 Wykład9.UWAGIOGÓLNE,str.1 Błąd leksykalny pojedyncza jednostka leksykalna(operator, słowo kluczowe, liczba itp.), której nie przewiduje definicja języka. Wykład9.UWAGIOGÓLNE,str.1

Bardziej szczegółowo

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

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury, , Programowanie, uzupełnienie notatek: dr Jerzy Białkowski , 1 2 3 4 , Wczytywanie liczb , Wczytywanie liczb 1 #include 2 #include < s t d l i b. h> 3 4 int main ( ) { 5 int rozmiar, numer

Bardziej szczegółowo

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

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

PROGRAMOWANIE w C prolog

PROGRAMOWANIE w C prolog PROGRAMOWANIE w C prolog dr inż. Jarosław Stańczyk Uniwersytet Przyrodniczy we Wrocławiu Wydział Biologii i Hodowli Zwierząt Katedra Genetyki 1 / jaroslaw.stanczyk@up.wroc.pl programowanie w c 17.10.2014

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 10 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Przesyłanie argumentów - cd Przesyłanie argumentów do funkcji - tablice wielowymiarowe Przekazywanie tablic wielowymiarowych

Bardziej szczegółowo

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.: Program przedmiotu Programowanie (język C++) Wykład 1. Język C a C++. Definiowanie prostych klas. Typy referencyjne. Domyślne wartości argumentów. PrzeciąŜanie funkcji. Konstruktory, destruktory. Definiowanie

Bardziej szczegółowo

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { Przeciążanie a dziedziczenie class Integer2: public Integer Operatory, z wyjątkiem operatora przypisania są automatycznie dziedziczone w klasach pochodnych. Integer2(int i): Integer(i) Automatyczne tworzenie

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

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

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 Język C część 1 Literatura [1] Brian W. Kernighan, Dennis M. Ritchie: Język ANSI C, Wydawnictwa Naukowo Techniczne, Warszawa 2003 [2] Anna Strudzioska-Walczak, Krzysztof Walczak, Nakuka programowania dla

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

Bardziej szczegółowo

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie Krzysztof Banaś Podstawy programowania 1 są sposobem na przechowywanie w ramach pojedynczej zmiennej zestawu zmiennych różnych typów,

Bardziej szczegółowo

Inżynieria Wytwarzania Systemów Wbudowanych

Inżynieria Wytwarzania Systemów Wbudowanych GUT Intel 2015/16 1/30 Inżynieria Wytwarzania Systemów Wbudowanych Wykład 3 Iwona Kochańska Katedra Systemów Elektroniki Morskiej WETI PG October 18, 2018 Dobre praktyki GUT Intel 2015/16 2/30 Przenośność

Bardziej szczegółowo

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej

Bardziej szczegółowo

Szablony klas, zastosowanie szablonów w programach

Szablony klas, zastosowanie szablonów w programach Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do

Bardziej szczegółowo

Programowanie - wykład 4

Programowanie - wykład 4 Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include

Bardziej szczegółowo

Pytania sprawdzające wiedzę z programowania C++

Pytania sprawdzające wiedzę z programowania C++ Pytania sprawdzające wiedzę z programowania C++ Wstęp 1. Zaprezentuj mechanikę tworzenia programu napisanego w języku C++. 2. Co to jest kompilacja? 3. Co to jest konsolidacja? 4. Co to jest kod wykonywalny?

Bardziej szczegółowo

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium: Zakres laboratorium: definiowanie struktur terminologia obiektowa definiowanie klas funkcje składowe klas programy złożone z wielu plików zadania laboratoryjne Laboratorium nr 12 Temat: Struktury, klasy.

Bardziej szczegółowo

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

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO Rozdział 1. Wybór i instalacja kompilatora języka Pascal 1.1. Współczesne wersje kompilatorów Pascala 1.2. Jak zainstalować

Bardziej szczegółowo

IX. Wskaźniki.(3 godz.)

IX. Wskaźniki.(3 godz.) Opracowała: dr inż. Anna Dubowicka Uczelniane Centrum Komputerowe PK IX. Wskaźniki.(3 godz.) Wskaźnik jest zmienną, która zawiera adres innej. 1. Definiowanie wskaźników. typ * nazwa ; gdzie: znak * informuje

Bardziej szczegółowo

C-struktury wykład. Dorota Pylak

C-struktury wykład. Dorota Pylak C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania I rok Automatyka i Robotyka Eka PWr Ćwiczenia Zestaw 4 Zakres materiału Analiza poprawności konstrukcji, wyliczanie wyrażeń z wskaźnikami i tablicami, ręczna symulacja, opracowywanie

Bardziej szczegółowo