ileri matematik - faktoriyel,ortalama,asal sayı,matris (vb)

Programlama ve Script dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 46474
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek
Teşekkür etti: 4602 kez
Teşekkür edildi: 3916 kez

ileri matematik - faktoriyel,ortalama,asal sayı,matris (vb)

Mesaj gönderen velociraptor »

Bu bölümde genellikle okullarda sorulan bazı matematiksel algoritmaları bulabilirsiniz.


1. Faktoriyel Hesabı :
Tüm bilgisayar hocalarının kesinlikle sorduğu sorulardan biridir. Girilen bir sayının faktoriyelini veren program.

sayi = InputBox ("Faktöriyeli Alınacak Sayıyı Girin")
sonuc = 1

FOR i = sayi TO 1 STEP -1
sonuc = sonuc * i
NEXT

Msgbox sayi & "! = " & sonuc

2. Ortalama Hesabı :
Girilen 100 adet sayının ortalamasını hesaplayan program.

' Bilgiler sırayla alınırken...
toplam = 0
FOR i = 1 TO 100
sayi = InputBox (i & ". Sayiyi Girin")
toplam = toplam + sayi
NEXT
Msgbox "100 adet sayinin ortalamasi = " & ROUND(toplam / 100 , 1)

ikinci yol :

' Bilgiler bir A(100) dizisinden okunuyorsa...
toplam = 0
FOR i = 1 TO 100
toplam = toplam + A(i)
NEXT
Msgbox "100 adet sayinin ortalamasi = " & ROUND(toplam / 100 , 1)

3. Asal Sayı Programı :
A ve B sayıları arasında kalan asal sayıları bulan program.

FOR i = 2 TO ustsayi
asal = 1
FOR j = 2 TO ustsayi - 1
IF i <> j AND (Fix(i / j) * j = i) THEN
' sayı asal değildir. asal değişkeni 0 yapılır.
asal = 0
END IF
NEXT
IF i >= altsayi AND asal = 1 THEN PRINT i
NEXT

4. Matris Toplama Programı :
Bir A(i,j) matrisi ile bir B(i,j) matrisini toplayıp C(i,j) matrisini elde eden program.

' A( i , j ) ve B( i , j ) matrisleri önceden okunmuş olsun.
FOR x = 1 TO i
FOR y = 1 TO j
C ( x , y ) = A ( x , y ) + B ( x , y )
NEXT
NEXT

5. Matris Çarpım Programı :
Bir A(i,j) matrisi ile bir B(j,k) matrisini çarpıp C(i,k) matrisini elde eden program.

' A(i,j) ve B(j,k) matrisleri önceden okunmuş ve C(i,k) önceden oluşturulmuş olsun.
For X = 1 To i
For Y = 1 To j
toplam = 0
For Z = 1 To k
toplam = toplam + ( A ( X , Z ) * B ( Z , Y ) )
Next Z
C( X , Y ) = toplam
Next Y
Next X

6. Matrisin Transpozesi :
Bir A(6,4) matrisinin transpozesini alan program.

Dim A (4,6) As Integer
Dim B (6,4) As Integer

' A( 4 , 6 ) değerleri önceden girilmiş olsun.
For i = 1 To 4
For j = 1 To 6
B ( j , i ) = A ( i , j )
Next
Next

kaynak:gokhanca.com
Kullanıcı avatarı
Mendenn
Gigabyte2
Gigabyte2
Mesajlar: 2353
Kayıt: 19 Haz 2006, 18:01
cinsiyet: Erkek

Re: ileri matematik - faktoriyel,ortalama,asal sayı,matris (vb)

Mesaj gönderen Mendenn »

üversitede iken bizde Qbasic ile program yazıyorduk. Şu Dim Komutu kullanıyordum. Ama çoğu zaman ezbere yapıyordum. Bir türlü ne işe yaradığı tam kavrayamadım. hocamızda anlamımıştı. oda ezbere yapıyordu hahaha
Dim Komutu ne işe yarar basit bir dil ile anlatacak olan var mı?
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 46474
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek
Teşekkür etti: 4602 kez
Teşekkür edildi: 3916 kez

Re: ileri matematik - faktoriyel,ortalama,asal sayı,matris (vb)

Mesaj gönderen velociraptor »

Aramizda Programci oldugunu sanmama , olsa ilk benim isime yarardi
Kullanıcı avatarı
Mendenn
Gigabyte2
Gigabyte2
Mesajlar: 2353
Kayıt: 19 Haz 2006, 18:01
cinsiyet: Erkek

Re: ileri matematik - faktoriyel,ortalama,asal sayı,matris (vb)

Mesaj gönderen Mendenn »

Fizik dersi ile ilgili bir çalışmam da Dim kullandığım yer... aradan uzun zaman geçti galiba sönünlü bir hareketi gösteriyor.
V: hız
X: alınan yok
A:ivme
W0: sabit
DT ve DT2 belirli süreler arasındaki zaman farkı (Delta)

Kod: Tümünü seç

CLS

SCREEN 8
DIM X(21), V(21), A(21), X0(21), VO(21), A0(21)
INPUT " SD: "; SD
INPUT "KIP: "; KIP
T = 0: N = SD + 1
FOR I = 1 TO N
V(I) = 0: X(I) = .5 * SIN(KIP * 22 / 7 * I / N)
NEXT I
X(0) = 0: X(N) = 0: W0 = 2: DT = .01: DT2 = .5 * T

FOR J = 1 TO 12000
FOR I = 1 TO N - 1
A(I) = W0 * (X(I + 1) - X(I - 1)) - W0 * (X(I) - X(I - 1))
VO(I) = V(I) + A(I) * DT2
X0(I) = X(I) + V(I) * DT2
A0(I) = W0 * (X0(I + 1) - X0(I)) - W0 * (X0(I) - X0(I - 1))
V(I) = V(I) + A0(I) * DT
X(I) = X(I) + VO(I) * DT

NEXT I
FOR I = 1 TO N - 1
PSET (20 + 5 * T, I * 20 - 10 * X(I)), I
NEXT I
T = T + DT
NEXT J
END
Kullanıcı avatarı
yasarcik
Byte3
Byte3
Mesajlar: 106
Kayıt: 28 Haz 2006, 19:11

Re: ileri matematik - faktoriyel,ortalama,asal sayı,matris (vb)

Mesaj gönderen yasarcik »

Dim, xBasic dillerinde değişken tanımı için kullanılır.
QBasic, Gwbasic,Turbo Basic veya Visual Basic'de 'de değişken tanımı yapılması gerekmese de örneğin Visual Basic'de

Dim x as String (x alfabetik-numerik bir değer alabilir.)
Dim y as Integer (y sayısal bir değer alabilir, Max 32767 olabilir)
Dim z as Double (z sayısal bir değer alabilir. max sınırı yok sayabilirsiniz)

gibi tanımlamalar yapılabilir.

Dim komutu ile yukarıdaki örneklerinde array (dizin tanımı) için kullanılmış

Dim x(21) komutu ile x değişkeninin 21 farklı değer alabileceği gösterilmiş örn.
x(1)=56
x(2)=25
x(3)=100 gibi

Programınızda benzer nitelikte ve çok sayıda değişken kullanmanız gerektiğinde işe yarar. Sayı sıralama, mod, varyans, medyan faktöryel vs bulma gibi istatistiksel hesaplarda elzemdir. Varyans hesabı için elinizde 50 adet sayı varsa, 50 ayrı değişken tanımlamak yerine dim x(50) yazmanız yeterlidir. 50 ayrı sayıyı da x değişkenine atayabilirsiniz.

dim x(50)

for i=1 to 50
x(i)=inputbox("Sayı giriniz")
next

bu aşamadan sonra 50 adet sayı diziye alınmış olur. Artık üzerinde istediğiniz işlemi yapabilirsiniz.

Matris gibi iki boyutlu dizilerde ise iki boyutlu tanımlama yapılabilir

dim z(4,5)

bu işlem 4 x 5 ebatlarında z isimli bir dizi tanımlar

for i=1 to 4
for j=1 to 5
z(i,j)=inputbox("Sayı giriniz")
next j
next i

komutları ile matrise girişi sağlanır
inputbox satırını; z(i,j)=inputbox(i & "-" & j & " Sayısını giriniz") şeklinde yazarsanız ekrana 1-1 sayısını giriniz veya 3-4 sayısını giriniz şeklinde görüntülenir ki matrisin hangi elemanını girdiğinizi daha rahat görebilirsiniz.

Kısaca Dim özellikle sayı dizilerinin işlenmesi için kullanılır. Bir de pek bilinmeyen ve kullanılmayan dizi-matris şekli vardır ki bu da 3 boyutlu matristir.

dim x(6,4,5) şekilinde tanımlanır. Burada anlayabileceğiniz gibi 6 birim satır, 4birim sütun ve 5 birim derinliği olan bir matris tanıtırsınız. Alabileceği azami değer sayısı ise 6*4*5=120'dir.

3 boyutlu bu matrisin veri girişi aşağıdaki gibi sağlanır.

for i=1 to 6
for j=1 to 4
for k=1 to 5
x(i,j,k) = inputbox("Sayı giriniz")
next k
next j
next i

Excel VB Script ve Visual Basic dilinde Dim ile yapılan tanımlamaların tümünde kullanılacak değerin niteliği ayrıca isteğe bağlı olarak belirlenebilir.

Dim x(10) as String tanımlaması yapılırsa yalnızca alfa-nümeric veriler girilebilir.

Dim z(20) as Integer tanımlamasında 32767 sayısından büyük sayı yazamazsınız

Dim a(59) as Double tanımlamasında 300 basamaklı sayıya kadar kullanabilirsiniz.

Herhangi bir ayrıntılı tanımlama yapmadan
Dim k(19) şeklinde bırakılırsa girilen her türlü veriyi kabul edecektir.

Aramızda programcı var ama artık ofiste Excel Makrolarından başka program yazmıyor. Bazen de eşe dosta VB ile basit veri tabanı programları yazıyor. :oops:
Kullanıcı avatarı
Mendenn
Gigabyte2
Gigabyte2
Mesajlar: 2353
Kayıt: 19 Haz 2006, 18:01
cinsiyet: Erkek

Re: ileri matematik - faktoriyel,ortalama,asal sayı,matris (vb)

Mesaj gönderen Mendenn »

nette arayıpta bulduğum bilgiler bu kadar açıklayıcı değildi. Sağol. Karanlıkta nokta kalmadı.
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 46474
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek
Teşekkür etti: 4602 kez
Teşekkür edildi: 3916 kez

Re: ileri matematik - faktoriyel,ortalama,asal sayı,matris (vb)

Mesaj gönderen velociraptor »

yasarcik yazdı:Aramızda programcı var ama artık ofiste Excel Makrolarından başka program yazmıyor. Bazen de eşe dosta VB ile basit veri tabanı programları yazıyor. :oops:
Onlari bende yapabiliyorum , bana Coder lazim :)
loveme
Terabyte1
Terabyte1
Mesajlar: 3527
Kayıt: 10 Tem 2007, 11:47
cinsiyet: Erkek
Teşekkür edildi: 18 kez
İletişim:

Re: ileri matematik - faktoriyel,ortalama,asal sayı,matris (vb)

Mesaj gönderen loveme »

Algoritma çok gerekli oluyor.Programcılıkta en sıkıcı ve uğraştırıcı o oluyor.Komutları öğrendiğim halde bunun mantığını halen kavramadım.Ancak exel de bazı işlemler yapabiliyorum.
teşekkürler
Cevapla