not defteri ide olmadığı derleme mekanizması olmadığı için normalde yapamazsın ancak neticede bütün programlar kodla yazıldığı için ilgili kodları yazarak yaparsın bu ne olur en basitinden vbscript olabilir sonuçta vbs. dosyasını wscript çalıştıracağından hesaplama yapılabilir veya hta dosyası oluşturularak ie temelli gui program yapılabilir ama düz not defterini kullanarak program yapmak hamallıktan başka bişey değil öncelikle standart sapma nasıl hesaplanır onu incelemek lazım peşine hangi dille yazılacaksa kodlaması yapılır |
Hocam şöyle anlatayım kodlamaya yeni başladık okulda ve hocamız ilk not defterinden çalışacağız dedi.Programlama hakkında fazla bilgim yok dediğim gibi.Ve bize böyle bir ödev verdi.Bende elimdeki bu kodlarla yapmaya çalışıyorum.İnternette örnekleri inceledim orada return,double,int gibi komutlar kullanıyor ama ben bunların hiçbirini bilmiyorum.Edindiğim başlangıç bilgileriyle yapmam lazım. |
Bu arada not defterinden yazdığım kodun tarayıcıda direk çalışmasına gerek yok arkadaşlar algoritmasını oluştursamda yeterli. |
yalnız her dilin kodlaması bazı kısımlar hariç farklıdır hangi dilde olacak orası önemli |
<script> var say1,say2,say3,ort,std,varyans; say1=Number(prompt("1.sayıyı giriniz")) say2=Number(prompt("2.sayıyı giriniz")) say3=Number(prompt("3.sayıyı giriniz")) ort=(say1+say2+say3)/3; varyans=(Math.pow((say1-ort),2)+Math.pow((say2-ort),2)+Math.pow((say3-ort),2))/2 std=Math.sqrt(varyans) document.write("standart sapma =",std) </script> Bu şekilde yaptım arkadaşlar ve çalışıyor lazım olan kullansın. |
... |
varyans=TOPLAM(x-mu)^2/(n-1) =TOPLAM(x^2-2*x*mu+mu^2)/(n-1) =[TOPLAM(x^2)-TOPLAM(2*mu*x)+TOPLAM(mu^2)]/(n-1) =[TOPLAM(x^2)-2*mu*TOPLAM(x)+n*mu^2]/(n-1) =[TOPALM(x^2)-2*mu*n*mu+n*mu^2]/(n-1) =[TOPLAM(x^2)-2*n*mu^2+n*mu^2]/(n-1) =[TOPLAM(x^2)-n*mu^2]/(n-1) =[TOPLAM(x^2]-n*(TOPLAM(x))^2/n^2)]/(n-1) =[TOPLAM(x^2)-(TOPLAM(x))^2/n]/(n-1) =(t2-t1^2/n)/(n-1) ->kodlamadaki eşitlik.... Kolay gelsin... |
Hocam bu soruyu 1'den N'ye kadar olan çift sayıların standart sapmasını hesaplayınız şeklinde değiştirsek nasıl yapıcaktık? |
İki şekilde yapabilirsin: 1. Yol: Döngü sayacının, herhangi bir adımda aldığı değerin çift olup olmadığını IF...THEN yapısı ile sorgulayarak, sadece çift sayı olma şartını sağlayanları hesaba katarak, 2. Yol: Döngü sayacını 2'den başlatıp, sayaç adımını 2'şer 2'şer almasını ve böylece IF...THEN kullanımdan feragat ederek. --- 1. Yolu seçersen, bahsi geçen toplama işlemlerini, IF...THEN yapısı içinde gerçekleştirmelisin. İPUCU: i=1,2,...,N -> Eğer tam sayı(i/2)*2=i ise i tam sayıdır. Değil ise tek sayıdır. Bazı programlama dillerinde tam bölme işlemi yapan operatörler mevcut (ör: VB). Bunun dışında Mod alma işlemi ile de i'nin tam sayı olup olmadığını bulabilirsin (nasıl bulacağını sana bırakıyorum, birden fazla çözümün tamamını söylemem senin faydana olmaz). Ama yine de yardımcı olabilmesi için kodlamak yerine algoritmasını aşağıda yazıyorum. Sen algoritmadan çıkartırsın gerisini -Döngü yapısı IF...GOTO'ya göredir, kolaylıkla FOR...NEXT'e çevirebilirsin: 1. Başla 2. n'i gir 3. i=1, t1=0, t2=0 4. Eğer i tam sayı ise t1=t1+i t2=t2+i^2 5. i=i+1 6. Eğer i<=n ise 4'e git 7. ort=t1/n 8. std=karekök((t2-t1^2/n)/(n-1)) 9. Yaz ort, std 10. Bitir. |
Sizin yazdığınız kodda yanlışlık yok mu?Mesela n'i 10 girdik.Ama çift sayılarınkini buldurmak istediğimizden for döngsünde yaparak 2,4,6,8,10 için standart sapma hesaplayacağız.Bu 5 sayısına karşılık gelir.Ama siz t1/n yaptırdığınızda t1/10 yaptırmış olmuyor musunuz?Bunu 5 e nasıl böldürebiliriz? |
Yanlışlık yok, eksik var. Pardon onu unutmuşum, güzel takip etmişsiniz. 3. Adıma, mesela n1 değişkeni tanımlayalım ve 0'den başlatalım. 4. Adım da ise, toplama işlemlerinden sonra, koşulu sağlayan kaçıncı sayı olduğunu belirlemek için n1=n1+1 ekleyelim. 7. ve 8. Adımlarda n'ler n1 ile değiştirelim. |
<script> var i,N,ort,std,varyans,t1,t2,n1; N=Number(prompt("Bir Sayı Giriniz")); i=1; t1=0; t2=0; n1=0; for(i=1;i<=N;i++) if(i%2==0); t1=t1+i t2=t2+i^2 n1=n1+1 ort=t1/n1 varyans=Math.pow((t2-ort),2))/(n1-1) std=Math.sqrt(varyans) document.write("standart sapma=",std) </script> Şöyle oluşturdum hocam kodlarla ama not defterinde .htm uzantılı farklı kaydedip tarayıcıda denemeye çalıştığımda çalışmıyor.Acaba noktalama işaretimi yapıyorum dediğim gibi yeni başladığım için çok hakim değilim kontrol edebilir misiniz?-- |
1. t1, t2 ve n1 ile ilgili toplama işlemleri if bloğunun içinde olmalıdır. Çünkü eğer i tam sayı ise t1'i, t2'yi ve n1'i hesaplayacaksın. 2. if bloğu ise for döngüsünün içinde olmalıdır. Çünkü 1'den N'e kadar tüm sayılar için if bloğunu çalıştıracaksın. Bu bilgiler ışığında, anladığım kadarıyla javascript kodlamaya çalışıyorsun (öncelikle html sayfasına scriptlerin nasıl eklendiğine bakmalısın-script tag'ının ekleri var), bu dilde if ve for bloklarının nasıl yazılması gerektiğine bir göz atmanı öneririm. İpucu da vereyim. Bu iki kontrol bloklarında if... {...}, for...{...} şeklinde kodlama yapman lazım. Yani if koşuluna bağlı birden fazla komut varsa, if...{komutlar} şeklinde olmalı, for için de benzer şekilde kodlama yapılır. Hatalı yazdığın aşağıdaki kodla karşılaştır. Ama benim cevabımla yetinme olur mu?
Bu arada, metin dosyasının içeriği şu şekilde olmalı diye biliyorum:
|
@ lterlemez Sağolasın hocam hallettim.Not defterinde html,head,body kullanmasanda sadece script kullanıp .htm uzantılı kaydedince çalışıyor kodlar.Varyans alırken yanlışlık yapmışım.Sen düzeltmişsin teşekkürler. |
@lterlemez Varyans hesaplamada hata var şimdi farkettim.Ama orayı tanımlatamıyorum. Standart sapma hesaplama aşağıdaki adımları takip edilerek yapılır. 1. ADIM) Verilerin aritmetik ortalaması bulunur. 2. ADIM) Her bir veri ile aritmetik ortalama arasındaki farkın kareleri toplanır. 3. ADIM) Bulunan toplam veri sayısının bir eksiğine bölünerek karekökü alınır. 2 ile 4ün standart sapması mesela. Ort=3 Varyans=((2-3)^2+(4-3)^2)/(2-1)=2 Standart Sapma=Sqrt(2) Ama varyans kodları böyle çalışmıyor bunu nasıl tanımlatırız? |
@lterlemez new Array komutuyla boş bir dizi oluştursak sonra push komutu ile o diziye eleman eklesek.Bu eklediğimiz elemanlarda i'ler olsun.Yani 1 den 10 a kadar çift sayıların standart sapmasını istiyor diyelim.For döngüsüyle 2,4,6,8,10 diye gidiyor.Bu 2,4,6,8 i diziye eklesek.Sonra varyansı bulurken (dizi[0]-ort)^2/(n1-1)+(dizi[1]-ort)^2/(n1-1).......... şeklinde yapabilir miyiz hocam bunu?Düşündüm düşündüm bu yöntem geldi aklıma. Edit:Kodlamasını da yaptım ama başarılı sonuç elde edemedim. |
Tabi ki yapabilirsiniz. Zaten dizin değişkenin (array) amacı odur. Matematiksel modeli de öyle değil midir? Düşünsenize, 1000 tane değeriniz var ama hem ortalama hem de varyans hesaplayacaksınız. Her seferinde 1000 tane değeri girecek misiniz? Benim size verdiğim kod, (t2-t1^2/n)/(n-1) eğer x'leri bir kere girmek istiyorsanız ve dizin değişken bilmiyorsan daha uygun. Ama dizin değişkeni biliyorsanız, orijinal varyans formülünden yararlanabilirsin, ayrıca ortalama ve varyans hesaplamalarını bir birinden ayırabilirsiniz (yani ikisini ayrı ayrı iki döngü ile gerçekleştirebilirsiniz). |
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.