Başlarken

Örnekle Öğrenin

Yeni bir dilde program yapmayı öğrenmenin en iyi yollarından biri, pek çok örnek program yürüttük. Yapılacak en iyi şey kopyalayıp yapıştırmaktır her programı bir metin dosyasına dönüştürüp derleyin. Ardından, deneysel çalışmaları deneyin. Bu örnek programların kapsamını genişleterek, Çevik yaklaşımın farklı yönlerine olarak daha iyi anlayacaksınız. Program yazma zamanı geldiğinde oluşturalım.

1. Örnek: Derleyicinizi çalıştırın.

Henüz yapmadıysanız aşağıdaki klasik programı kopyalayıp yapıştırın bir metin dosyasına dönüştürüp derler. Derlemeyle ilgili talimatlar mevcut burada bulabilirsiniz.

Muhtemelen eğitimde bu programın ayrıntılarını incelemişsinizdir. bu nedenle burada satır satır açıklama sağlamayacağız. Paydaşların yönetiminde okunabilirlik ile ilgili önemli noktalara dikkat edin. Bu içerik yorumları kapsar programların kolay okunmasını, anlaşılmasını ve korunmasını sağlayan biçimlendirme özellikleridir.

  • Yazdığımız her program bir başlık yorumuyla başlar. Bu yoruma yazarın iletişim bilgileri, kısa bir açıklama ve kullanımı (ilgiliyse). Her işlev, çalışma ve kullanıma ilişkin bir açıklamayla başlar.
  • Kodda, açıklayıcı yorumlar yapmak için tam cümleler kullanıyoruz. (örneğin işleme süreci zor ve bariz değilse) belgelememelidir. veya önemli olduğunu düşünebilirsiniz.
  • Her zaman açıklayıcı adlar kullanın: Değişkenler küçük harfle yazılmış kelimelerdir my_variable parametresinde olduğu gibi _ ile değiştirin. İşlev adları, kelimeleri işaretlemek için büyük harfler, gibi bir değer kullanabilirsiniz. Sabitler "k" ile başlar ve kelimeleri işaretlemek için büyük harfler kullanın (kDaysInweek gibi).
  • Girinti, ikinin katlarıdır. İlk seviye iki boşluk; daha ileri ise girinti gerekli olduğundan, dört boşluk, altı boşluk vb. kullanıyoruz.
// hello.cpp: Maggie Johnson
// Description: a program that prints the immortal saying "hello world"

#include <iostream>
using namespace std;

int main() {
  cout << "Hello World!" << endl;
  return 0;
}

Deneyebileceğiniz bazı denemeler:

  • En önemli şey, bu programı derleyebildiğinizden ve çalıştırabildiğinizden emin olmaktır.
  • Yukarıdaki programı "Hello World!" ifadesini yazdıracak şekilde 4 kez satır, her biri 17 boşlukluk bir alanda yazdırılır. Döngüler için kullanma yardımcı oluyorum. Burayı tıklayarak çıktıyı cout ile biçimlendirme hakkında bilgi edinin. Burayı tıklayarak çözümü görün.
  • Tamamladığınız programı kullanarak, "Merhaba Dünya!" 17 boşlukla sola hizalanır (varsayılan değer genellikle sağa hizalı olarak gösterilir). Çözümü görmek için burayı tıklayın.

2. Örnek: Giriş yapma

C++ klavyesinde cin kullanarak klavyeden giriş almak kolaydır. Örnek:

// get_input.cpp: Maggie Johnson
// Description: Illustrate the use of cin to get input.

#include <iostream>
using namespace std;

int main() {
  int input_var = 0;
  // Enter the do while loop and stay there until either
  // a non-numeric is entered, or -1 is entered. Note that
  // cin will accept any integer, 4, 40, 400, etc.
  do {
    cout << "Enter a number (-1 = quit): ";
    // The following line accepts input from the keyboard into
    // variable input_var.
    // cin returns false if an input operation fails, that is, if
    // something other than an int (the type of input_var) is entered.
    if (!(cin >> input_var)) {
      cout << "You entered a non-numeric. Exiting..." << endl;
      break;
      // exit the do while loop
    }
    if (input_var != -1) {
      cout << "You entered " << input_var << endl;
    }
  } while (input_var != -1);
  cout << "All done." << endl;
  return 0;
}

Deneme:

  • Giriş hatası yapıldığında akış "bozulur". cin iadeleri False (yanlış) değerini alır, program durur. Bu tür hatalardan korunmak çok önemlidir geçiş yapın. Ama hatadan kurtulmak istersek tercih etmelisiniz? Kurtarma işlemi için hata:
    1. Hatayı cin.clear() ile temizleyin.
    2. Yanlış karakterleri akıştan kaldırın. Bunu yapmanın bir yolu cin.ignore() işlevini kullanmaktır.

Bu iki adımı kullanarak hatalı girişleri kurtaran bir program yazın. Tekliflerinizi otomatikleştirmek ve optimize etmek için bu yöntemlerin nasıl çalıştığını Google'da arayabilirsiniz. Çözümümüze buradan ulaşabilirsiniz.

3. Örnek: Bu program ne gibi çıktılar verir?

#include <iostream>
using namespace std;

int main() {
  cout << " 1\t2\t3\t4\t5\t6\t7\t8\t9" << endl << "" << endl;
  for (int c = 1; c < 10; c++) {
    cout << c << "| ";
    for (int i = 1; i < 10; i++) {
      cout << i * c << '\t';
    }
    cout << endl;
  }
  return 0;
} 

4. Örnek: Ayrıştırma her şeyi kolaylaştırır...

Bilgisayar oyunları yazmaya başlama zamanı geldi. İlk başta biraz basit olacak ama ama bu bir başlangıç. Bizim görevimiz, tahminleri tahmin etmeyi deneyen bir program yazmak bir oyundur. Programımız 0 ile 100 arasında rastgele bir sayı oluşturur. Oyuncu, gizli numarayı tahmin et. Program, "bu çok yüksek" gibi ipuçları sağlar veya "bu çok düşük" Ta ki oyuncu gizli numarayı tahmin edene kadar.

Bu oyun üzerinde üç adımda çalışacağız. 

  1. Belirli bir değer aralığı içinde rastgele bir sayının nasıl oluşturulacağını öğrenme.
  2. Oyuncunun yaptığı bir tahminin işlendiği ve tahmin edilmesinin ipuçları.
  3. Oyuncu tahmin edene kadar birden fazla tahmin için ne kadar izin vermemiz gerektiğini ekleyin sayıda.

Bu geliştirme sürecine ayrıştırma adı verilir, bu da görevlerin kırılması anlamına gelir alt görevlere dönüştürmenize yardımcı olur.

1. adımdan başlayarak, rastgele sayının nasıl oluşturulacağını görmek için bir Google araması yapın kullanarak erişebilirsiniz. "rand C++" araması yapmayı deneyin. Buradan anlatabilmişimdir.

2. adım için oynatıcıdan bir tam sayı girişi almamız gerekir (uygun cin'de hata kontrolü yapılıyor) ve gizli numarayla karşılaştırarak kontrol edin. Dene ve yaz öğrenin.

Son olarak, oyuncudan tahminleri toplayan bir döngü eklememiz gerekir. Ta ki gizli numarayı tahmin edene kadar. Bu kısmı tamamladıktan sonra çözümümüze göz atabilirsiniz.

Ayrıştırma, bir programcının öğreneceği en önemli becerilerden biridir. Bir görevi yönetilebilir parçalara bölmek ve daha sonra bir görevi tamamlamak kritik önem taşır. Aşağıda bazı örnekler verilmiştir: adeta ayrıştırmanız için farklı fırsatlar bulacaksınız.

  • Birçok günlük görev, ayrıştırma becerilerini geliştirme fırsatları sunar. Zihninizin bu şekilde çalıştığını görmek sizi şaşırtabilir!

    Örneğin, gerçekten dağınık bir mutfağı temizlemem gerekiyorsa (örneğin, küçük pasta yaptıysa) bir plan sunmak, ve böylece daha sonra işi yeniden yapmama gerek kalmayacağından emin oluyorum. Bu banyoyu yıkamak tezgahlarda temizlenecek bir sürü şey varsa ilk önce zemini muhtemelen daha sonra tekrar zemin hazırlamanız gerekir. Galiba tüm malzemeleri koydum önce dışarıda; tüm bulaşıkları lavaboya taşımak; tezgâhları temizleyin, yıkama yemekler; ve son olarak zemini temizleyin. Farklı yöntemlerle başarılı bir şekilde ama her şeyden önce iyice düşünerek gerçekten ne yapmam gerektiğini yeniden çalışma gerektirmeyecektir.

    Ayrıştırma becerilerinizi geliştirmek için günlük görevleri örnek olarak kullanın. Kim bilir? Hatta evde daha verimli olmanızı bile sağlayabilir.

  • İki tam sayının en büyük ortak böleni, bölüştürür. Örneğin, gcd(12; 18) = 6, gcd(−4; 14) = 2. gcd'yi hesaplamanın en etkili yolu Öklid algoritmasını kullanmaktır. Yazı yazma iki tam sayı için gcd'yi hesaplama işlevine sahip program. Şunları yapmayı deneyin: fonksiyonunu kullanmayı seçerseniz, algoritmanın nasıl çalıştığını anlamanıza çalışır.

    Alt görevlerinizi açıkça tanımlayın. Örneğin, Öklid mutfağının kodunu bulun. algoritma algoritma için yinelemeli olmayan bir fonksiyon oluşturabilir; bilgi edinin. Buradan anlatabilmişimdir.

5. Örnek: Matematik Bulmacaları

Bilişimin güçlerinden biri önemli bilgileri bulmak için kaba kuvvet açıklamadır. Deneme yanılma yöntemi bazı sorunlarda gayet iyi çalışıyor. Aslında, bilgisayarlar bu tür sorunlarda özellikle iyi olabilir. Şunları göz önünde bulundurun:

Atların fiyatı 10 TL, domuzların fiyatı 3 TL, tavşanların fiyatı ise 0,50 TL'dir. Bir çiftçi 100 satın alıyor deneyin, her hayvandan kaç tane satın aldı? 

Bu sorunun son derece basit bir çözümü var. Bulabileceğiniz bunu inceleyin.

Deneyebileceğiniz başka bir ayar daha var:
Bir rafta soldan sağa olmak üzere 6 farklı kitabı kaç şekilde düzenleyebilirsiniz?

Bu kez çözümü size sunacak ve programı yazmanıza izin vereceğiz: 720.

6. Örnek: Değerlendirmeniz için dizeler

Aşağıdaki program çıktısı ne olur?

#include <iostream>
using namespace std;

int main() {
  string str1 = "To be or not to be, that is the question";
  string str2 = "only ";
  string str3 = str1.substr(6, 12);
  str1.insert(32, str2);
  str1.replace(str1.find("to be", 0), 5, "to jump");
  str1.erase(9, 4);
  cout << str1 << endl;
  for (int i = 0; i < str3.length(); i++)
    cout << str3[i]; cout << endl;
}

Sonraki slayta geçin burayı tıklayın.

7. Örnek: Ayrıştırma ile sonraki adımlar - İşteki ilk gününüz

Kısa süre önce ExerShoe şirketinde uzman bir satış görevlisi olarak pozisyona geldiniz çiftliğinde yaklaşık 225 ABD doları olan lüks bir spor ayakkabısı sunuyoruz. Patronunuz size üç ödeme seçeneği var. İlk seçime başlamadan önce seçmeniz gereken gün:

  1. Haftada 600 dolarlık düz maaş;
  2. Saat başına 7,00 dolarlık maaş ve% 10 satış komisyonu;
  3. Maaş yok, ancak satılan her ayakkabı için% 20 komisyon ve 20 ABD doları

C++ konusunda uzman bir programcı olarak, kendi işinizle ilgili maaş konusunda en uygun seçeneği belirleyin.

Daha büyük bir program için ayrıştırma yaparken yaygın olarak kullanılan bir yaklaşım, problemin çözümüne yönelik bir özet gibi ana işlev görür. Ardından, her görevi yerine getirecek fonksiyonları yazıyoruz.

Ana programdaki ilk başarınız:

  GetInput(WeeklySales);
  CalcMethod1(WeeklySales);
  CalcMethod2(WeeklySales);
  CalcMethod3(WeeklySales); 

öğrenin.

8. Örnek: Ne, nerede kullanılabilir?

Aşağıdaki programın sonucu ne olur?

// scope.cpp, Maggie Johnson
// Description: A program to illustrate different scopes

#include <iostream>
using namespace std;

int a = 18;
int b = 6;

int function1(int a, int b) {
  return a - b;
}

int function2() {
  int c;
  c = a + b;
  return c;
}

int main() {
  int b = 12;
  int c = 0;
  a = function1(b, a);
  c = function2();
  cout << "a: " << a << " b: " << b << " c: " << c << endl;
}

Cevabınızı belirledikten sonra, kodun yorum eklenmiş sürümünü buradan inceleyebilirsiniz.

9. Örnek: Dosyaları İşleme

C++'ta dosya işleme, fstream kullanılarak gerçekleştirilir. Bir dosyaya kaydetmek için bir akış bildirmeli ve "out" (çıkış) komutuyla açma yatırım yapmanız önemlidir. Bunu kontrol et görebilirsiniz.

// file.cpp, Maggie Johnson
// Description: An illustration of file processing
#include <fstream>
#include <iostream>
using namespace std;

int main() {
  char first_name[30], last_name[30]; int age;
  char file_name[20];
  // Collect the data.
  cout << "Enter First Name: "; cin >> first_name;
  cout << "Enter Last Name: "; cin >> last_name;
  cout << "Enter Age: "; cin >> age;
  cout << endl << "Enter the name of the file: "; cin >> file_name;

  // Create an ofstream called People, open the stream for output.
  ofstream People(file_name, ios::out);
  // Write the output to the stream.
  People << first_name << endl << last_name << endl << age << endl; return 0;
} 
  • Az önce oluşturulan dosyayı nasıl açacağınızı ve bu dosyayı nasıl açacağınızı bahsedeceğim.Çözümümüzü burada bulabilirsiniz.
  • Şimdi, kullanıcının çok sayıda öğe girmesine izin vermek için bu programı değiştirip veri kayıtları oluşturmak için kullanılır. Ayrıca tüm verileri tekrar okumak istiyoruz. kaydetme olanağı sunar.Çözümümüzü burada bulabilirsiniz.

Artık birkaç egzersiz ve egzersiz yapma kendi başınıza çalışabilirsiniz.

Google'da yazılım mühendisi olmak nasıl bir şey

Google'da çalışmanın nasıl bir şey olduğunu öğrenmek için bu sayfayı ziyaret edin ziyaret edin.

Alıştırmalar ve Projeler

Aşağıdaki alıştırmalar temel C++ ile ilgili daha fazla alıştırma yapmanıza olanak tanır. Bu alıştırmalar için çözüm sunmuyoruz Çünkü bu alandaki diğer öğrencilerle birlikte çalışmanızı istiyoruz. ele alacağız.

  1. Yaygın saha kriketleri, geçerli sıcaklıkla doğru orantılı olarak ses çıkarır. Bir kriketin bir dakikadaki titreme sayısına 40 eklenip sonra bölme o değer bize sıcaklığı verir. Girdi olarak kabul eden bir program yazın geçerli sıcaklığı yazdırır. Örneğin, Örneğin,
    Number of chirps: 120
    The temperature is: 40.0 degrees. 
  2. Programlama dersi için final notunuzu hesaplayacak bir program yaz gösterir. Notlandırma şeması şöyledir:
    Final grades will be based on the following:
    40% Assignments   15% Midterm Examination
    35% Final Examination
    10% Class Participation Grade 

    Programınız kullanıcıdan dört ödev puanı istemelidir: Dönem ortası final notları ve bölüm notları. Ardından, nihai puan hesaplanıp yazdırılır. Hesaplamaları yapmak için dört ödev puanının ortalamasını almanız gerekir. ve 0,4 (%40) ile çarparsınız. Ardından, yarıyıl puanını, 0,15, final için 0,35 ve katılım notu 0,1 ile belirlenebilir. Ardından bu çarpmaların tüm sonuçlarını toplayın.

    Bu programda işlevleri mümkün olan her yerde kullanın. Bir fonksiyon oluşturabilirsiniz: ve dizeyi parametre olarak geçirerek girdi almak için bir e-posta alırsınız. Aşağıda örnek bir çalıştırma verilmiştir:

    Enter the score for the first assignment. 75
    Enter the score for the second assignment. 85
    Enter the score for the third assignment. 82
    Enter the score for the fourth assignment. 94
    Enter the score for the midterm. 81
    Enter the score for the final. 89
    Enter the score for the section grade. 100
    The final grade is: 86.9
  3. Elektronik kronometreler daha ucuz ve doğru hale geldikçe, elde edemeyeceğiniz doğru ölçümlerle kuşkulara dalın. Program yazın Saniye cinsinden verilen bir süreyi giriş olarak alır ve sayı çıkışını verir saat, dakika ve saniye cinsinden ifade eder. Örneğin,
    Number of seconds: 3662
    Hours: 1
    Minutes: 1
    Seconds: 2     
  4. Aşağıda, programınızı yazmadan önce ayrıştırma işlemi yapın. İyi yapılandırılmış programlar oluşturmak için mümkün olduğunca işlevler kullanın.

  5. Aşağıdakiler için bir banner yazdırmak istediğimizi varsayalım:

    "FRYY BREEZE ÜÇ AĞAYI DURDUR"

    Bu bir banner olduğundan harflerin oldukça büyük olmasını istiyoruz:

    FFFFF
    F
    FFF
    F
    F
    
    EEEEE
    E
    EEE
    E
    EEEEE
    
    vb.

    İyi bir problem ayrıştırıcısı olarak, çözmektense muhtemelen ana fonksiyona koyarsanız çok daha verimli bir bunları fonksiyonlara yerleştirin. Elimizde bir "printE" işlev ve bir "printZ" işlevi vb.

    Fonksiyon kullanarak bir kelime veya kelime öbeği banner'ı oluşturan bir program yazma birçok harften oluşur. Bazı olasılıklar:

    FREEZY BREEZE MAKES FLEAS
    SNEEZE TWEETLE BEETLE PADDLE BATTLE
    SIX SICK CHICKS KICK
    SUE SEWS SUE'S SOCKS
    BEN BENDS BIM'S BROOM 
  6. İşte "sihirli sayı" sorun: Kullanıcıdan üç basamaklı bir kod girmesini isteyin ilk basamağı sondan büyük olan sayı. Programınız tersine çevrilecek sayı ve tersi orijinal sayıdan çıkarmanız gerekir. En son, elde edilen sayıyı tersine çevirip, ters çevrilmiş haline ekleyin. Çıktı nihai sonuç. Kullanıcının girdiği orijinal sayı tam sayı olmalıdır yazın (üç karakter değil). Şunu alan bir fonksiyon: tamsayı girdi olarak kullanılır ve bu sayının tersini döndürür. Örnek:
    input number: 901
    reverse it: 109
    subtract: 901 - 109 = 792
    reverse it: 297
    add: 297 + 792 = 1089   
  7. Yasa, gıda ürünü üreticilerinin son kullanma tarihlerini belirlemelerini zorunlu kılar ancak yasada bir boşluk var. Bu nedenle, geçerlilik bitiş tarihinin belirli bir biçimde olması gerekir. Bu, Svahili dili konuşmanıza rağmen hâlâ yasal olmalısınız.

    Ralph Nader'ın üçüncü kuzeni olan Nadine, kendi kendini atayan bir Yemek Kalitesi Casusu. Pek çok gıda ürünü üreticisinin kodlamaya başladığını ve ürünün ne kadar eski olduğunu bilmelerini önlemek için ürün geçerlilik bitiş tarihleri anlatacağım.

    Ancak kodlama, marketlerin son kullanma tarihlerini belirlemelerine isterse bunu yapabilir.

    Popüler kodlama yöntemlerinden biri:

    • Ocak ile Aralık arasındaki ayları 'A' olarak kodlayın "L"den
    • tarihin her basamağını 'Q' olarak kodlayın "Z"den
    • yılı 'A' olarak kodla "Z"den yani 1'den 26'ya kadar, yani 1'den 26'ya, eklenerek 1995'e eklendi.

    Narin, şu tarihte özellikle sorgulanabilir bir somun ekmek buldu: ARZM. Tarihi belirlemek için bir program yazın.

  8. Bu, bilinen bir kart hilesine sayı benzetimidir. Kullanıcıdan giriş yapmasını isteyin Üç basamaklı bir sayıdır. Sayıyı ABC gibi düşünün (burada A, B, C rakamı). Şimdi de sayıların oluşturduğu sayıların kalan kısmını bulun ABC, BCA ve CAB, 11'e bölündüğünde. Bu kalanları X, Y, daha fazla Bunları X+Y, Y+Z, Z+X şeklinde toplayın. Toplamlardan herhangi biri tek sayıysa 11 azaltmalıdır (hangi işlem daha az pozitif bir sayı verirse o işlem daha az pozitif bir sayı verir) 20'den fazla; toplam 9 ise bunu bildirin ve işlemi durdurun). En son, toplamların her birini ikiye bölmektır. Elde edilen rakamlar A, B, C'dir. Yazı yazma bir programın oluşturulması söz konusu.

Uygulama: Animasyonlu Müziği Görselleştirme

Yazılım mühendisleri, genellikle çok çeşitli ilgi çekici ve yenilikçi uygulamalar oluşturur. Bu kursun her modülünde mühendislerin tüm farklı alanları anlamanıza yardımcı olacak biçimde tasarlanmış ve mühendisim.

İşte ilginç bir konu geliştirmeyi öğreneceksiniz.