Podstawy informatyki Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.

Slides:



Advertisements
Podobne prezentacje
Język C/C++ Funkcje.
Advertisements

Programowanie obiektowe
Wzorce.
Język ANSI C Funkcje Wykład: Programowanie komputerów
Dyrektywy preprocesora Jeżeli plik źródłowy posiada rozszerzenie.F lub.FOR, może on zawierać dyrektywy dla preprocesora. Na podstawie tych dyrektyw preprocesor.
Filip Andrzejewski Remigiusz Chiluta
formatowanie kodu źródłowego
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
Biblioteki i przestrzenie nazw
Ćwiczenie (1) Dostosuj poniższy program do wymogów programu zaliczeniowego #include typedef struct{ char imie[30]; char nazwisko[50]; int rokUrodzenia;
#include #include main () { cout
Programowanie obiektowe W2
Podstawy informatyki 2013/2014
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Podstawy informatyki 2013/2014
Jerzy F. Kotowski1 Informatyka I Wykład 9 TABLICE PREPROCESOR OPERATORY c.d. (nie tylko binarne)
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki 2012/2013
Turbo Pascal Turbo Pascal - jedna z popularniejszych implementacji kompilatorów języka PASCAL, zintegrowane srodowisko programistyczne, produkt firmy Borland.
Zadanie Dev C++.
Przekazywanie argumentów
Programowanie strukturalne i obiektowe
Programowanie strukturalne i obiektowe
Instrukcja for. Instrukcja warunkowa mgr inż. Agata Pacek.
Podstawy informatyki 2013/2014
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Programowanie obiektowe 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Programowanie obiektowe 2013/2014
Programowanie obiektowe 2013/2014
Kurs języka C++ – wykład 3 ( )
Programowanie strukturalne i obiektowe C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++ Powtórzenie wiadomości z C++ Robert Nowak.
Pliki tekstowe – odczyt i zapis Zajęcia 11. Zapis do pliku tekstowego Prosty program pokazujący sposób zapisu do pliku tekstowego: // writing on a text.
Wykład 2 Klasa Zesp i jej hermetyzacja 1.Przykład definicji klasy Zesp 2.Zmiana definicji klasy 3.Zmienne i funkcje statyczne PO2-1 / 28.
Pakiety numeryczne Optymalizacja
Podstawy informatyki Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Pakiety numeryczne Graphical User Interface Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Pakiety numeryczne Tablice: tworzenie, indeksowanie, wymiary Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Pakiety numeryczne Interpolacja i aproksymacja
Pakiety numeryczne Wykresy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Podstawy informatyki Zmienne, stałe Instrukcje sterujące Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
Pakiety numeryczne Wielomiany Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Podstawy informatyki Funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
Pakiety numeryczne Skrypty, funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Podstawy informatyki Struktury Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki Szablony funkcji Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty.
Podstawy informatyki Operatory rzutowania Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały.
Podstawy informatyki Mechanizm obsługi sytuacji wyjątkowych Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Pakiety numeryczne Operatory, instrukcje sterujące, operacje bitowe Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
K URS JĘZYKA C++ – WYKŁAD 1 ( ) Łagodne wprowadzenie do języka C++
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Obliczenia w Matlabie Tablice
Obliczenia inżynierskie w Matlabie
Obliczenia w Matlabie Interpolacja i aproksymacja
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Język C++ Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Język C++ Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Obliczenia w Matlabie Analiza statystyczna
Obliczenia w Matlabie Obliczenia symboliczne
Zapis prezentacji:

Podstawy informatyki Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka

Preprocesor To ta część środowiska programistycznego, która jest uruchamiana bezpośrednio przed uruchomieniem właściwego kompilatora. Dokonuje pierwszego przeglądnięcia plików źródłowych. Rozpoznaje dyrektywy i interpretując je, dokonuje odpowiednich działań ingerując w kod.

Preprocesor Dyrektywy są umieszczane w stosownych miejscach programu w osobnej linii programu. Zaczynają się od znaku # (może on być poprzedzony białymi znakami), po którym następuje nazwa dyrektywy oraz ewentualnie argumenty: #nazwa_dyrektywy arg Nie kończą się średnikiem! Jeśli dyrektywa nie mieści się w jednej linii, oddzielamy linie znakiem \ (backslash).

Dyrektywa define Postać: #define nazwa zastępczy_ciąg_znaków Dyrektywa ta powoduje, że w kompilowanym pliku każde wystąpienie słowa nazwa będzie zastąpione przez podany dalej zastępczy_ciąg_znaków. Nazwa nie może zawierać białych znaków. Białe znaki mogą pojawić się w zastępczym ciągu znaków. Można opuścić zastępczy ciąg znaków: #define nazwa

Dyrektywa define #include using namespace std; #define PI int main() { cout << PI*2*2 << endl; return 0; } const double PI=3.1416;

Dyrektywa undef Postać: #undef nazwa Występuje zawsze w parze z dyrektywą #define nazwa Dyrektywa ta określa miejsce w pliku, od którego przestaje obowiązywać zdefiniowana wcześniej dyrektywa #define nazwa

Makrodefinicja #include using namespace std; #define wieksza(a,b) (a > b ? a : b) int main() { int a=1,b=5; cout<<wieksza(a,b)<<endl; return 0; }

Funkcja inline #include using namespace std; inline int wieksza(int a,int b) { return (a>b?a:b); } int main() { int a=1,b=5; cout<<wieksza(a,b)<<endl; return 0; }

Define vs inline #include using namespace std; inline int wieksza(int a,int b){ return (a>b?a:b);} int main() { int a=1,b=5; cout<<wieksza(++a,++b)<<endl; cout<<a<<endl; cout<<b<<endl; return 0; } #include using namespace std; #define wieksza(a,b) (a>b?a:b) int main() { int a=1,b=5; cout<<wieksza(++a,++b)<<endl; cout<<a<<endl; cout<<b<<endl; return 0; }

Define vs inline #include using namespace std; #define kwadrat(a) a*a int main() { int a=2; cout<<kwadrat(a)<<endl; return 0; } #include using namespace std; #define kwadrat(a) a*a int main() { int a=2,b=5; cout<<kwadrat(a+b)<<endl; return 0; } 4 17

Define vs inline #include using namespace std; inline int wieksza(int a,int b) { return (a>b?a:b); } #include using namespace std; #define wieksza(a,b) (a>b?a:b) Działa dla typu int Działa dla dowolnego typu Rozwiązanie: szablon funkcji

Kompilacja warunkowa Czasem istnieje konieczność, aby pewne linie kody były kompilowane tylko wtedy, gdy będzie to konieczne, np.: –Debugowanie programu – wyświetlanie dodatkowych informacji, –Dołączanie pewnych fragmentów kodu zależy od środowisku pewnych nazw. Kompilacja danego oznaczonego fragmentu kodu wykona się lub nie w zależności od spełnienia pewnych warunków.

Kompilacja warunkowa #include using namespace std; #define N 0 int main() { int a=1,b=5; #if N cout<<a<<endl; #endif cout<<b<<endl; return 0; } #denife N 1

Dyrektywa include Postać: #include #include "nazwa_pliku" W dane miejsce w kompilowanym pliku źródłowym (w którym występuje ta dyrektywa) wstawiana jest zawartość pliku o zadanej nazwie. Najczęściej używana dla wstawiania plików nagłówkowych (z definicjami typów, struktur danych, klas, itp.).

Pliki nagłówkowe Plik a.h int a; Plik b.cpp #include"a.h" int b; Plik b.cpp int a; int b;

Pliki nagłówkowe Plik a.h int a; Plik b.h #include"a.h" int b; Plik c.cpp #include"a.h" #include"b.h" Plik b.h int a; int b; Plik c.cpp int a; int b; BŁĄD redefinicja

ifdef ifndef #ifndef PLIK_H #define PLIK_H... tersc pliku naglowkowego #endif

Pliki nagłówkowe Plik a.h #ifndef A_H #define A_H int a; #endif Plik b.h #ifndef B_H #define B_H #include"a.h" int b; #endif Plik c.cpp #include"a.h" #include"b.h" Plik b.h #ifndef B_H #define B_H #ifndef A_H #define A_H int a; #endif int b; #endif Plik c.cpp #ifndef A_H #define A_H int a; #endif #ifndef B_H #define B_H #ifndef A_H #define A_H int a; #endif int b; #endif Nie istnieje A_H Definiujemy A_H Definiujemy a Nie istnieje B_H Definiujemy B_H Istnieje A_H Nie definiujemy po raz drugi a Definiujemy b

Nazwy predefiniowane #include using namespace std; int main() { cout<<__FILE__<<endl; cout<<__LINE__<<endl; cout<<__DATE__<<endl; cout<<__TIME__<<endl; return 0; } Data i godzina kompilacji (nie aktualna)

Prezentacja udostępniona na licencji Creative Commons: Uznanie autorstwa, Na tych samych warunkach 3.0. Pewne prawa zastrzeżone na rzecz autorów. Zezwala się na dowolne wykorzystywanie treści pod warunkiem wskazania autorów jako właścicieli praw do prezentacji oraz zachowania niniejszej informacji licencyjnej tak długo, jak tylko na utwory zależne będzie udzielana taka sama licencja. Tekst licencji dostępny jest na stronie: