QReferate - referate pentru educatia ta.
Referatele noastre - sursa ta de inspiratie! Referate oferite gratuit, lucrari si proiecte cu imagini si grafice. Fiecare referat, proiect sau comentariu il poti downloada rapid si il poti folosi pentru temele tale de acasa.



AdministratieAlimentatieArta culturaAsistenta socialaAstronomie
BiologieChimieComunicareConstructiiCosmetica
DesenDiverseDreptEconomieEngleza
FilozofieFizicaFrancezaGeografieGermana
InformaticaIstorieLatinaManagementMarketing
MatematicaMecanicaMedicinaPedagogiePsihologie
RomanaStiinte politiceTransporturiTurism
Esti aici: Qreferat » Referate informatica

Curiozitati si trucuri de programare



Curiozitati si trucuri de programare


Pentru o cit mai completa prezentare a programarii in C nu puteam evita prezentarea unor curiozitati si ale unor trucuri de programare C. Acelasi lucru este valabil si pentru limbajul Pascal dar este acesta este oarecum 'iesit din moda'. Numarul foarte mare de astfel de 'inventii' a condus la organizarea inca din 1984 a unui concurs international de programare numit foarte sugestiv The International Obfuscated C Code Contest - IOCCC adica Concursul international de programare ofuscata C (incilcita si confuza). Participantii la acest concurs ofera in fiecare an adevarate perle de programare C ce dovedesc, pe linga serioase cunostinte de C, aptitudinile extraordinare si fiabilitatea compilatorului C. Multe din capodoperele acestui concurs au fost apoi inscriptionate pe tricouri sau pungi, spre deliciul fanilor programarii C.



Aceasta pasiune are totusi si o latura serioasa ce poate fi sesizata in programarea sub platformele (sistemele de operare) gen Unix. In aceste sisteme toate programele circula nu numai sub forma de cod executabil ci si in sursa originala C. Ascunderea unor informatii despre programarea sistem de ochii celor 'periculos' de curiosi este astfel dificila. Dar iata ca acest tip de programare 'ofuscata' face acest lucru posibil ! Numai cei foarte pasionati isi 'prind urechile' in descifrarea unor astfel de programe intentionat incilcite. Altfel spus, secretul unor astfel de programe se ascunde chiar in rebusul din fata ochilor cititorului.

Recomandam acest capitol in special fanilor programarii C si celor foarte pasionati.



// Un simplu 'Hello world!' dar care arata o surprinzatoare interpretare a compilatorului C


#include <stdio.h>

char a[]='Hello world!';

int i;

void main(void)



// Iata unde conduce folosirea tipului de date float:

// c este foarte diferit de w ?!

// Putem spune ca acesta este un bug al C-ului ?


#include <stdio.h>

float a=12345679.,b=12345678.,

c=a*a-b*b,

u=a*a,v=b*b,w=u-v;

void main()


// Iata si varianta 'corecta' in care nu se produce nici o trunchiere:


#include <stdio.h>

long double a=12345679.,b=12345678.,

c=a*a-b*b,

u=a*a,v=b*b,w=u-v;

void main()


// Acest program este capabil sa-si duplice identic la 'iesire' codul sursa C fara a efectua nici o

// citire de nicaieri. Are deci caracteristica unui virus, se auto-replica !


#include <stdio.h>

char *s[]=',

'putchar(34);for(ps=s[10];*ps;ps++) putchar(*ps);putchar(34);putchar(10);',

'putchar('}');putchar(';'); putchar(10);',

'for(i=2;i<11;i++)puts(s[i]); putchar('}');'


void main(void)

putchar(34);for(ps=s[10];*ps;ps++) putchar(*ps);putchar(34);putchar(10);

putchar('}');putchar(';');putchar(10);

for(i=2;i<11;i++)puts(s[i]);putchar('}');


// Program C surpriza (ales dintre cele de la IOCCC)

// Ce face acest program intr-o singura linie ?


int i;main()'];read('-'-'-',i+++ 'hello, world!n','/'/'/'));}read(j,i,p)


// Alt program C surpriza (ales dintre cele de la IOCCC)

// Ce face acest program intr-o singura linie ?


main(v,c)char**c;


// Puteti 'decripta' acest program C de trei linii ? Executia lui arata clar ce face, intrebarea este // insa cum face ?!


#define P(X)j=write(1,X,1)

#define C 39

int M[5000]=,*u=M,N[5000] ,R=22,a[4],l[]=,m[]=,*b=N,

*d=N,c,e,f,g,i,j,k,s;main()else e=d>b++?b[-1]:e;}P(' ');for(s=C;--s;P('_')

)P(' ');for(;P('n'),R--;P('|'))for (e=C;e--; P('_ '+(*u++/8)%2))P('| '+(*u/4)%2



Nu se poate descarca referatul
Acest referat nu se poate descarca

E posibil sa te intereseze alte referate despre:


Copyright © 2024 - Toate drepturile rezervate QReferat.com Folositi referatele, proiectele sau lucrarile afisate ca sursa de inspiratie. Va recomandam sa nu copiati textul, ci sa compuneti propriul referat pe baza referatelor de pe site.
{ Home } { Contact } { Termeni si conditii }