Arama butonu
Bu konudaki kullanıcılar: 1 misafir
22
Cevap
2253
Tıklama
0
Öne Çıkarma
Cevap: Yazılıma Nereden Başlanır? (2. sayfa)
T
6 yıl
Yarbay

quote:

Orijinalden alıntı: Oğuzhaan

Hocam mesela biz geçen dönem concepts of programming languages dersinde scheme, ml, haskell vs öğrendik de piyasada nerde kullanılacak mesela, insanın aklında kalması çok zor spesifik olarak üzerinde çalışacaksın ki akılda kalsın. Ben şimdiden unuttum ha bakar hatırlarız o ayrı.
Concepts of programming languages dersinde Scheme öğrendik fakat unuttum, bakarsam hatırlarım dedin ya, şu soruyu Scheme ile çözebilir misin:

Soru:

(2020 3400 5500) gibi liste halinde maaşlar verilecek ve (1.25 1.1 1.0) gibi her bir maaş için artış oranları yine liste olarak verilecek ve istege bağlı bir para birimi verilecek örneğin "TL", "Lira" gibi girilecek. yeni maaşları hesaplayıp eski maaşla şu formatta listeleyecek bir fonksiyon yazınız:

Maaş:2020, Yeni: 2525.00TL
Maaş:3400, Yeni: 3740.00TL
Maaş:5500, Yeni: 5500.00TL


Bu mesaja 2 cevap geldi.
T
6 yıl
Yarbay

@Oğuzhaan Çok zor bir soru mu sordum?




Bu mesajda bahsedilenler: @vonderplanitz @Oğuzhaan
H
6 yıl
Binbaşı

https://paste.ubuntu.com/p/PHZk3xXfQX/

dili hic bilmiyordum input almayi anlamadim 2 saatte ancak bunu yazabildim.
kor olmak icin ideal bir dil gibi geldi.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz
T
6 yıl
Yarbay

Programdaki comment ve boş satırları çeksek dahi 29 satır ayrıca hatalı ve eksiklerle dolu örneğin TL'yi hardcoded basıyor, fakat onu kullanıcıdan almalı. Kullanıcı belki u.arası para transferinde kullanılan TRY birimini kullanmak isteyecek.

Değişken ismi olarak l l1 l2 yerine list list1 list2 olmalı veya hadi li li2 li2 olsun.

len fonksiyonu külliyen yanlış. 'length' değişkeni tanımlanamaz cunku o Scheme de ön tanımlı bi fonksiyon örneğin (length '(a b c)) ; -> 3 döndürür.

len fonksiyonundaki (cdr list) '() ye eşitse değişken tanımlamak gereksiz. fonksiyonun altında (len 0 hebele) ile hebele nin uzunluğunu sıfırlamak da poor programming practice (tam türkçesi yok)

retn fonksiyonunu tanımlamak da gereksiz cunku Scheme'de o iş 'list-ref' fonksiyonuyla yapılıyor örneğin (list-ref l n) , l'deki n. indexteki elemana ulaşır (n 0 tabanlı)

printleyici fonksiyonu sonuçta list1 ve list2 deki karşılıklı degerleri çarparak basacak, bunu 'and' koşulu altında rekürsif şekilde yapmaya calışınca alttaki parantezleri son satıra alsak bile 12 satır uzunluğunda tam bir felaket. Scheme'in rekürsif özelliğini kullanmak istiyorsan programın genelinde kullanman daha iyi olur, şunun gibi:

(define (hesapla maaslar oranlar birim)
(if (null? maaslar)
'bitti
(begin
(format #t "Maaş:~a, Yeni: ~f0~a~n" (car maaslar) (round (* (* (car maaslar) 1) (car oranlar))) birim)
(hesapla (cdr maaslar) (cdr oranlar) birim))))



Bu programı (hesapla hebele hubele "TL") şeklinde çalıştırırsan çalışır. format içindeki ~f0 ifadesini sadece Cisco'nun Scheme yorumlayıcısı tanır. MIT Scheme veya başka bir yorumlayıcı kullanıyorsan onu ~a ile değiştir.

Rekürsif 6 satır süren bu programı iterasyon ile yazmak sadece 3 satır:

(define (hesapla maas artis birim)
(do ((x 0 (+ x 1))) ((equal? x (length maas)) 'ok)
(format #t "Maaş:~a Yeni:~a~a~n" (list-ref maas x) (* (list-ref maas x) (list-ref artis x)) birim)))

(hesapla '(2020 3400 5500) '(1.25 1.1 1.0) "TL") ; ->
;; Maaş:2020 Yeni:2525.0TL
;; Maaş:3400 Yeni:3740.0TL
;; Maaş:5500 Yeni:5500.0TL
;; ok


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @rekteo
H
6 yıl
Binbaşı

tesekkurler, + bile fonksiyon olunca dilde loop yok her seyi fonksiyonlarla yapmamiz gerek diye dusunmusum

isi bilince benim kod kadar kotu gozukmuyor ama uzun programlarda yine sytax yuzunden kor eder saniyorum.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz
T
6 yıl
Yarbay

+ bile fonksiyon olabiliyor cunku Scheme'de + C veya Python'daki gibi toplama operatörü olarak tanımlı değil. Kodda iterasyonu gerçekleştiren 'do' ise fonksiyon gibi görünmekle birlikte, fonksiyon değil. Scheme'de yeni syntax tanımlamayı sağlayan 'define-syntax' ile tanımlanmış bir makro :) Makro derken C'deki makrolar gibi sadece değişkenleri yerine koyan basit birşey değil, gerçekten dilin bir parçası gibi çalışan makro. do makrosu örneğin orada dilin bir parçası gibi çalışıyor.

Scheme'deki bu yapıyı bir kez öğrenince program yazmak cok kolaylaştığı gibi kısa ve öz programlar ortaya cıkıyor.




Bu mesajda bahsedilenler: @rekteo
D
3 yıl
Er

Hocam sıfırdan web tasarımına başlamak için ne öğrenmek lazım bazı kişiler direk başlangıç olarak html5 öğrenmemi söylüyorlar daha önce yazılıma dair bildiğim hiç birşey yok nasıl başlarım bir yol haritası arıyorum.



< Bu ileti Android uygulamasından atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Tuğkan-0153
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.