1) Ekrana "Hello World!" yazan kod:


import tkinter

class MyGUI:
def __init__(self):
self.main_window=tkinter.Tk()

self.label = tkinter.Label(self.main_window, text='Hello World! ')
self.label.pack()
tkinter.mainloop()
my_gui = MyGUI()

Ekran Çıktısı:




2) Frame kullanımı:


import tkinter

class MyGUI:
def __init__(self):
self.main_window=tkinter.Tk()

self.top_frame = tkinter.Frame(self.main_window)
self.bottom_frame= tkinter.Frame(self.main_window)

self.label1=tkinter.Label(self.top_frame,text="Yaz")
self.label2=tkinter.Label(self.top_frame,text="Sonbahar")
self.label3 = tkinter.Label(self.top_frame, text="Kış")

self.label1.pack(side="top")
self.label2.pack(side="top")
self.label3.pack(side="top")

self.label4 = tkinter.Label(self.bottom_frame, text="Yaz")
self.label5 = tkinter.Label(self.bottom_frame, text="Sonbahar")
self.label6 = tkinter.Label(self.bottom_frame, text="Kış")

self.label4.pack(side="left")
self.label5.pack(side="left")
self.label6.pack(side="left")

self.top_frame.pack()
self.bottom_frame.pack()

tkinter.mainloop()
my_gui=MyGUI()

Ekran Çıktısı:



3) Buton kullanımı:


import tkinter
import tkinter.messagebox

class MyGUI:
def __init__(self):
self.main_window=tkinter.Tk()

self.my_button = tkinter.Button(self.main_window, text='Click me!', command=self.do_something)

self.my_button.pack()

tkinter.mainloop()

def do_something(self):
tkinter.messagebox.showinfo('Response', 'Thanks for clicking the button.')

my_gui=MyGUI()



Ekran Çıktısı:


4) Çıkış butonu kullanımı:


import tkinter
import tkinter.messagebox

class MyGUI:
def __init__(self):
self.main_window=tkinter.Tk()

self.my_button= tkinter.Button(self.main_window, text='Click Me!',command= self.do_something)
self.quit_button = tkinter.Button(self.main_window, text='Quit', command=self.main_window.destroy)
self.my_button.pack()
self.quit_button.pack()

tkinter.mainloop()
def do_something(self):
tkinter.messagebox.showinfo('Response','Thanks for clicking the button.')
my_gui = MyGUI()

Ekran Çıktısı:




5) Kilometreyi mil'e çeviren örnek kod:


import tkinter
import tkinter.messagebox

class sum:
def __init__(self):
self.arayuz=tkinter.Tk()
self.ust_cerceve=tkinter.Frame(self.arayuz)
self.alt_cerceve=tkinter.Frame(self.arayuz)

self.label=tkinter.Label(self.ust_cerceve,text='Enter a distance in kilometres:')
self.kilo_entry=tkinter.Entry(self.ust_cerceve,width=10)

self.label.pack(side='left')
self.kilo_entry.pack(side='left')

self.calc_button = tkinter.Button(self.alt_cerceve,text='Convert',command=self.convert)
self.quit_button = tkinter.Button(self.alt_cerceve,text='Quit', command=self.arayuz.destroy)

self.calc_button.pack(side='left')
self.quit_button.pack(side='left')
self.alt_cerceve.pack()
self.ust_cerceve.pack()

tkinter.mainloop()

def convert(self):
kilo = float(self.kilo_entry.get())

miles = kilo*0.6214
tkinter.messagebox.showinfo('results',str(kilo)+'kilometres is equal to '+str(miles)+' miles.')

kilometre_convert=sum()


Ekran  Çıktısı:




6) Üç sayının ortalamasını alan kod:


import tkinter

class TestAvg:
def __init__(self):

self.arayuz=tkinter.Tk()

self.test1_frame=tkinter.Frame(self.arayuz)
self.test2_frame=tkinter.Frame(self.arayuz)
self.test3_frame=tkinter.Frame(self.arayuz)
self.avg_frame=tkinter.Frame(self.arayuz)
self.button_frame=tkinter.Frame(self.arayuz)

self.test1_label=tkinter.Label(self.test1_frame, text='Enter the scote test 1 = ')
self.test1_entry=tkinter.Entry(self.test1_frame,width=10)
self.test1_label.pack(side='left')
self.test1_entry.pack(side='left')

self.test2_label = tkinter.Label(self.test2_frame, text='Enter the scote test 2 = ')
self.test2_entry = tkinter.Entry(self.test2_frame, width=10)
self.test2_label.pack(side='left')
self.test2_entry.pack(side='left')

self.test3_label = tkinter.Label(self.test3_frame, text='Enter the scote test 3 = ')
self.test3_entry = tkinter.Entry(self.test3_frame, width=10)
self.test3_label.pack(side='left')
self.test3_entry.pack(side='left')

self.result_label=tkinter.Label(self.avg_frame, text='Average= ')
self.avg=tkinter.StringVar()
self.avg_label=tkinter.Label(self.avg_frame,textvariable=self.avg)
self.result_label.pack(side='left')
self.avg_label.pack(side='left')

self.calc_button=tkinter.Button(self.button_frame,text='Average', command=self.calc_avg)
self.quit_buttob=tkinter.Button(self.button_frame,text='Quit', command=self.arayuz.destroy)

self.calc_button.pack(side='left')
self.quit_buttob.pack(side='left')

self.test1_frame.pack()
self.test2_frame.pack()
self.test3_frame.pack()
self.avg_frame.pack()
self.button_frame.pack()

tkinter.mainloop()

def calc_avg(self):
self.test1 = float(self.test1_entry.get())
self.test2 = float(self.test2_entry.get())
self.test3 = float(self.test3_entry.get())

self.average=(self.test1 + self.test2+self.test3) /3.0

self.avg.set(self.average)
test_avg=TestAvg()


Ekran Çıktısı:


7) Radio buton kullanımı:


import tkinter
import tkinter.messagebox

class MyGUI:
def __init__(self):
self.arayuz=tkinter.Tk()

self.top_flame=tkinter.Frame(self.arayuz)
self.bottom_flame=tkinter.Frame(self.arayuz)

self.radio_var=tkinter.IntVar()

self.radio_var.set(1)

self.rb1 = tkinter.Radiobutton(self.top_flame, text='Option 1', variable=self.radio_var, value= 1)
self.rb2 = tkinter.Radiobutton(self.top_flame, text='Option 2', variable=self.radio_var, value= 2)
self.rb3 = tkinter.Radiobutton(self.top_flame, text='Option 3', variable=self.radio_var, value= 3)

self.rb1.pack()
self.rb2.pack()
self.rb3.pack()

self.ok_button=tkinter.Button(self.bottom_flame, text='OK', command=self.show_choice)
self.quit_button=tkinter.Button(self.bottom_flame,text='Quit', command=self.arayuz.destroy)

self.ok_button.pack(side='left')
self.quit_button.pack(side='left')

self.top_flame.pack()
self.bottom_flame.pack()

tkinter.mainloop()

def show_choice(self):
tkinter.messagebox.showinfo('Selection', 'You selected option '+ str(self.radio_var.get()))

my_gui=MyGUI()


Ekran Çıktısı:


8) Checkbutton kullanımı:


import tkinter
import tkinter.messagebox

class MyGUI:
def __init__(self):
self.arayuz=tkinter.Tk()

self.top_frame =tkinter.Frame(self.arayuz)
self.bottom_flame=tkinter.Frame(self.arayuz)

self.cb_var1=tkinter.IntVar()
self.cb_var2=tkinter.IntVar()
self.cb_var3=tkinter.IntVar()

self.cb_var1.set(0)
self.cb_var2.set(0)
self.cb_var3.set(0)

self.cb1=tkinter.Checkbutton(self.top_frame,text='Option 1 ', variable=self.cb_var1)
self.cb2=tkinter.Checkbutton(self.top_frame,text='Option 2 ', variable=self.cb_var2)
self.cb3=tkinter.Checkbutton(self.top_frame,text='Option 3 ', variable=self.cb_var3)

self.cb1.pack()
self.cb2.pack()
self.cb3.pack()

self.ok_button=tkinter.Button(self.bottom_flame,text='OK',command=self.show_choice)
self.quit_button=tkinter.Button(self.bottom_flame,text='Quit',command=self.arayuz.destroy)

self.ok_button.pack(side='left')
self.quit_button.pack(side='left')

self.top_frame.pack()
self.bottom_flame.pack()

tkinter.mainloop()

def show_choice(self):
self.message='You selected:\n'

if self.cb_var1.get()==1:
self.message=self.message+'1\n'
if self.cb_var2.get()==1:
self.message=self.message+'2\n'
if self.cb_var3.get()==1:
self.message=self.message+'3\n'
tkinter.messagebox.showinfo('Selection', self.message)

my_gui=MyGUI()

Ekran Çıktısı:


Basit bir C Programı: Bir Satır Yazı Yazma 

C, daha önce bilgisayar programlaması yapmamış insanlara garip gelebilecek bazı gösterimler kullanır.  Basit bir C programı düşünerek baÅŸlayalım. İlk örneÄŸimiz Console ekranına yazı yazar.


1 // C'de ilk program.
2 #include <stdio.h>
3
4 //main fonksiyonu çalışmaya başlar
5 int main( void )
6 {
7    printf("Welcome to C!\n");
8 } //main fonksiyonunun sonu


Ekran Çıktısı

Welcome to C!


Bu kodu satır satır inceleyelim:  İlk satır // ile baÅŸlar ve // satırların açıklama olduÄŸunu iÅŸaret eder. Program dosyasına açıklama ekleyerek, programın okunabilirliÄŸini iyileÅŸtirmiÅŸ olursunuz. Açıklamalar program çalışırken dikkate alınmaz ve bilgisayarın herhangi bir iÅŸlem yapmasına neden olmaz. Açıklamalar C derleyicisi tarafından göz ardı edilir ve herhangi makine-dili nesne kodu üretmesine neden olmaz. Aynı zamanda /* ile baÅŸlayıp */ arasında olan satırlar da açıklamadır.




#include Önişlemci Değimi

2. satır:

#include <stdio.h>

C ön iÅŸlemcisine bir talimattır. # ile baÅŸlayan satırlar, program derlemeden önce ön  iÅŸlemci tarafından iÅŸlenir. 2. satır ön iÅŸlemciye standart giriÅŸ/çıkış baÅŸlık (<stdio.h>) içeriÄŸini programa eklemesini söyler. Derleme, printf (7. satır) gibi standart giriÅŸ/çıkış kütüphane fonksiyonlarını çağırdığı zaman, derleyici tarafından kullanılan bilgiler bu baÅŸlık ihtiva eder.



Boş Satırlar ve Boşluklar

3. satır sadece boÅŸ bir satırdır. Programı daha kolay okumak için boÅŸ satırlar, boÅŸluk karakterleri ve sekme karakterleri kullanırsınız. Bu karakterlerin hepsi beyaz boÅŸluk olarak bilinir. Beyaz boÅŸluk karakterleri normalde derleyici tarafından göz ardı edilir. 




main() Fonksiyonu

int main( void )


main fonksiyonu, her C programının bir parçasıdır. main'den sonraki parantez main'in fonksiyon olarak adlandırılan bir program yapı taşı olduğunu işaret eder. C programları, bir veya daha fazla fonksiyon içerir. Bu fonksiyonların içerisinden bir tanesi mutlaka main olmak zorundadır. Her C programı yürütülmeye main fonksiyonlarından başlar. Fonksiyonlar bilgi gönderebilir. main'in solundaki int anahtar kelimesi main'in bir tam sayı değer gönderdiğini işaret ederi. Buradaki parantez içerisindeki void main'in herhangi bir bilgi almadığı anlamına gelir.

Sol küme parantezi, { bir fonksiyonun gövdesini başlatır(6. satır). Karşılık gelen sağ küme parantezi bir fonksiyonu sonlandırır(8. satır). Bu parantezler çifti ve parantezler arasındaki program bir blok olarak isimlendirilir.




Bir Çıkış İfadesi

7. satır:

printf("Welcome to C!\n");

Bilgisayara ünlem iÅŸareti ile sonlanan  bir karakter dizinini ekrana bastırmak için, yani bir eylem yapması için bilgisayara talimat verir. Bazen bir karakter dizini bazen bir karakter katarı , bazen mesaj veya bir söz olarak adlandırılır.  printf fonksiyonu ("f" "biçimlendirilmesine"e karşılık gelir), parantez içerisindeki argümanı ve noktalı virgül(;) dahil tüm satıra ifade denir. Her ifade noktalı virgül (;) ile ( aı zamanda iade sonlandırıcı olarak bilinir) sonlanmak zorundadır. printf ifadesi yürütüldüğü zaman, ekrana Welcome to C! mesajı yazılır. Karakterler normalde printf ifadesindeki çift tırnaklar arasında tam olarak göründükleri gibi basılır. 




 Kaçış Dizileri

\n karakterinin ekrana basılmadığını fark etmiÅŸsinizdir. Ters bölü(\) kaçış karakterleri olarak adlandırılırlar. printf'in sıra dışı bazı ÅŸeyler yapacağını belirtir. Bir karakter dizisinde ters bölü ile karşılaşıldığında , derleyici devam ederek sonraki karaktere bakar ve ters bölü ile birleÅŸtirerek bir kaçış dizisi haline gelir. \n kaçış dizisi yeni satır anlamındadır. printf karakter katarın da yeni satır varsa, yeni satır imlecin ekranda sonraki satır başına konumlanmasına neden olur. 


Kaçış dizisi            Tanım

\n                            Yeni satır. İmleci sonraki satır başına konumlandırır. 

\t                             Yatay sekme. İmleci sonraki sekme noktasına kaydırır.

\a                            Uyarı. İmlecin o andaki konumunu deÄŸiÅŸtirmeden bir ses veya görüntülenebilir bir                                   uyarı üretir.

\\                            Ters bölü. Dizi içerisinde ters bölü karakterini yerleÅŸtirir.

\"                            Çift tırnak. Dizi içine çift tırnak karakteri yerleÅŸtirir. 



Çoklu printf 'ler Kullanma


2 #include <stdio.h>
3
4 //main fonksiyonu çalışmaya başlar
5 int main( void )
6 {
7    printf("Welcome ");
   printf("to C!\n");
9 } //main fonksiyonunun sonu

Ekran Çıktısı

Welcome to C!

---------------

2 #include <stdio.h>
3
4 //main fonksiyonu çalışmaya başlar
5 int main( void )
6 {
7    printf("Welcome\nto\nC!\n");
8    
9 } //main fonksiyonunun sonu

Ekran Çıktısı

Welcome
to
C!


Bir Başka Basit C Programı: İki Tam Sayıyı Toplama



2 //Toplama programı
3 #include <stdio.h>
4
5 int main( void ) //main fonksiyonu çalışmaya baÅŸlar
6 {
7 int tamsayi1; // kullanıcı tarafından girilecek ilk sayı
8 int tamsayi2; // kullanıcı tarafından girilecek ikici sayı
9 int toplam; //toplamın saklanacağı değişken
10
11 printf ( "Ilk tam sayiyi giriniz\n" ); // istem
12 scanf ( "%d",&tasayi1);  //bir tam sayı oku
13 printf ( "Ikinci tam sayiyi giriniz\n" ); // istem
14 scanf ( "%d",&tamsayi2);  // bir tam  sayı oku
15 toplam = tamsayi1+tamsayi2; // sayıların toplamını toplama aktar
16 printf ( "Toplam = %d\n",toplam );// toplamı yaz
17
18 } //main fonksiyonunun sonu

Ekran Çıktısı

Ilk tamsayiyi giriniz
45
Ikinci tamsayiyi giriniz
72
Toplam = 117



2. satırdaki açıklamalar programın amacını ifade eder. Daha önce de dediğimiz gibi her program main ile çalışmaya başlar. Sol küme parantezi { (6. satır) main'in gövdesinin başladığını gösterir ve karşılığı olan sağ küme parantezi } (18. satır) main'in sonunu gösterir.



Değişken ve Değişken Tanımlamaları

 7-9 satırlar tanımlamadır.

int tamsayi1; 
int tamsayi2; 
int toplam;

tamsayi1, tamsayi2 ve toplam deÄŸiÅŸkenlerin isimleridir - bir programın kullanımı için deÄŸerlerin saklandığı hafızadaki yerlerdir. Bu tanımlamalar, tamsayi1, tamsayi2 ve toplam deÄŸiÅŸkenlerinin, tam sayı deÄŸer alacağı anlamına gelen int türü olduklarını belirtir. 

Bir programda kullanılmadan önce tüm deÄŸiÅŸkenler bir isim ve bir veri türü ile tanımlanmak zorundadır. 



İstem Mesajları

11. satır:

printf ( "Ilk tam sayiyi giriniz\n" ); // istem

"Ilk tam sayiyi giriniz " karakter dizinini gösterir ve imleci sonraki satır başına konumlandırır. Kullanıcıya belirli bir eylem yapmasını söylediği için bu mesaja istem denir.




scanf Fonksiyonu ve Biçimlendirilmiş Girişler

12. satır:

scanf ( "%d",&tamsayi1);  //bir tam sayı oku

Kullanıcıdan veri almak için scanf kullanılır ("f" "biçimlendirilmiÅŸ" e karşılık gelir). Fonksiyon genede standart giriÅŸ birimi olan klavyeden okur. Burada scanf'in "%d" ve &tamsayi1 ÅŸeklinde iki argümanı vardır. Birincisi biçim kontrol katarı, kullanıcı tarafından girilecek veri türünü belirler. %d çevrim belirteci verinin tam sayı olması gerektiÄŸini belirtir ( d harfi "onluk tabanda tam sayı" ya karşılık gelir).  Buradaki %'ye scanf tarafından bir çevrim belirteci baÅŸlatan özel bir karakter olarak iÅŸlem görür. scanf'in ikinci argümanı deÄŸiÅŸken isminin önündeki "ve iÅŸareti"(&) ile baÅŸlar - adres iÅŸlemi denir. DeÄŸiÅŸken ismi ile birlikte &, tamsayi2 deÄŸiÅŸkeninin saklandığı hafızadaki yerini(veya adresini) scanf 'e bildirir. Sonra bilgisayar kullanıcısı tamsayi1 için girdiÄŸi deÄŸeri burada saklar. 

Bilgisayar yukarıdaki scanf 'i çalıştırdığı zaman, kullanıcıdan tamsayi1 deÄŸiÅŸkenine bir deÄŸer girmesi için bekler. Kullanıcı bir tam sayı yazar, sonra da sayıyı bilgisayara göndermek için Enter tuÅŸuna basarak karşılık verir. Bilgisayar daha sonra bu sayıyı veya deÄŸeri, tamsayi1 deÄŸiÅŸkenine aktarır. Bu programda bundan sonra tamsayi1 deÄŸiÅŸkeninin geçtiÄŸi her yerde aynı deÄŸer kullanılacaktır. printf ve scanf fonksiyonları kullanıcı ve bilgisayar arasındaki etkileÅŸimi kolaylaÅŸtırır. Bu etkileÅŸim karşılıklı konuÅŸmayı andırdığı için buna etkili hesaplama denir.  

13. satır:

printf ( "Ikinci tam sayiyi giriniz\n" ); // istem

Ekranda Ikinci tam sayiyi giriniz mesajını gönderir, sonra imleci sonraki satır başına konumlandırır. Bu printf aynı zamanda kullanıcının eylem yapmasına sebep olur. 

14. satır: 

scanf ( "%d",&tamsayi2);  // bir tamsayı oku

Kullanıcıdan tamsayi2 deÄŸiÅŸkeni için bir deÄŸer alır. 




Atama İfadeleri

15. satırdaki atama ifadesi: 


toplam = tamsayi1+tamsayi2; // sayıların toplamını toplama aktar


tamsayi1 ve tamsayi2 deÄŸiÅŸkenlerinin toplamını hesaplar ve atama iÅŸlemi = kullanarak sonucu toplam deÄŸiÅŸkenine aktarır. İfade "toplam alır tamsayi1 + tamsayi2 ' nin deÄŸeri" ÅŸeklinde okunur. ÇoÄŸu hesaplama atama iÅŸlemlerinde icra edilir. 



Biçim Kontrol Karakter Katarı ile Yazma

16. satır: 

printf ( "Toplam = %d\n",toplam );// toplamı yaz

Toplam = karakter dizinini takip eden toplam deÄŸiÅŸkeninin sayısal deÄŸerini ekrana yazmak için printf fonksiyonunu çağırır.  Bu printf 'in "Toplam = %d\n" ve toplam olmak üzere iki argümanı vardır. İlk argüman biçim kontrol karakteri katarıdır. Gösterilecek bazı sözel karakterleri ve bir tam sayı yazılacağını belirten %d çevrim belirteci içerir. 



C 'de Aritmetik İşlemleri


C iÅŸlemi            Aritmetik İşlem         Cebir İfade                C İfadesi

Toplama            +                                    f + 7                          f + 7

Çıkarma            -                                     p - c                            p - c

Çarpma             *                                    bm                              b * m

Bölme               /                                     x / y                            x / y

Kalan               %                                    r mod s                       r % s







C 'de Eşitlik ve İlişkisel İşlemler


Cebirsel eÅŸitlik             C eÅŸitlik veya            C koÅŸul örneÄŸi        C koÅŸul anlamı
veya iliÅŸkisel iÅŸlem       iliÅŸkisel iÅŸlem

=                                        ==                           x == y                       x, y 'ye eÅŸittir

!=                                       !=                            x != y                       x, y 'ye eÅŸit deÄŸildir. 

>                                         >                             x > y                         x, y 'den büyüktür.

<                                         <                             x < y                         x, y 'den küçüktür.

>=                                      >=                            >= y                      x, y 'den büyük veya eÅŸittir.

<=                                      <=                            x  <= y                    x, y 'den küçük veya eÅŸittir. 







Kısa Yollar:

Aşağıdaki linkler ile C programlama ile ilgili olan diğer bölümlere ulaşabilirsiniz:



Kaynakça 

https://www.programiz.com/c-programming

https://www.tutorialspoint.com/cprogramming/index.htm

https://www.cprogramming.com/

https://www.learn-c.org/

https://www.javatpoint.com/c-programming-language-tutorial

https://www.geeksforgeeks.org/c-language-set-1-introduction/

Deitel Deitel c ve c++ 
























 

Recursive Örnekler

1) Klavyeden girilen sayının faktöriyeli:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace dort_islemm
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Sayi giriniz: ");
            int sayi = Convert.ToInt32(Console.ReadLine());
            islem(sayi);
            Console.WriteLine("{0}! = {1}", sayi,islem(sayi));

            Console.ReadLine();
        }

        public static int islem(int sayi)
        {
            if (sayi <= 0) return 1;
            else return sayi * (islem(sayi - 1));
        }
        
    }
}

2)  0 dan girilen sayıya kadar toplayan program: 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace toplama
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Sayi giriniz: ");
            int sayi = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Toplam = " + topla(sayi));

            Console.ReadLine();

        }
        public static int topla(int sayi)
        {
            if (sayi==0) { return  0; }
            else
            return sayi + topla(sayi - 1);
        }
        
    }
}

3) Girilen adım numarasındaki fibonacci değerini bulma:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace fibonacci
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Adim sayisini giriniz: ");
            int adim = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine(fibonacci(adim));
            Console.ReadLine(); 
        }

        public static int fibonacci (int adim)
        {
            if(adim<=2)
            {
                return 1;
            }
            else
            {
                return fibonacci(adim - 1) + fibonacci(adim - 2);
            }
        }
    }
}
 4)0 dan girilen sayıya kadar yazma:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ekrana__sayi
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("sayi giriniz: ");
            int sayi = Convert.ToInt32(Console.ReadLine());
            yaz(sayi);
            Console.ReadLine();
        }

        static void yaz(int sayi)
        {
            if (sayi == 0) return;
            else
            {
                Console.WriteLine(sayi);
                yaz(sayi - 1);
            }
        }
    }
}

5) Bir dizinin minimum değerdeki elemanı:


    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace dizinin_en_büyük_elemanı
{
    class Program
    {
        public static int findMinRec(int[] A, int n)
        {
            // if size = 0 means whole array  
            // has been traversed  
            if (n == 1)
                return A[0];

            return Math.Min(A[n - 1], findMinRec(A, n - 1));
        }

        static void Main(string[] args)
        {
            int[] A = { 1, 4, 45, 6, -50, 10, 2 };
            int n = A.Length;

            // Function calling  
            Console.WriteLine(findMinRec(A, n));
            Console.ReadLine();
        }
    }
}















































                               

 Tam dalga doÄŸrultucuyu anlamak için önce Yarım Dalga DoÄŸrultucuyu iyice öğrenmeniz gerekir. 


DoÄŸrultma devrelerinde diyot ve diyot grupları kullanılır. Bunun sebebi diyotların akımı tek yönde iletmeleridir. Diyotların bu çalışma prensipleri ile birçok doÄŸrultucu devresi tasarlanır. 

Tam Dalga DoÄŸrultucu

Yarım dalga doğrultucular, girişe uygulanan AC'nin sadece yarım döngüsünün geçmesine izin verir ve diğer yarım döngüyü ise bloke eder. Bu nedenle güç kaybı oluşur. Aynı zamanda yarım dalga doğrultucu devreleri verimli değildir ( %40.6 ). Daha verimli bir DC için Tam Dalga Doğrultucuları kullanırız.

Tam dalga doğrultucu, giriş Alternatif Akımının (AC) her iki yarım döngüsünü kullanan ve bunları Doğru Akıma (DC) dönüştüren bir doğrultucu devresidir.



Bir sinüs dalgasının her iki yarım döngüsünü düzeltmek için köprü doÄŸrultucu, bir "köprü" konfigürasyonunda birbirine baÄŸlanmış dört diyot kullanır. 

Aşağıdaki resim bir köprü doğrultucu devresini göstermektedir.




Tam Dalga Doğrultucu Devresinin Çalışma Mantığı

Bu doğrultucu devresinin çalışma mantığını kolayca anlamak için negatif ve pozitif yarım döngüleri incelememiz gerekir.

Pozitif yarı döngü sırasında D1 ve D2 diyotları iletime geçer, D3 ve D4 kesimde olur. Bu yük boyunca yük pozitif bir yük voltajı üretir.







Sonraki yarım döngü sırasında, kaynak voltaj polaritesi tersine döner. Yani devreye negatif yarı döngü uygulandığı zaman D3 ve D4 diyotları iletime geçer, D1 ve D2 diyotları kesimde olur. Bu aynı zamanda daha önce olduÄŸu gibi yük direnci boyunca pozitif bir voltaj üretir.  






  GiriÅŸin polaritesinden bağımsız olarak, yük voltajının aynı polariteye sahip olduÄŸunu ve yük akımının aynı yönde olduÄŸunu unutmayın.





Bu şekilde devre, AC giriş voltajını atımlı DC çıkış voltajına dönüştürür.





Kapasitör Filtreli Tam Dalga Doğrultucu

Tam dalga doÄŸrultucu çıkışında elde ettiÄŸimiz DC, titreÅŸimli DC'dir. Bu DC sabit deÄŸildir ve zamanla deÄŸiÅŸir. Bu titreÅŸimli DC elektronik cihazlara zarar verebilir. Bu nedenle filtreler kullanılarak sabit DC elde edilmeye çalışılır. Filtre, dirençler, kapasitörler ve indüktörler gibi bileÅŸenlerle oluÅŸturulabilir. AÅŸağıda bir kondansatör filtresi kullanan yarım dalga doÄŸrultucu devre ÅŸeması vardır.




 Burada yükün karşısına bir kapasitör yerleÅŸtiriyoruz. Kapasitif filtre devresinin çalışması, dalgalanmaları kısaltmak ve DC bileÅŸenini bloke etmek, böylece baÅŸka bir yoldan akması ve bu da yükün içinden geçmesidir. Yarım dalga sırasında, D1 ve D2 diyotları hareket eder. Kondansatörü anında giriÅŸ voltajının maksimum deÄŸerine ÅŸarj eder. DoÄŸrultulmuÅŸ titreÅŸimli voltaj, kondansatör voltajından daha az ve azalmaya baÅŸladığında, kondansatör deÅŸarj olmaya baÅŸlar ve yüke akım saÄŸlar. Bu deÅŸarj, kapasitörün ÅŸarj edilmesine kıyasla daha yavaÅŸtır ve tamamen deÅŸarj için yeterli zaman almaz ve ÅŸarj, düzeltilmiÅŸ voltaj dalga biçiminin bir sonraki darbesinde yeniden baÅŸlar. Yani mevcut yükün yaklaşık yarısı kondansatörde deÅŸarj olur. Negatif döngü sırasında, D3 ve D4 diyotları iletken olmaya baÅŸlar ve yukarıdaki iÅŸlem tekrar gerçekleÅŸir. Bu, akımın yük boyunca aynı yönde akmaya devam etmesine neden olur.


Düzeltici kapasitör, redresörün tam dalgalı dalgalı çıkışını daha düzgün bir DC çıkış voltajına dönüştürür.


Köprü Doğrultucu Dalgalanma Gerilimi



Tam dalgalı bir köprü doğrultucunun temel avantajları, belirli bir yük için daha küçük bir AC dalgalanma değerine ve eşdeğer bir yarım dalga doğrultucudan daha küçük bir rezervuar veya yumuşatma kapasitesine sahip olmasıdır. Bu nedenle, dalgalı voltajın temel frekansı AC besleme frekansının (100 Hz) iki katıdır, burada yarım dalga doğrultucu için tam olarak besleme frekansına (50 Hz) eşittir.

Diyotlar tarafından DC besleme voltajının üstüne bindirilen dalgalanma voltajı miktarı, köprü doğrultucusunun çıkış terminallerine çok daha gelişmiş bir π filtresi (pi filtresi) eklenerek neredeyse ortadan kaldırılabilir. Bu tür alçak geçiren filtre, genellikle aynı değere sahip iki yumuşatma kapasitöründen ve alternatif dalgalanma bileşenine yüksek empedanslı bir yol sağlamak için bunlar boyunca bir boğulma veya endüktans içerir.


Tam Dalga Sinyalinin DC DeÄŸeri

Bir köprü doğrultucu bir tam dalga çıkışı ürettiğinden, ortalama DC değerini hesaplama formülü, tam dalga doğrultucu için verilen formülle aynıdır:





Bu denklem bize tam dalga sinyalinin DC değerinin tepe değerin yaklaşık yüzde 63,6'sı olduğunu söyler. Örneğin, tam dalga sinyalinin tepe voltajı 10V ise, dc voltajı 6,36V olacaktır.

Çıkış Frekansı

Tam dalgalı doğrultucu, her negatif yarım çevrimi tersine çevirerek pozitif yarım döngü sayısını ikiye katlar. Bu nedenle, tam dalga çıkışı, girişin iki katı döngüye sahiptir. Bu nedenle, tam dalga sinyalinin frekansı giriş frekansının iki katıdır.


DoÄŸrultucu VerimliliÄŸi

Doğrultucu verimliliği, çıkış DC gücü ile giriş AC gücü arasındaki orandır. Tam dalga doğrultucunun verimliliği %81.2 'dir.

Form Faktörü

Form faktörü, RMS değeri ile ortalama değer arasındaki orandır.



Tam dalga doğrultucu için F.F = 1.11 'dir.

Tam Dalga Doğrultucuların Avantajları

  • Yüksek redresör verimliliÄŸi
  • Düşük güç kaybı
  • Düşük dalgalanmalar

Tam Dalga Doğrultucuların Dezavantajları

Köprü doğrultucunun tek dezavantajı, çıkış voltajının giriş voltajından iki diyot düşüşü (1.4V) daha az olmasıdır.


Proteus

Tam dalga doğrultucu devresinin proteus görüntüsü:





Devrenin osiloskop görüntüsü:







Proteus dosyası:



Bu link üzerinden devrenin proteus dosyasına ulaşabilirsiniz.







Kaynakça:

https://www.electrical4u.com/full-wave-rectifiers/

https://electronicscoach.com/full-wave-rectifier.html

https://www.physics-and-radio-electronics.com/electronic-devices-and-circuits/rectifier/fullwaverectifier.html

http://visionics.a.se/Full%20Wave%20Rectifier1.aspx

https://www.elprocus.com/full-wave-rectifier-circuit-working-theory/

https://www.electronics-tutorials.ws/diode/diode_6.html

https://www.circuitstoday.com/full-wave-bridge-rectifier


 Endüstri mühendisliÄŸi, geçmiÅŸ yıllarda ki adı ile “Sanayi Mühendisi” veya “Sistem Mühendisi”. Sanayi devriminin sonucu olarak dünya devletleri artık çok daha karmaşık ve güçlü bir yapı elde ettiler. Buharın gücünü kullanmayı öğrenen insanoÄŸlu kendi kapasitelerinin kati olarak yetmeyeceÄŸi iÅŸleri suyun muazzam potansiyeli ile yapmaya baÅŸladı ve üstel bir eÄŸri biçiminde ilerleyen bilimin ve teknolojinin geliÅŸimi daha da hızlandı.

     KeÅŸfettiÄŸi güç ile ilerlemesine hız katan insanoÄŸlu beraberinde kaos ve düzensizlik ile karşılaÅŸtı. Sanayi ve ekonomi birbirlerine baÄŸlı hale geldiler. OluÅŸan sistemi doÄŸru kullanan ülkeler çok ilerledi ama bunu saÄŸlayan makinelere verilen deÄŸer işçi kesimine verilmedi. İş eÄŸitimi, iÅŸin analizi, planlanması, iÅŸ bölümü oluÅŸturma, standardizasyon, seri üretimin sürekliliÄŸi ve verimliliÄŸi gibi hem iÅŸin hem de işçinin düşünüldüğü ve birbirilerine zarar vermeden uyum içinde çalışan sistemler kurulmaya baÅŸlandı.  2. Dünya savaşında temelleri iyiden iyiye oturan Endüstri MühendisliÄŸi tüm uygulamalı bilimler gibi ihtiyaçtan doÄŸdu.

     Sistem kuran, kurulan sistemin en yüksek verimlilik ile iÅŸlemesini saÄŸlayan, aldığı yetkinlikler ile ergonomik, psikolojik ve sosyolojik düzenin ince ayrıntılarını gözlemleyebilen ve denetleyebilen. Üretim, Yönetim, Finans, Pazarlama disiplinlerine hakim. Yönetim fonksiyonunun “Planlama, Örgütleme, Denetleme, Kadrolama, Yürütme” kavramlarını en iyi biçimde uygulayabilecek beceriye sahip ve en önemlisi tüm bunları “Matematiksel/Sayısal Yöntemler” kullanarak yapan disiplinler arası bir Mühendislik dalıdır Endüstri MühendisliÄŸi.


Endüstri Mühendisleri için aşkta bile verimlilik arıyor diyorlar. Aşkı maksimize edip, hüznü minimize ediyoruz:)

— Endüstri Mühendisi (@Endustri_M)



Kimler Tercih Etmeli ?

     Gözlem yapmak ve yaratıcı olmak esastır bunun yanında kesinlikle Matematikle içli dışlı olmayı seven, görülmeyeni görebilen yani farklı bakış açılarından bakarak oluÅŸabilecek her türlü durumu analiz edebilecek ve bunu yaparken gerekli olacak olan “iletiÅŸim becerileri” yüksek, analitik düşünebilen. GeçmiÅŸi anlayacak, bugünü yönetecek ve geleceÄŸi planlayabilecek yani öncülük edebilecek kiÅŸiler bu bölümü rahatlıkla düşünebilirler.



Ne iş Yaparız ?

    Disiplinler arası bir uygulamalı bilim dalı olduÄŸu için ve kazandığı donanımlar sayesinde aklınıza gelebilecek pek çok sektörde/alanda endüstri mühendisine rastlayabilirsiniz. Günümüz iÅŸ hayatında stokastik süreçlerin yönetimi ve denetimi büyüyen/geliÅŸen teknoloji ve iÅŸ gücü ile daha karmaşık hale gelmiÅŸtir. Bankacılık, saÄŸlık, ağır sanayi, yazılım/programlama, tekstil, gıda, tarım, enerji ve en önemlileri “Seri üretim” ve “Hizmet” bulunan sektörlerde Planlama, çizelgeleme, kalite kontrol, insan kaynakları, finans, lojistik, eÄŸitim, depo yönetimi gibi alanlarda faaliyet gösteririz.




Hangi Dersler Verilir ?

     Okuldan okula deÄŸiÅŸmekle birlikte içerik olarak ve kazanım olarak ülkemiz de çok büyük farklılıklar yoktur. 3. Ve 4. Sınıfta seçilebilecek dersler ile, ilgilenmek istediÄŸimiz alana daha fazla yoÄŸunlaşırız.

Temel bölüm dersleri:

  • Lineer Cebir ve Yüksek Matematik

  • Maliyet Muhasebesi

  • Olasılık

  • İstatistik

  • İş Etüdü

  • Elektrik ve Elektronik GiriÅŸ

  • Nümerik Analiz

  • Sistem Analizi ve Modelleme

  • Yöneylem AraÅŸtırması-I

  • Yöneylem AraÅŸtırması-II

  • Üretim Planlama ve Kontrol-I

  • Üretim Planlama ve Kontrol-II

  • Yönetim Bilgi Sistemleri

  • Benzetim

  • Malzeme

  • Kalite Kontrol

  • İmal Usulleri

  • Tesis Planlama

  • Üretim Sistemleri

  • Mühendislik Ekonomisi

  • Ekonomi

Bunların yanında verilen seçmeli dersler okuldan okula küçük farklılıklar gösterebilir:

  • İletiÅŸim
  • İnsan Kaynakları Yönetimi
  • Dağıtım ve Pazarlama
  • Proje Yönetimi
  • İşletme Yönetimi
  • Veri Yapıları
  • Programlama Dilleri
  • İstatistiksel Veri Analizi
  • Yapılabilirlik Analizi
  • Geri Dönüşüm Yönetimi
  • Benzetim Dilleri
  • Performans Yönetimi
  • Karar Destek Sistemleri
  • Yapay Zeka ve Uzman Sistemler
  • Çizelgeleme
  • Üretim-Dağıtım Sistemleri Planlaması
  • Bakım Planlaması
  • Stok Yönetimi
  • Deney Tasarımı
  • İstatistiksel Proses Kontrol
  • Kalite Güvence Sistemleri
  • İş ve Ücret Sistemleri
  • Oyun Teorisi
  • Esnek İmalat Sistemleri
  • Enerji Sistemleri Planlaması
  • Bilgisayar Destekli Üretim
  • Bulanık Küme Teorisi
  • Hizmet Sistemleri
  • Tahmin Metodları
  • Sistem GüvenilirliÄŸi
  • Karar Analizi
  • Stokastik Süreçlerin Uygulamaları
  • Tedarik Zinciri Yönetimi
Benzer pek çok ders ve içerik bu bölümü tercih ettiğiniz zaman karşınıza çıkacaktır.

Bölüm ne gibi zorluklar içeriyor ?

     Her iÅŸte olduÄŸu gibi bu alan da kendi içerisinde zorluklara sahip. En baÅŸta matematik sevmiyorsanız bırakın Endüstri MühendisliÄŸini diÄŸer disiplinler de size uygun olmayacaktır. Neredeyse her bölümden dersler alarak kimin ne yaptığı hakkında genel bilgimiz bulunur lakin diÄŸer bölümlerdeki gibi tek bir teknik alanda uzmanlaÅŸmamız mühendislik dalları arasında en komplike olanıdır. Çünkü iÅŸletmelerde teknik hesaplamaların yanında bizi en çok uÄŸraÅŸtıran “İnsan” faktörü olmaktadır. DiÄŸer bir zorluk az önce bahsettiÄŸim gibi tüm disiplinlerden bilgi toplamak farklı bir zorluk olarak karşımıza çıkacaktır.

İş ve Staj İmkanları nasıl ?

     GeliÅŸen günümüz teknolojisi ile iÅŸletmeler artık Endüstri Mühendisi bulundurmayı bir zorunluluk olarak görmektedir. Kendi hedeflediÄŸiniz alanda aklınıza gelebilecek tüm sektörler de iÅŸ imkanı en geniÅŸ bölümlerden birisidir. Staj olanakları ise yine hedefiniz olan alan ve bu alanda faaliyet gösteren bir iÅŸletme olacaktır lakin iÅŸletmeler genel baza bakıldığında derslerinde baÅŸarılı olarak not ortalaması yüksek adaylara öncelik vermektedir.

Endüstri Mühendisliğinin Geleceği

     Yapılan araÅŸtırmalar ve toplanan veriler ışığında gelecekte en çok aranan özellikler listesine bakıldığında ve kas gücünün yerini yavaÅŸ yavaÅŸ robotik üretime bırakması ile bazı iÅŸ kolları tehlikeye girmeye baÅŸladı. Bölümde alacağımız yetkinlikler sayesinde, yapılan ve yayınlanan araÅŸtırmaları incelediÄŸimizde bu bölümün gelecekte daha fazla deÄŸerlendiÄŸi görülmektedir.