11 Haziran 2013 Salı

Soma MYO Mikrodenetleyiciler 2012-2013 Final Sınavı Soru ve Çözümleri


Soru 1:
Aşağıdaki işlemleri adım adım yapacak programı Arduino'da hazırlayınız;
-1 ile 50 arasındaki tek sayıları ardışık olarak Serial Monitöre yazdırınız.
-Bu sayıların içinde 11 ile 20 arasındakilerin yanına "bingo" yazdırın.
-Bu sayıların içinde 21 ile 25 arasındakilerin yanına "rumba" yazdırın.
-11 ile 20 arasındakilerin toplamını aldırın ve yazdırın
-21 ile 25 arasındakilerin toplamını aldırın ve yazdırın

Çözüm:
1 den 50 ye kadar olan tek sayıları Serial Monitöre ardışık yazdırmak için bir döngü oluşturmalıyız.
Karşılaştırma ile 11 ile 20 arası ve 21 ile 25 arası sayıları tesbit edip hem bunların yanına ilgili ifadeleri
yazmalı hem de bu aralıkların toplamlarını değişkenlere atayıp Serial Monitöre yazdırmalıyız.

Program:

int dongusayisi; // döngü değişkenini tamsayı olarak tanımladık
int toplam1; // ilk toplam değişkenini tamsayı olarak tanımladık
int toplam2; // ikinci toplam değişkenini tamsayı olarak tanımladık
void setup() {
  Serial.begin(9600);
  // 1 ile 50 arasındaki tek sayılar için döngü oluşturalım.
  for (dongusayisi=1;dongusayisi<=50;dongusayisi+=2)
  {
    Serial.print (dongusayisi); // yazdıralım
    // 11 ile 20 arasındaki tek sayıları bulduralım
    if (dongusayisi>10 && dongusayisi<21)
    {
      Serial.print(" bingo"); // yanlarına bingo yazdıralım
      toplam1=toplam1+dongusayisi; // toplam1 değişkenine toplatalım
    }
    // 21 ile 25 arasındaki tek sayıları bulduralım
    if (dongusayisi>20 && dongusayisi<26)
    {
      Serial.print(" rumba"); // yanlarına rumba yazdıralım
      toplam2=toplam2+dongusayisi; // toplam2 değişkenine toplatalım
    }
    Serial.println (" "); // alt satıra indirelim.
  }
  Serial.println (toplam1); //11 ile 20 arası tek sayıların toplamını yazdıralım
  Serial.println (toplam2); //21 ile 25 arası tek sayıların toplamını yazdıralım
}

void loop() {
  // Tekrara gerek olmadığından bu bölüme kod yazılmasına gerek yoktur.

}

Soru 2:
Aşağıdaki işlemleri adım adım yapacak programı Arduino'da hazırlayınız;
-3,5,8,13,24,18,4,9 sayılarını Serial Monitöre yazdırınız.
-Bu sayıların her birinin 2 katının 3 fazlasını yanına yazdırın.
-Bu sayıların her birinin 3 katının 2 eksiğini yanına yazdırın.
-Bu sayıların toplamını aldırın ve yazdırın.
-Bu sayıların 9 dan büyük olanlarının toplamını aldırın ve yazdırın

Çözüm :

Listelenmiş sayıları bir dizin değişkenine atamalıyız ve bir döngü ile bunları Serial Monitöre yazdırmalıyız.
Her sayının 2 katının 3 fazlasını ve 3 katının 2 eksiğini yanına yazdırmalıyız. Döngü sırasında sayıların toplamını bir değişkene, karşılaştırma ile 9 dan büyük olanların toplamını başka bir değişkene atamalı ve döngü sonunda bu toplamları yazdırmalıyız.

Program :
int listesayilari[]={3,5,8,13,24,18,4,9}; // sayiları tamsayı olarak dizine tanımladık
int toplam1=0; // ilk toplam değişkenini tamsayı olarak tanımladık
int toplam2=0; // ikinci toplam değişkenini tamsayı olarak tanımladık
void setup() {
  int dongu; // dizin değişkenleri ile işlem yapmak için döngü değişkeni tanımladık
  Serial.begin(9600);
  // dizin değişkenleri için döngü oluşturalım.
  for (dongu=0;dongu<=7;dongu++)
  {
    Serial.print (listesayilari[dongu]); // yazdıralım
    // Listedeki sayıların toplamını aldıralım.
    toplam1=toplam1+listesayilari[dongu];
    // 9 dan büyük olan dizin değişkenlerini bulduralım
    if (listesayilari[dongu]>9)
    {
      toplam2=toplam2+listesayilari[dongu]; // toplam2 değişkenine toplatalım
    }
    Serial.print (" "); // boşluk bırakalım.
    int sayi1= listesayilari[dongu]*2+3;
    Serial.print (sayi1); // ilk hesaplamayı yazdıralım
    Serial.print (" "); // boşluk bırakalım.
    int sayi2= listesayilari[dongu]*3-2;
    Serial.println (sayi2); // ilk hesaplamayı yazdıralım ve alt satıra inelim.
  }
  Serial.println (toplam1); //tüm sayıların toplamını yazdıralım
  Serial.println (toplam2); //9 dan büyük sayıların toplamını yazdıralım
}

void loop() {
  // Tekrara gerek olmadığından bu bölüme kod yazılmasına gerek yoktur.

}