C ve C++ programlama dili ile faktöriyel hesaplama için kullanılan tekrarlamalı (iterative) ve özyinelemeli (recursive) yöntemlerle ilgili bilgiler yer alıyor.
Faktöriyel hesaplama işlemi belirli bir sayıdan 1 sayısına kadar olan sayıların çarpımıdır.
Örneğin; 5 sayısı için 5*4*3*2*1 =
C ve C++ programlama dilinde faktöriyel hesaplamak için tekrarlamalı ve özyinelemeli yöntemler kullanılır.
Tekrarlamalı yöntem veya iteratif yöntem programlama dili içerisinde yer alan döngüler kullanılarak yapılan işlemdir.
C ile;
Tekrarlamalı yöntemin while döngüsü ile yapılmış hali aşağıdaki gibidir.
Özyinelemeli yöntem veya rekürsif yöntem yazılan fonksiyonunun sürekli kendini çağırmasıdır.
C ile;
NOT: Faktöriyel hesaplama işleminde büyük sayılar işletim sistemi mimarisine göre farklı sonuçlar verebilir.
Programlama örneklerine buradan ulaşabilirsiniz
Hayırlı günler dilerim.
Benzer belgeler
PROGRAMLAMAYA GİRİŞ FONKSİYONLAR Fonksiyonlar C programlama dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya
DetaylıELN BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave
DetaylıALGORİTMA VE PROGRAMLAMA I YZM Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Giriş Fonksiyonlara Genel Bakış C ve Fonksiyonlar Fonksiyon Tanımı 8. BÖLÜM 3 Fonksiyonlar
DetaylıALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ [email protected] YZM Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Giriş Fonksiyonlara Genel Bakış C
DetaylıBölüm 2 C Programlama Dilininin Basit Yapıları İçindekiler Sabitler ve Değişkenler 13 Açıklamalar (Expresions) 14 İfadeler (Statements) ve İfade
DetaylıProgramlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon
DetaylıJAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;
DetaylıDeğişkenler C#(Sharp) Programlama Dili Program yazarken her zaman sabit verilerle çalışmayız, çoğu zaman programımızda bir verinin kullanıcının davranışına göre değişmesi gerekir. Kullanıcıdan bir metin
DetaylıC PROGRAMLAMA Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme,
DetaylıWebInstaller Ürün Grubu [X] Fusion@6 [X] Fusion@6 Standard Kategori [X] Yeni Fonksiyon Versiyon Önkoşulu @6 Uygulama webgrid.co.uk uygulamasının kurulumu Netsis\webgrid.co.uk\Kurulum dizininde bulunan webgrid.co.uk
DetaylıSelçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Final Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : Süre : 60 dak. 1. Ekranda ne görüntülenir? int i =
DetaylıDers 8: Metotlar Hazırlayan : Öğr. Grv.. Barış GÖKÇE Đletişim im : webgrid.co.ukokce webgrid.co.uk Metotlar C# içerisinde bir veya birden fazla kod bulunduran kod bloklarıdır. Bir nesnenin veya sınıfın programı
DetaylıC PROGRAMLAMA DİLİNE GİRİŞ C Dilinin Tarihçesi de Dennis Ritchie tarafından AT&T Bell Laboratuarlarında B dilinden geliştirildi. C dili konusundaki ilk kitap de Dennis Ritchie ve Brain Kernighan
DetaylıInternet Programming II Elbistan Meslek Yüksek Okulu Bahar Yarıyılı Öğr. Gör. Murat KEÇECĠOĞLU 1 PHP Program Yapısı Php çoğunlukla HTML etiketleri arasına gömülerek kullanılır. Form işlemleri
DetaylıProgramlama Dili Prensipleri Lab Notları 4 1. Karar Yapıları IF Yapıları Karar yapıları olarak C/C++ ile Java programlama dilleri birbirine yakın ifadeler içerir. Bir programın akışı yukarıdan aşağı doğru
DetaylıYrd. Doç. Dr. Caner ÖZCAN Fonksiyonu Referans ile Çağırma (Call by Reference) Bir fonksiyona gönderilen parametrenin normalde değeri değişmez. Fonksiyon içinde yapılan işlemlerin hiçbiri argüman değişkeni
DetaylıPROGRAMLAMAYA GİRİŞ DERS 2 Program editörde oluşturulur ve diske kaydedilir Tipik Bir C Programı Geliştirme Ortamının Temelleri 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute Önişlemci programı
DetaylıJAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kapsülleme (Erişim Denetleyiciler) Java da Sınıf Oluşturmak Java da Nesne Oluşturmak Java da Constructor Kavramı Java da This Kavramı Java da Constructor
DetaylıFonksiyonlar (Altprogram) C Programlama Dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya gelmesi ile oluşur.
Detaylı8. İŞARETCİLER (POINTERS) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ilişkilidir. Donanımsal açıdan adres bellekte yer gösteren
DetaylıBigisayar Programlama (GÜZ ) DERS C de Programlamaya Giriş Yrd. Doç Dr. Yakup EMÜL Cumhuriyet Üniv., Teknoloji Fakültesi Yazılım Mühendisliği Bölümü [email protected] Ofis Saatleri :
DetaylıBİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ webgrid.co.ukç.Dr. Emel ARSLAN [email protected] C DİLİNDE FONKSİYONLAR C DİLİNDE FONKSİYONLAR C programlama dili fonksiyon olarak adlandırılan alt programların
DetaylıYrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,
DetaylıDiziler (Arrays) Çok Boyutlu Diziler ÇOK BOYUTLU DİZİLER Birden fazla indis numarası ile elemanlarına ulaşılan dizilere çok boyutlu diziler denir. Bunlardan en sık kullanılanı çift boyutlu dizilerdir.
DetaylıBilgisayar Programlama Ders 5 Dr. Fatih AY Tel: 0 22 55 [email protected] webgrid.co.uk Fonksiyonlar Fonksiyonlar Büyük programlar geliştirmenin en iyi yolu, onu orijinal programdan daha kolay
DetaylıNESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem
DetaylıBTEP Ders 3 Sınıflar ve Nesneler Nesne tabanlı programlamada, programlamanın temeli sınıflardır (class). Nesnelerin yaratılmasında taslak (blueprint) görevi görür. Sınıflar; o Nesnelerin özelliklerinin
DetaylıPointer Kavramı Veri Yapıları Pointer Kavramı- Pointer Nedir? Göstericiler, işaretçiler ya da pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi tutan değişkenlerdir. Şu ana kadar
DetaylıBİLG Dr. Mustafa T. Babagil 1 Yapısal bilgi türlerinin tanımlanması. (C++ daki struct yapısı. ) Daha önce öğrenmiş olduğumuz bilgi tipleri char, int ve float v.b. değişkenler ile dizi (array)
DetaylıGiris 0 \ /\ Suhap SAHIN Onur GÖK Fonksiyon C: Ana Fonksiyon(main) main() main() C: Ana Fonksiyon(main) main() main() C: Ana Fonksiyon(main) Giris? main() Çıkıs main() C: Ana Fonksiyon(main) void main()
DetaylıWhat is a computer??? Bilgisayar Programlama MATLAB Prof. Dr. İrfan KAYMAZ What Konular is a computer??? MATLAB ortamının tanıtımı Matlab sistemi (ara yüzey tanıtımı) a) Geliştirme ortamı b) Komut penceresi
DetaylıLambda İfadeleri (Lambda Expressions) Lambda İfadeleri, değişkenlere değer atamak için kullanılan sadeleştirilmiş anonim (isimsiz) fonksiyonlardır. Bu fonksiyonlar matematikteki ve bilgisayar bilimlerindeki
DetaylıC PROGRAMLAMA DİLİ C Programlama Dilinin Temelleri C Programlama Dili'ni popüler kılan önemli nedenler aşağıda listelenmiştir: C, güçlü ve esnek bir dildir. C ile işletim sistemi veya derleyici yazabilir,
DetaylıAkış Kontrol Mekanizmaları 1 Akış Kontrol Mekanizmaları if else switch for döngüsü for döngüsünün çalışma prensibi for döngüsüyle ilgili örnekler for döngüsüyle ilgili kurallar while döngüsü while döngüsünün
DetaylıGenel Programlama II 1 Yapılar ( Structures ) Yapılar ( structures ); tam sayı, karakter vb. veri tiplerini gruplayıp, tek bir çatı altında toplar. Bu gruplandırma içinde aynı ya da farklı veri
Detaylı1 Fonksiyon : Belirli bir işi yapan programın bir isim altına tanımlanarak, o isimle çağrılarak kullanılması. Fonksiyonun faydaları : Programın modülerliğini arttırır. Aynı işi yapan program parçası tekrar
DetaylıAlgoritmalar ve Programlama Algoritma Algoritma Bir sorunu / problemi çözmek veya belirli bir amaca ulaşmak için gerekli olan sıralı mantıksal adımların tümüne algoritma denir. Algoritma bir sorunun çözümü
DetaylıALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ [email protected] YZM Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 İşaretçiler ve Diziler Fonksiyon
DetaylıBilgisayarda Programlama Temel Kavramlar KAVRAMLAR Programlama, yaşadığımız gerçek dünyadaki problemlere ilişkin çözümlerin bilgisayarın anlayabileceği bir biçime dönüştürülmesi / ifade edilmesidir. Bunu
DetaylıC PROGRAMLAMA DİLİ Fonksiyonlar (Alt programlar) Fonksiyon Kavramı Fonksiyon, belirli sayıda verileri kullanarak bunları işleyen ve bir sonuç üreten komut grubudur. Her fonksiyonun bir adı ve fonksiyona
DetaylıVERİ TABANI ve YÖNETİMİ Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü 2 BÖLÜM FONKSİYONLAR 3 Giriş Geçen haftaki derslerimizde Görünümleri (View) ve Stored Procedure (SP) leri öğrendik. Bu hafta
DetaylıC Programlama Dilinde Değişkenler Değişkenler bir programlama dilinin en önemli bileşenlerindendir. En basit bir aritmetik işlemin bile kullanıcının girdiği değerleri saklamak için çeşitlik bellek alanlarına
DetaylıPYTHON DERS-4 Bu derste eksiklerimizi gidereceğiz. Şimdiye kadar bazı komutları kullandık ancak kullandığımız bu komutların özellikleri hakkında hiçbir şey öğrenmedik. İşte bu derste biraz onlardan bahsedeceğiz.
DetaylıBİL Bilgisayar Programlama II (C/C++) Hazırlayan: webgrid.co.uk Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri Sınıf ve Fonksiyon Üyeleri
Detaylı1 Bölüm 2 - C ile Programlamaya Giriş Başlıklar Giriş Basit C Programları: Bir Metni Yazdırmak Basit C Programları: İki Tam Sayıyı Toplamak Hafıza Konuları C de Aritmetik Karar
DetaylıTemel Giriş/Çıkış Fonksiyonları Temel giriş/çıkış fonksiyonları, bütün programla dillerinde mevcuttur. Bu tür fonksiyonlar, kullanıcıya ekrana veya yazıcıya bilgi yazdırmasına, ve bilgisayara klavyeden
DetaylıLABORATUVAR ÇALIŞMASI 1 - Python a Giriş Bu Çalışmanın Amacı Bu çalışmadaki amacımız, kullandığımız sistem ve kullanım hedefimiz için en uygun olan Python sürümünü bilgisayarımıza yükleyerek bilgisayarımızı
DetaylıBölüm 9 Altprogramlar ISBN Giriş Bu bölümde, programlarda sıkça kullanılan işlemlerin bir araya gruplanması ile oluşturulan altprogramlar incelenecektir. Altprogramlar sayesinde bir programda
DetaylıC++ Dersi: Nesne Tabanlı Programlama Bölüm Bileşim, Arkadaş ve Diğer Araçlar İçerik Bileşim Arkadaş Fonksiyonlar ve Sınıflar Arkadaş Fonksiyonlar Arkadaş Sınıflar Sabit Nesneler Sabit Üye Fonksiyonlar
DetaylıMantığı :! Önemli Not : Longveri tipinin alabileceği en büyük değer olduğu için ve biz faktörial alacağımız için sayı değerine en büyük 25 yazabileceğimizi unutmayalım.
Sonuç değişkeni, 1 değerine atanır.
Sayı değişkeni girilir.
1'den girilen sayı değişkenine kadar sayılar çarpılır.
- Bizim yaptığımız algoritmada sayı değişkenini,1'e kadar kendisinden bir önceki sayıyla çarpıyoruz.
Çarpma işlemleri genellikle büyük sonuçlar çıkardığı için sayi ve sonuç değişkenlerini long veri tipinde tanımlıyoruz.
Algoritma :Hadi gelin şimdi yazdığımız bu algoritmayı 5 farklı yazılım diliile yazıp satır satır açıklayalım:
Program çalıştırılır.
Long tipinde "sayı" ve "sonuç" değişkenleri oluşturulur.
Sayı değişkeni 0'dan büyük olduğu sürece tekrarlanır :
- Sonuç değişkeni ile sayı değişkeni çarpılır ve sonuç değerine atanır.
Sonuç değeri ekrana yazdırılır.
Program bitirilir.
Herkese iyi çalismalar, ben Fatih Dag. Bu forumda yazdigim (genellikle internette örnegini bulamadigim) kodlari paylasacagim. Programlamada Türkçe kaynaklara bir katkim olsun diye böyle bir seye karar verdim.
Bu programda faktöriyeli hesaplayan bir program yazdım. Bu programı neden bu kadar uzattığıma gelirsek faktöriyeli hesaplayıp bir değişkene atayamayız, nedeni ise sudur: Bütün programlama dillerinde veri tiplerinin bir siniri vardır. C dilinde ise en büyük veriyi tutabilen veri tipi unsigned long long int ve tutabildiği maksimum değer 18,,,,,, idir.
Simdi birde ! sayisina bakalim:
! =
Evet görüldüğü üzere basamaktan oluşan sayı unsigned long long int veri tipinin bile çok üstünde bir sayı, simdi gelelim akıllardaki soruya, biz bu sayıyı nasıl depolayacağız?
Bunun için gereken çözüm dizilerde. Sayıyı diziye depolayacağız ve diziyi ekrana yazdıracağız. Gelelim işi nasıl yapacağımıza:
Aslında iş çok basit, ilkokulda öğrendiğimiz çarpma işlemini yapacağız ama kağıt üzerinde çarpıyormuş gibi, örneğin ile 5'i çarpalım:
3*5 = 15
x 3 alt kısma 5 yazılır ve elde 1 kalır. Yani 15'in 5'ini alıyoruz, 1'i kalıyor
elde var 1
5
3*4 = 12 + 1(elde var 1)
x 3 alt kisma 3 yazilir ve elde 1 kalir. 13'ün 3'ü yazilir, 1'i kalir
elde var 1
35
3*3 = 9 + 1(elde var 1)
x 3 alt kisma 0 yazilir ve elde 1 kalir. 10'un 0'i yazilir 1'i elde kalir
elde var 1
3*2 = 6 + 1(elde var 1)
x 3 alt kisma 7 yazilir ve elde bir sey kalmaz ve islem biter.
Simdi bu işlemleri programa dökecegiz, öncelikle sayiyi tutacagimiz bir diziye ihtiyacimiz var, bu diziye sayımızı atayacağız ama sayıyı ters bir şekilde atamamız gerek, yani sayılarımızı hep [5,4,3,2] şeklinde saklayacağız. Bunun nedenini daha sonra açıklayacağım:
#include <stdio.h> #include <stdlib.h> #define MAX_DIGIT int main(){ int fakt[MAX_DIGIT] = {5, 4, 3, 2}; // yukarida MAX_DIGIT'i olarak tanimladik return 0; }Şimdi işlem yaparken elde kalanları taşıyacağımız ve dizinin sonunu bilmemizi sağlayacak iki değişkene ihtiyacımız var. Birde sayaç oluşturacağız.
#include <stdio.h> #include <stdlib.h> #define MAX_DIGIT int main(){ int fakt[MAX_DIGIT] = {5, 4, 3, 2}; int basamakSayisi = 4; // Basamak sayısını tutan değişkenimiz int elde = 0; // elde int i = 0; // sayacımız return 0; }şimdi gelelim programın asıl kısmına:
#include <stdio.h> #include <stdlib.h> #define MAX_DIGIT int main(){ int fakt[MAX_DIGIT] = {5, 4, 3, 2}; int basamakSayisi = 4; // Basamak sayısını tutan değişkenimiz int elde = 0; // elde int i = 0; // sayacımız for(i=0; i<basamakSayisi; i++) { int sayi = fakt[i]*3; //3 burada çarpanımnız olur fakt[i] = (sayi+elde)%10; elde= (sayi+elde)/10; // elde var 'carry' if (i == basamakSayisi-1 && elde>0) basamakSayisi++; } return 0; }Bu kod, ile 3'ü çarpmaktadır. Çıktı olarak verir. Şimdi satır satır kodu inceleyelim:
for(i=0; i<basamakSayisi; i++)
Döngü içinde i değişkeni basamakSayisi'na varana kadar bir bir artarak gidiyor.
int sayi = fakt[i]*3;
Burada sayımızın birler basmağı ile çarpanımızı çarpıwebgrid.co.uk şu işlemi 3x5 =15
x 3
5
yapıyoruz.
fakt[i] = (sayi+elde)%10;
Burası önemli, burada sonucumuzun() birler basamağını buluyoruz. (sayi+elde)%10 işleminde sayi'yi ilk işlemde yaptığımız gibi 15 farz edelim, (15+0)%10 işleminin sonucu 5'tir yani sayımızın birler basamağıdır. bu sayıyı dizinin ilk indeksine, daha sonra ise 2. 3. ve 4. indekslerine atayacağız.
elde = (sayi+elde)/10;
Burada elde kalan sayı hesaplanıyor, yani 15'in 1'i alınıyor ve elde'ye atanıyor. birkaç örnek sayıyı kendiniz deneyerek anlattıklarımı daha iyi anlayabilirsiniz.
if(i == basamakSayisi-1 && elde>0)
basamakSayisi++;
Bu kod bloğunda sayacımız basamakSayisi-1'e eşit olduğunda yani son döngüye girdğinde elde'de sayı kalmışsa döngüyü 1 erteliyor.
çarpma işlemini öğrendiğimize göre şimdi sonucu ekrana yazdıralım:
#include <stdio.h> #include <stdlib.h> #define MAX_DIGIT int main(){ int fakt[MAX_DIGIT] = {5, 4, 3, 2}; int basamakSayisi = 4; // Basamak sayısını tutan değişkenimiz int elde = 0; // elde int i = 0, j = 0; // sayaclarımız for(i=0; i<basamakSayisi; i++) { int sayi = fakt[i]*3; //3 burada çarpanımnız olur fakt[i] = (sayi+elde)%10; elde= (sayi+elde)/10; // elde var 'carry' if (i == basamakSayisi-1 && elde>0) basamakSayisi++; } for(j = basamakSayisi-1; j>=0; j--) { printf("%d", fakt[j]); } return 0; }Sayıyı ters yazdığımız için diziyi sondan yazıyoruz.
Şimdi geldik ! hesaplamaya, program her çarpma işleminde dizinin içindeki sayı ile bizim 3 diye belirttiğimiz çarpanı çarpıyor ve tekrar diziye atıyor. Şimdi bizim yapmamız gerek şu: Önce diziye başlangıç değeri olarak 1 atayacağız ve bir döngü açıp döngünün 1'den 'e kadar artmasını sağlayacağız. Program her seferinde döngüdeki değişkeni(i) alıp dizinin içindeki sayı ile çarpacak ve tekrar diziye atayacak.
Başlayalım:
#include <stdlib.h> #include <stdio.h> #define MAX_DIGIT int main(){ int fakt[MAX_DIGIT] = {1}; int basamakSayisi = 4; // Basamak sayısını tutan değişkenimiz int elde = 0; // elde int i = 0, j = 0; // sayaclarımız int carpan = 1; for(carpan = 1; carpan <=; carpan++) { for(i=0; i<basamakSayisi; i++) { int sayi = fakt[i]*carpan; //carpan her asamada bir artiyor fakt[i] = (sayi+elde)%10; elde= (sayi+elde)/10; // elde var 'carry' if (i == basamakSayisi-1 && elde>0) basamakSayisi++; } } for(j = basamakSayisi-1; j>=0; j--) { printf("%d", fakt[j]); } return 0; }Evet bir döngü oluşturduk ve döngüde carpan adlı değişkeni bir bir artırdık ve her aşamada dizideki sayı ile çarptık, yani işlem aslında şu şekilde:
fakt = 1x1 = 1
fakt = 1x2 = 2
fakt = 2x3 = 6
fakt = 6x4 = 24
fakt = !
Evet program burada sona eriyor. Benim yazdığım en üstteki program daha farklı,çünkü benim kod yazma tarzımla yazdım ve fonksiyon kullandım. Bu konuda size mantığını anlattım, sizde istediğiniz gibi yazabilirsiniz. Eğer bir eksiğim veya bir sorunuz olursa çekinmeyin, teşekkürler :D
Bu programı yabancı bir kaynaktan da alıntı yaparak yazdım, buradan yabancı kaynağa ulaşabilirsiniz.
gelişim planı örnekleri 2022 doğum borçlanmasi ne kadar uzaktaki birini kendine aşık etme duası 2021 hac son dakika allahümme salli allahümme barik duası caycuma hava durumu elle kuyu açma burgusu dinimizde sünnet düğünü nasil olmali başak ikizler aşk uyumu yht öğrenci bilet fiyatları antalya inşaat mühendisliği puanları malta adası haritada nerede