Darmowe Forum
Grudzieñ 30, 2024, 19:07:11
Witamy,
Go¶æ
.
Zaloguj siê
lub
zarejestruj
.
Czy dotar³ do Ciebie
email aktywacyjny?
1 Godzina
1 Dzieñ
1 Tydzieñ
1 Miesi±c
Zawsze
Zaloguj siê podaj±c nazwê u¿ytkownika, has³o i d³ugo¶æ sesji
Aktualno¶ci
: Forum zosta³o uruchomione!
Strona g³ówna
Pomoc
Zaloguj siê
Rejestracja
Darmowe Forum
>
C++
>
Podstawy C++ cz. I
>
Instrukcje preprocesora
Strony: [
1
]
« poprzedni
nastêpny »
Drukuj
Autor
W±tek: Instrukcje preprocesora (Przeczytany 4131 razy)
admin
Administrator
Ekspert
Wiadomo¶ci: 821
Instrukcje preprocesora
«
:
Styczeñ 04, 2012, 09:28:45 »
Preprocesor
to program przetwarzaj±cy kod ¼ród³owy jeszcze przed rozpoczêciem kompilacji.
Instrukcje preprocesora nazywane s± dyrektywami. Wszystkie dyrektywy preprocesora rozpoczynaj± siê od znaku
#
. Znak
#
sygnalizuje, ¿e nast±pi po nim dyrektywa preprocesora. Dyrektywy wstawiamy na samym pocz±tku kodu programu.
Przyk³adem dyrektywy jest #include , pozwalaj±ca na do³±czenie do kodu ¼ród³owego kodu z innych plików ¼ród³owych.
Inna dyrektyw± jest dyrektywa
#define
, okre¶laj±ca sta³e warto¶ci dostêpne w programie:
#define adam 4321
od tej chwili identyfikator adam oznacza sta³± o warto¶ci 4321. Takie postêpowanie ma niew±tpliwe zalety, kolejne wersje programu przy zmianie sta³ej adam wymagaj± tylko zmiany warto¶ci przy dyrektywie include.
Dyrektywa
#define
nakazuje preprocesorowi zast±piæ ka¿de wyst±pienie ci±gu znaków innym ci±giem znaków. Pierwszy , zastêpowany ci±g znaków (adam) spe³nia rolê makronazwy, drugi jest makrorozwiniêciem (macro body).
Zadanie 1. Przyk³ad deklaracji makroinstrukcji adam i suma.
#include <cstdlib>
#include <iostream>
#define adam 4321;
#define suma (23+2)
using namespace std;
int main(int argc, char *argv[])
{ cout<<suma;
cout<<adam;
system("PAUSE");
return EXIT_SUCCESS;
}
Makro instrukcja rozwijana przez preprocesor mo¿e dzia³aæ podobnie do funkcji - pobieraæ argumenty i zwracaæ warto¶æ uzyskan± w wyniku przetwarzania danych . Uwaga, wa¿n± rolê spe³niaj± nawiasy okr±g³e !!!!!
«
Ostatnia zmiana: Styczeñ 04, 2012, 09:33:30 wys³ane przez admin
»
Zapisane
admin
Administrator
Ekspert
Wiadomo¶ci: 821
Odp: Instrukcje preprocesora
«
Odpowiedz #1 :
Styczeñ 04, 2012, 09:35:24 »
Zadanie 2.
Napisaæ dwie dyrektywy preprocesora obliczaj±ce czwart± potêgê wprowadzonej liczby. Wyja¶niæ dlaczego wyst±pi³y ró¿nice w otrzymanym wyniku.
#include <cstdlib>
#include <iostream>
#define pot1(a) ((a)*(a)*(a)*(a))
#define pot2(a) a*a*a*a
using namespace std;
int main(int argc, char *argv[])
{ int b=2, c,d;
cout<<"Wynik wywo³ania dwóch makr:";
c=pot1(b);d=pot2(b);
cout<<"rezultat pot1(b): "<<c<<endl;
cout<<"rezultat pot2(b): "<<d<<endl;
c=pot1(b+1); d=pot2(b+1);
cout<<"rezultat pot1(b+1): "<<c<<endl;
cout<<"rezultat pot2(b+1): "<<d<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Zapisane
admin
Administrator
Ekspert
Wiadomo¶ci: 821
Odp: Instrukcje preprocesora
«
Odpowiedz #2 :
Styczeñ 04, 2012, 10:10:59 »
Zadanie 3.
Makroinstrukcje w jêzyku C++ wolne s± od ograniczeñ topologicznych na³o¿onych na funkcje. Przyk³ad poni¿ej ma wykazaæ poprawno¶æ tej tezy. Je¿eli zmieniony zostanie typ danych z int na float, to dzia³anie i konstrukcja makroinstrukcji pozostan± bez zmian.
#include <cstdlib>
#include <iostream>
#define pot1(a) ((a)*(a)*(a)*(a))
#define pot2(a) a*a*a*a
using namespace std;
int main(int argc, char *argv[])
{ float b=4.5, c,d;
cout<<"Wynik wywo³ania dwóch makr:";
c=pot1(b);d=pot2(b);
cout<<"rezultat pot1(b): "<<c<<endl;
cout<<"rezultat pot2(b): "<<d<<endl;
c=pot1(b+1); d=pot2(b+1);
cout<<"rezultat pot1(b+1): "<<c<<endl;
cout<<"rezultat pot2(b+1): "<<d<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Zapisane
admin
Administrator
Ekspert
Wiadomo¶ci: 821
Odp: Instrukcje preprocesora
«
Odpowiedz #3 :
Styczeñ 04, 2012, 10:12:34 »
Zadanie 4.
Napisaæ dwie instrukcje preprocesora wybieraj±c± mniejsz± i wiêksz± warto¶æ z dwóch wprowadzonych liczb.
#include <cstdlib>
#include <iostream>
#define maks(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)>(b)?(b):(a))
using namespace std;
int main(int argc, char *argv[])
{ float b=4.5, c,d;
cout<<"Podaj pierwsz± liczbê liczbê:"; cin>>c;
cout<<"Podaj drug± liczbê liczbê:"; cin>>d;
cout<<"Wieksza liczba to :"<<maks(c,d);
system("PAUSE");
return EXIT_SUCCESS;
}
Zapisane
Strony: [
1
]
Drukuj
« poprzedni
nastêpny »
Skocz do:
Wybierz cel:
-----------------------------
Zadanie C++ lutego -Agnieszka
-----------------------------
=> Nowy dzia³
=> Zadanie
-----------------------------
E14
-----------------------------
=> DIV
=> Java Script
=> php
-----------------------------
Dla Magdy i Wojtka
-----------------------------
=> Liczby dwójkowe
-----------------------------
Przyk³ady stron internetowych
-----------------------------
=> Strona zbudowana z tabelek
-----------------------------
Podstawy PHP
-----------------------------
=> Przesy³anie danych z formularza php
=> Pêtle w php
-----------------------------
Java Script
-----------------------------
=> Java Script
-----------------------------
C++ Nowe rozdanie
-----------------------------
=> C++
-----------------------------
Java JDK
-----------------------------
=> Java ale nie Script
-----------------------------
Hyde Park
-----------------------------
=> Informacje
-----------------------------
C+++
-----------------------------
=> A Kuba powiedzia³
-----------------------------
Multimedia
-----------------------------
=> Photoshop
=> Nowy dzia³
=> Java Script
=> Corel
-----------------------------
Html-strony internetowe
-----------------------------
=> Podstawy HTML- ramki/ frames
=> Podstawy HTML- tabelki
-----------------------------
C++
-----------------------------
=> Podstawy C++ cz. I
=> Kompilatory C++
=> Programowanie obiektowe w C++
=> Problem w C++
=> Podstawy
=> C++ po raz pierwszy
-----------------------------
Turbo Pascal
-----------------------------
=> Turbo Pascal semestr II
=> Projekt A¦KA
=> Turbo Pascal semestr I
=> Podstawy Turbo Pascal
£adowanie...
Polityka cookies
Darmowe Fora
|
Darmowe Forum
moikrewni
spw
zlotasiodemka
shaggydogss
polski-serwer-rpg