Programowanie w systemie UNIX/Pierwszy program: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
m mv to lisp
Linia 77:
* '''uruchom''' za pomocą:
./a.out
 
== Przykład z SDL ==
Tutaj jest bardziej zaawansowany przykład wykorzystujący SDL:
<source lang="C">
#include <SDL.h>
#define DIM 400.0
int main() {
SDL_Surface *screen = SDL_SetVideoMode(DIM, DIM, 0, 0);
SDL_Surface *surface = SDL_CreateRGBSurface(SDL_SWSURFACE, DIM, DIM, 24, 0xFF, 0xFF00, 0xFF0000, 0);
double fact = 2;
double cx = -0.74364500005891;
double cy = 0.13182700000109;
while (fact > 1e-18) {
double xa = cx - fact;
double ya = cy - fact;
int y;
for (y = 0; y < DIM; y++) {
Uint8 *pixline = surface->pixels + y*surface->pitch;
double y0 = ya + y/DIM*2*fact;
int x;
for (x = 0; x < DIM; x++) {
double x0 = xa + x/DIM*2*fact;
double xn = 0, yn = 0, tmpxn;
int i;
for (i = 0; i<512; i++) {
tmpxn = xn*xn - yn*yn + x0;
yn = 2*xn*yn + y0;
xn = tmpxn;
if (xn*xn + yn*yn > 4)
break; // approximate infinity
}
if (i == 512) {
// in Mandelbrot set
pixline[x*3] = pixline[x*3+1] = pixline[x*3+2] = 0;
} else {
// not in Mandelbrot set; use escape iteration value to set color (grades of blue then white)
pixline[x*3] = pixline[x*3+1] = i < 256 ? 0 : i - 256;
pixline[x*3+2] = i < 256 ? i : 255;
}
}
}
SDL_BlitSurface(surface, NULL, screen, NULL);
SDL_Flip(screen);
fact /= 2;
}
SDL_Quit();
return(0);
}
</source>
 
Plik zapisujemy jako: mandelbrot.c
 
Kompilujemy za pomocą komendy:
gcc `sdl-config --cflags --libs` -O3 mandelbrot.c && ./a.out
 
Jeśli nie mamy SDL to instalujemy ją, np.:
 
sudo apt-get install libsdl1.2-dev
 
== Kompilacja złożonych programów ==