dedeefendi
19-01-06, 07:28
Programlamayla ilgili arkadaşlar size algoritmanın önemini anlatan ilk deneyimlerden birinden bahsedeyim de biraz gülün:)
Şimdi efendim. ilk programlama öğrendiğimiz zaman, daha kafamızda programlamaya dair her şey soyutken, biri çıkar (bu çıkan biri bir hoca bir arkadaş veya bir kitap olabilir). Derki aç kullandığın editörü yaz bakalım işte yazacağın komut:
write('Merhaba Dünya'); //farzedelim pascal kullanıyoruz
Sen Vay be! Helal bana! Nasıl da hükmettim iki dakikada bilgisayara! derken elaman devam eder.
Yazdın mı? Çok güzel devam o zaman. Bir saat devam ettikten sonra seni döngülerin içinden else if olmuş bir biçimde çıkarır. Sen Efenim bi saniye anlamadığım yerler var? derken ders bitiş zili çalar. Heyecanla ve birazda tırsarak diğer dersleri beklersin. İkinci ders derken üçüncü dersini alırsın. Kendine bir güven gelir. Ve başlarsın kendi kodcuklarını yazmaya. Uğraşırsın. Yazarsın. Biter. Çalışır.
:-)))
İşte o zaman ekrana merhaba dünya yazdırdığın anı hatırlar ve gülümsersin. Daha fazla kodcuk üretmeye başlarsın. Basitte olsa birşeyler üretmenin verdiği şevkle yazarsın da yazarsın. Sonra seni zorlayacak bir şeyler ararsın ve bulursun.
Soru şudur:
Kullanıcıdan alınan string ifadeyi ekranın 1,1 koordinatından başlayarak satır/sütun un birer
artıırılıp/azaltılması ile ve ekranın dışına kaçmayacak şekilde kenarlara çarpa çarpa herhangi bir tuşa basana kadar hareket ettirecek bir program yazınız.
Soru daha anlaşılabilir ifadeyle şudur:
Baba hani eskiden bir ekran koruyucu vardı. Bir yazı giriyorduk ekranın kenarlarına çarpa çarpa hareketine devam ediyordu. Hatırladın mı? Hayır mı? Canım hani sol üst köşeden başlayıp önce sağa ve aşağıya giden aşağıya varınca oradan yukarıya çıkan falan filan bir ekran koruyucu vardı. Evet işte o.
Sanırım hangi olaydan bahsettiğimi anladınız. Programı yazmaya başlarsın. Kararlısındır. Kesin olacak başka çıkar yolu yok. Aklına türlü türlü çözümler gelir olmaz. Baştan başlarsın yazmaya gene olmaz. O zaman anlarsın ki ekranda değil de başka bir yerde başka birşeyi halletmen gerekiyor. Yapacağın iş belli ama nasıl yapacağın belirsizdir. Kafanda çeşitli çözümler vardır. Ama hiçbiri sırasına göre planlanmamış. Algoritma tamamlanmamıştır ! Şu yol olmaz... Bu yol? Pufff bu da olmadı. Kendine güvenin azalır. Etrafındakiler sorunun çözümünü çoktan bulmuştur. Pes edersin.
Aradan bayağı zaman geçtikten sonra bu soru tekrar karşına çıkar. Şu veya bu şekilde artık programlama konusunda yol katetmişsindir. Farklı çözüm yolları gelir aklına. Sanki algoritma tamamlanmıştır. Tekrar oturursun yazmaya. Bu sefer olacak gibi. Çözüme yaklaşırsın... Yaklaşırsın... Evet işte beklenen tuş kombinasyonu: Ctrl+F9. Eveeet... Çalıştı. Çalıştı. Ohhhh be.
Tasarladığın algoritmaya hayransındır.
"Yüksek yüksek tepelere ev kurmasınlar arkadaşlar."
Neden mi? Çünkü uçmamak lazım. Ben uçtum. Oraya buraya kondum. Sonra bir başka arkadaşım yazdığım kodun 150 satırlık olduğunu duyunca beni aşağıya çağırdı. Gel dedi fazla uçma. İşin kolayı var, güzeli var, temizi var.
Algoritmayı anlatır. Veee....
Farkı görün ben çok güldüm sizde gülün, önemlisi ders alın!
Uses Crt;
Var
nereden:string;
i,x,y,uz:integer;
ifade:string;
procedure sagart(var a,b:integer);
begin
clrscr;
b:=b+1; a:=a+1;
gotoxy(b,a);
write(ifade);
delay(20);
textcolor(yellow);
end;
procedure sagaz(var a,b:integer);
begin
clrscr;
b:=b+1; a:=a-1;
gotoxy(b,a);
write(ifade);
delay(20);
textcolor(blue);
end;
procedure solaz(var a,b:integer);
begin
clrscr;
b:=b-1; a:=a-1;
gotoxy(b,a);
write(ifade);
delay(20);
textcolor(lightgreen);
end;
procedure solart(var a,b:integer);
begin
clrscr;
b:=b-1; a:=a+1;
gotoxy(b,a);
write(ifade);
delay(20);
textcolor(red);
end;
begin
clrscr;
textcolor(white);
Write('ifadeyi giriniz..:');
readln(ifade);
uz:=length(ifade);
x:=1; y:=1;
nereden:='sagaz';
repeat
if (x=50) and (nereden='sagart') then
begin
repeat
sagaz(x,Y);
until (y=80-uz) or (x=1) or (keypressed);;
nereden:='sagaz';
end;
if (x=50) and (nereden='solart') then
begin
repeat
solaz(x,Y);
until (y=1) or (x=1) or (keypressed);;
nereden:='solaz';
end;
if (y=80-uz) and (nereden='sagaz') then
begin
repeat
solaz(x,y);
until (x=1) or (y=1) or (keypressed);;
nereden:='solaz';
end;
if (y=80-uz) and (nereden='sagart') then
begin
repeat
solart(x,y);
until (x=50) or (y=1) or (keypressed);;
nereden:='solart';
end;
if (x=1) and (nereden='solaz') then
begin
repeat
solart(x,y);
until (y=1) or (x=50) or (keypressed);;
nereden:='solart';
end;
if (x=1) and (nereden='sagaz') then
begin
repeat
sagart(x,y);
until (y=80-uz) or (x=50) or (keypressed);;
nereden:='sagart';
end;
if (y=1) and (nereden='solart') then
begin
repeat
sagart(x,y);
until (x=50) or (y=80-uz) or (keypressed);;
nereden:='sagart';
end;
if (y=1) and (nereden='solaz') then
begin
repeat
sagaz(x,y);
until (x=1) or (y=80-uz) or (keypressed);
nereden:='sagaz';
end;
until keypressed;
readln;
end.
(On derste Everest'e nasıl çıkılır dersleri tarafımdan verilmektedir! İlgilenen arkadaşlara duyurulur.:) )
Evet hufh. Ben Everest'in tepesinde dururken arkadaşın beni yere çivilediği kod geliyor şimdi sıkı durun...
Uses Crt;
Var
mesaj:string[10];
x,y,ax,ay:shortint;
Begin
Clrscr;
Write('Mesaj gir:');
Readln(mesaj);
ax:=1; ay:=1;
x:=0; y:=0;
Repeat
x:=x+ax; y:=Y+ay;
Gotoxy(y,x);
Write(mesaj);
Delay(20);
Clrscr;
if x=50 then ax:=-1;
if x=1 then ax:=1;
if y=80-length(mesaj) then ay:=-1;
if y=1 then ay:=1;
Until Keypressed;
End.
Vallahi komik.
Demek ki neymiş Hayatta en hakiki mürşit ilimmiş fenmiş.
Her güzel algoritmadan daha güzel algoritmalar olduğunu unutmamamız dileğiyle. Saygılar sevgiler bizden olsun efenim.
Şimdi efendim. ilk programlama öğrendiğimiz zaman, daha kafamızda programlamaya dair her şey soyutken, biri çıkar (bu çıkan biri bir hoca bir arkadaş veya bir kitap olabilir). Derki aç kullandığın editörü yaz bakalım işte yazacağın komut:
write('Merhaba Dünya'); //farzedelim pascal kullanıyoruz
Sen Vay be! Helal bana! Nasıl da hükmettim iki dakikada bilgisayara! derken elaman devam eder.
Yazdın mı? Çok güzel devam o zaman. Bir saat devam ettikten sonra seni döngülerin içinden else if olmuş bir biçimde çıkarır. Sen Efenim bi saniye anlamadığım yerler var? derken ders bitiş zili çalar. Heyecanla ve birazda tırsarak diğer dersleri beklersin. İkinci ders derken üçüncü dersini alırsın. Kendine bir güven gelir. Ve başlarsın kendi kodcuklarını yazmaya. Uğraşırsın. Yazarsın. Biter. Çalışır.
:-)))
İşte o zaman ekrana merhaba dünya yazdırdığın anı hatırlar ve gülümsersin. Daha fazla kodcuk üretmeye başlarsın. Basitte olsa birşeyler üretmenin verdiği şevkle yazarsın da yazarsın. Sonra seni zorlayacak bir şeyler ararsın ve bulursun.
Soru şudur:
Kullanıcıdan alınan string ifadeyi ekranın 1,1 koordinatından başlayarak satır/sütun un birer
artıırılıp/azaltılması ile ve ekranın dışına kaçmayacak şekilde kenarlara çarpa çarpa herhangi bir tuşa basana kadar hareket ettirecek bir program yazınız.
Soru daha anlaşılabilir ifadeyle şudur:
Baba hani eskiden bir ekran koruyucu vardı. Bir yazı giriyorduk ekranın kenarlarına çarpa çarpa hareketine devam ediyordu. Hatırladın mı? Hayır mı? Canım hani sol üst köşeden başlayıp önce sağa ve aşağıya giden aşağıya varınca oradan yukarıya çıkan falan filan bir ekran koruyucu vardı. Evet işte o.
Sanırım hangi olaydan bahsettiğimi anladınız. Programı yazmaya başlarsın. Kararlısındır. Kesin olacak başka çıkar yolu yok. Aklına türlü türlü çözümler gelir olmaz. Baştan başlarsın yazmaya gene olmaz. O zaman anlarsın ki ekranda değil de başka bir yerde başka birşeyi halletmen gerekiyor. Yapacağın iş belli ama nasıl yapacağın belirsizdir. Kafanda çeşitli çözümler vardır. Ama hiçbiri sırasına göre planlanmamış. Algoritma tamamlanmamıştır ! Şu yol olmaz... Bu yol? Pufff bu da olmadı. Kendine güvenin azalır. Etrafındakiler sorunun çözümünü çoktan bulmuştur. Pes edersin.
Aradan bayağı zaman geçtikten sonra bu soru tekrar karşına çıkar. Şu veya bu şekilde artık programlama konusunda yol katetmişsindir. Farklı çözüm yolları gelir aklına. Sanki algoritma tamamlanmıştır. Tekrar oturursun yazmaya. Bu sefer olacak gibi. Çözüme yaklaşırsın... Yaklaşırsın... Evet işte beklenen tuş kombinasyonu: Ctrl+F9. Eveeet... Çalıştı. Çalıştı. Ohhhh be.
Tasarladığın algoritmaya hayransındır.
"Yüksek yüksek tepelere ev kurmasınlar arkadaşlar."
Neden mi? Çünkü uçmamak lazım. Ben uçtum. Oraya buraya kondum. Sonra bir başka arkadaşım yazdığım kodun 150 satırlık olduğunu duyunca beni aşağıya çağırdı. Gel dedi fazla uçma. İşin kolayı var, güzeli var, temizi var.
Algoritmayı anlatır. Veee....
Farkı görün ben çok güldüm sizde gülün, önemlisi ders alın!
Uses Crt;
Var
nereden:string;
i,x,y,uz:integer;
ifade:string;
procedure sagart(var a,b:integer);
begin
clrscr;
b:=b+1; a:=a+1;
gotoxy(b,a);
write(ifade);
delay(20);
textcolor(yellow);
end;
procedure sagaz(var a,b:integer);
begin
clrscr;
b:=b+1; a:=a-1;
gotoxy(b,a);
write(ifade);
delay(20);
textcolor(blue);
end;
procedure solaz(var a,b:integer);
begin
clrscr;
b:=b-1; a:=a-1;
gotoxy(b,a);
write(ifade);
delay(20);
textcolor(lightgreen);
end;
procedure solart(var a,b:integer);
begin
clrscr;
b:=b-1; a:=a+1;
gotoxy(b,a);
write(ifade);
delay(20);
textcolor(red);
end;
begin
clrscr;
textcolor(white);
Write('ifadeyi giriniz..:');
readln(ifade);
uz:=length(ifade);
x:=1; y:=1;
nereden:='sagaz';
repeat
if (x=50) and (nereden='sagart') then
begin
repeat
sagaz(x,Y);
until (y=80-uz) or (x=1) or (keypressed);;
nereden:='sagaz';
end;
if (x=50) and (nereden='solart') then
begin
repeat
solaz(x,Y);
until (y=1) or (x=1) or (keypressed);;
nereden:='solaz';
end;
if (y=80-uz) and (nereden='sagaz') then
begin
repeat
solaz(x,y);
until (x=1) or (y=1) or (keypressed);;
nereden:='solaz';
end;
if (y=80-uz) and (nereden='sagart') then
begin
repeat
solart(x,y);
until (x=50) or (y=1) or (keypressed);;
nereden:='solart';
end;
if (x=1) and (nereden='solaz') then
begin
repeat
solart(x,y);
until (y=1) or (x=50) or (keypressed);;
nereden:='solart';
end;
if (x=1) and (nereden='sagaz') then
begin
repeat
sagart(x,y);
until (y=80-uz) or (x=50) or (keypressed);;
nereden:='sagart';
end;
if (y=1) and (nereden='solart') then
begin
repeat
sagart(x,y);
until (x=50) or (y=80-uz) or (keypressed);;
nereden:='sagart';
end;
if (y=1) and (nereden='solaz') then
begin
repeat
sagaz(x,y);
until (x=1) or (y=80-uz) or (keypressed);
nereden:='sagaz';
end;
until keypressed;
readln;
end.
(On derste Everest'e nasıl çıkılır dersleri tarafımdan verilmektedir! İlgilenen arkadaşlara duyurulur.:) )
Evet hufh. Ben Everest'in tepesinde dururken arkadaşın beni yere çivilediği kod geliyor şimdi sıkı durun...
Uses Crt;
Var
mesaj:string[10];
x,y,ax,ay:shortint;
Begin
Clrscr;
Write('Mesaj gir:');
Readln(mesaj);
ax:=1; ay:=1;
x:=0; y:=0;
Repeat
x:=x+ax; y:=Y+ay;
Gotoxy(y,x);
Write(mesaj);
Delay(20);
Clrscr;
if x=50 then ax:=-1;
if x=1 then ax:=1;
if y=80-length(mesaj) then ay:=-1;
if y=1 then ay:=1;
Until Keypressed;
End.
Vallahi komik.
Demek ki neymiş Hayatta en hakiki mürşit ilimmiş fenmiş.
Her güzel algoritmadan daha güzel algoritmalar olduğunu unutmamamız dileğiyle. Saygılar sevgiler bizden olsun efenim.