Darmowe Forum
Kwiecień 15, 2025, 01:09:03
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
>
Instrukcje preprocesora
Strony: [
1
]
« poprzedni
następny »
Drukuj
Autor
Wątek: Instrukcje preprocesora (Przeczytany 3537 razy)
admin
Administrator
Ekspert
Wiadomości: 821
Instrukcje preprocesora
«
:
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
Odp: Instrukcje preprocesora
«
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
Odp: Instrukcje preprocesora
«
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
Odp: Instrukcje preprocesora
«
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
Odp: Instrukcje preprocesora
«
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
« 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
proskills
zlotasiodemka
articz
shaggydogss
gang-nd