Darmowe Forum
Kwiecień 15, 2025, 01:09:03 *
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

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  
Strony: [1]
  Drukuj  
Autor Wątek: Instrukcje preprocesora  (Przeczytany 3537 razy)
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« : Marzec 02, 2011, 05:28:56 »

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).
 
Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #1 : Marzec 02, 2011, 05:36:12 »

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;
}
Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #2 : Marzec 02, 2011, 05:46:15 »

 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 !!!!!

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


Email
« Odpowiedz #3 : Marzec 02, 2011, 05:50:45 »

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


Email
« Odpowiedz #4 : Marzec 02, 2011, 06:00:10 »

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  
 
Skocz do:  

Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC | Sitemap

Polityka cookies
Darmowe Fora | Darmowe Forum

proskills zlotasiodemka articz shaggydogss gang-nd