Picproje Elektronik Sitesi

BİLGİSAYAR => Linux => Konuyu başlatan: engin_ - 18 Nisan 2006, 21:25:20

Başlık: Linux'da Programlama
Gönderen: engin_ - 18 Nisan 2006, 21:25:20
Lİnux'da yazdığınız programı derlemenin en basit yolu programınızın bulunduğu yerde konsoldan
(Eğer bir C programı ise)
gcc program.c -o derlendikten_sonraki_ismi

komutunu vermektir. Açıkçası Win de hiç C veya C++ dosyası derlemedim. Ama bu kadar kolay olmayacağına eminim. Gerçi GCC win'de de var ama denemeye fırsatım olmadı.

Neyse aşağıda önceden kodladığım basit bir program var. Tek yaptığı şey kelimelerdeki harfleri karıştırmak.

Derlemek için;
gcc karistir.c -o Karıştır
Çalıştırmak için bulunduğunuz dizinde;
./Karıştır
yazmanız yeterli.

//karistir.c
#include <stdio.h>
#include <string.h>

char a[]="Evet programda biraz oynadıktan sonra bu haliyle daha iyi bir sonuç elde etmek mümkün \
burada aslında sesli ve sessiz harfleri yanyana fazla getirmemek lazım sanırım ";
char b[20];


sil (){
int i;
for(i=0;i<strlen(b);i++){
b[i]=' ';
}
}

karistir(int i){

if (i<4){
yaz();
return;
}else{
degis(i);
return;
}
}

degis(int son){
int bas,i;
char harf1,harf2;
bas=1;
son--;
for(i=0;i<=son-3;i=i+3){
harf1=b[bas+i];
harf2=b[bas+i+1];
b[bas+i]=harf2;
b[bas+i+1]=harf1;
}
yaz();
}

yaz(){
int i;
for(i=0;i<strlen(b);i++){
if(b[i]==' ') continue;
printf("%c",b[i]);
}
printf(" ");
}

main(){

int i=0,x=0,y=0;
x=strlen(a);

while(i<x){

if(a[i]==' '){
karistir(y);
sil();
y=0;
i=i+1;
continue;
}else{
b[y]=a[i];
y++;
i=i+1;
}
}
}


Programın Gui ile yazılmış hali (GTK kütüphaneleri kullanılarak):


#include <gtk/gtk.h>
#include <stdio.h>
#include <string.h>

#define utf8(x)  g_locale_to_utf8 (x,-1,0,0,0)
#define locale(x)  g_convert (x,-1,charset,"UTF-8",0,0,0)

GtkWidget *window; // Gtk nesnesi oluşturuluyor
GtkWidget *fixed;
GtkWidget *table;
GtkWidget *karistir;
GtkWidget *text;
GtkWidget *scroll;
GtkWidget *vscrollbar;
GtkObject *adj1;
GtkWidget *view;
GtkTextBuffer *buffer;

GtkTextIter start, end;
PangoFontDescription *font_desc;
GdkColor color;
GtkTextTag *tag;

gchar *text_;
const char *charset;

gchar *p,*ssss;
gchar b[30],a[100];

sil (){
gint i;
for(i=0;i<strlen(b);i++){
b[i]=' ';
}
}

uyarla(gint i){

if (i<4){
yaz();
return;
}else{
degis(i);
return;
}
}

degis(gint son){
gint bas,i;
gchar harf1,harf2;
bas=1;
son--;
for(i=0;i<=son-3;i=i+3){
harf1=b[bas+i];
harf2=b[bas+i+1];
b[bas+i]=harf2;
b[bas+i+1]=harf1;
}
yaz();
}

yaz(){
gint i;
gchar dd[1];
ssss=a;
for(i=0;i<strlen(b);i++){
if(b[i]==' ') continue;
dd[0]=b[i];
//g_printf("%c",b[i]);
strncat(ssss,dd,1);
}
g_printf(" ");
strcat(ssss," ");
}

devir(){
gint i=0,x=0,y=0;
x=strlen(p);

while(i<x){

if(p[i]==' '){
uyarla(y);
sil();
y=0;
i=i+1;
continue;
}else{
b[y]=p[i];
y++;
i=i+1;
}
}
g_printf("\n");
}


void kapat( GtkWidget *widget, gpointer data )
{
gtk_main_quit();
}

karistir_clicked(){

gtk_text_buffer_get_start_iter(buffer,&start);
gtk_text_buffer_get_end_iter(buffer,&end);

text_=g_strdup(gtk_text_buffer_get_text(buffer,&start,&end,0));

p=locale(text_);

devir();
g_printf("%s \n",ssss);
gtk_text_buffer_set_text (buffer, utf8(ssss), -1);

//  0 ile 5 arasındaki karaketerleri kırmızı renkte göstermek için
//gtk_text_buffer_get_iter_at_offset (buffer, &start, 0);
//gtk_text_buffer_get_iter_at_offset (buffer, &end, 5);

// karekterlerin tümü için
gtk_text_buffer_get_start_iter(buffer,&start);
gtk_text_buffer_get_end_iter(buffer,&end);
gtk_text_buffer_apply_tag (buffer, tag, &start, &end);

}


int main( int   argc,
         char *argv[] )
{

gtk_init (&argc, &argv); // Gtk başlatılıyor

g_get_charset(&charset);
g_print ("%s\n", charset);

// Form oluşturulur
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);                   // Yeni bir form oluşturulur
gtk_window_set_title(GTK_WINDOW(window),utf8("Karıştır"));             // Formun başlığı verilir
gtk_window_set_default_size(GTK_WINDOW(window),315,180);       // Boyutları belirlenir
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); // Konumu belirlenir
gtk_container_set_border_width (GTK_CONTAINER (window), 2);

// Objeleri istediğimiz yere yerleştirebileceğiz
fixed = gtk_fixed_new ();
gtk_widget_show (fixed);
gtk_container_add (GTK_CONTAINER (window), fixed);

// Text ve kaydırma çubuğu için
table=gtk_table_new(1,1,FALSE);
gtk_widget_show (table);

// Buton oluşturulur
karistir = gtk_button_new_with_label(utf8("Çevir"));
gtk_widget_show (karistir);
gtk_fixed_put (GTK_FIXED (fixed), karistir, 240, 152);
gtk_widget_set_size_request (karistir, 48, 23);

//
adj1 = gtk_adjustment_new (0.0, 0.0, 101.0, 0.1, 1.0, 1.0);

// Text alanı
view = gtk_text_view_new ();
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD);
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
gtk_text_buffer_set_text (buffer, utf8("Cümlenin sonunda boşluk bırakın "), -1);
gtk_widget_show (view);


scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_widget_show (scroll);
gtk_fixed_put (GTK_FIXED (fixed), scroll, 8, 8);
gtk_widget_set_size_request (scroll, 300, 140);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);

gtk_container_add (GTK_CONTAINER (scroll),view);


// Font ayarlamasını yapıyoruz
font_desc = pango_font_description_from_string ("Serif 12");
gtk_widget_modify_font (view, font_desc);
pango_font_description_free (font_desc);

// Renklendirme
gdk_color_parse ("blue", &color);
gtk_widget_modify_text (view, GTK_STATE_NORMAL, &color);

// Sol kenardan bırakılacak boşluk
gtk_text_view_set_left_margin (GTK_TEXT_VIEW (view), 10);

// Daha sonra kullanılmak üzere bir yapı belirleniyor
tag = gtk_text_buffer_create_tag (buffer, "blue_foreground",
 "foreground", "red", NULL);

// Olaylar
g_signal_connect ((gpointer) karistir, "clicked",
  GTK_SIGNAL_FUNC (karistir_clicked),
  NULL);

gtk_signal_connect (GTK_OBJECT (window), "destroy",
   GTK_SIGNAL_FUNC(kapat),
   NULL);

gtk_widget_show  (window); // form ekrana gösteriliyor

gtk_main ();

return 0;
}


Derlemek için;
gcc karistir.c -o karistir `pkg-config --cflags --libs gtk+-2.0`


Öğrenmesi çok zor değil ve isterseniz win'e de portlayabilirsiniz. Bir programcı daha ne isterki?