시작하기

예시를 통해 배우기

새로운 언어로 프로그래밍하는 방법을 배우는 가장 좋은 방법 중 하나는 많은 예제 프로그램에서 살펴봤습니다. 이 경우 가장 좋은 방법은 아래 각 프로그램을 텍스트 파일로 컴파일하여 컴파일합니다. 그런 다음 실험을 시도해 보세요. 이 예시 프로그램을 확장하면 다양한 측면에 익숙해질 수 있습니다. 프로그래밍 언어, C++로 된 프로그래밍 언어를 기반으로 프로그램을 작성할 때가 되면 있습니다.

예 1: 컴파일러가 작동하도록 하기

다음 기존 프로그램을 복사하여 붙여넣으세요. 텍스트 파일로 변환하여 컴파일합니다 컴파일에 대한 안내를 사용할 수 있습니다. 여기에서 확인할 수 있습니다.

튜토리얼에서 이 프로그램에 대한 자세한 내용을 다뤘을 것입니다. 여기서는 한 줄씩 설명을 제공하지 않겠습니다. 몇 가지 사항이 있습니다 가독성과 관련하여 주목하세요. 댓글은 프로그램을 읽고, 이해하고, 유지 관리하기 쉽게 하는 데 도움이 되는 서식과 형식을 지니고 있습니다.

  • 작성하는 모든 프로그램은 헤더 주석으로 시작하며 작성자의 연락처 정보, 간단한 설명, 사용 정보 (해당하는 경우). 모든 함수는 연산 및 사용에 대한 주석으로 시작합니다.
  • 코드가 실행될 때마다 전체 문장을 사용하여 설명 주석을 추가합니다. 처리가 까다롭거나 명확하지 않거나 흥미로울 수도 있고 중요할 수도 있습니다.
  • 항상 설명이 포함된 이름 사용: 변수는 소문자로 구분됩니다. 사용할 수 있습니다. 함수 이름은 대문자를 사용하여 단어를 표시합니다. MyExcitingFunction()에서와 같이 작동합니다. 상수는 'k'로 시작합니다. 사용하여 단어를 대문자로 표시(kDaysInWeek)합니다.
  • 들여쓰기는 2의 배수입니다. 첫 번째 수준은 두 개의 공백입니다. 추가적으로 들여쓰기가 필요하며 공백 4개, 공백 6개 등을 사용합니다.
// 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;
}

시도해 볼 실험:

  • 가장 중요한 것은 이 프로그램을 컴파일하고 실행할 수 있는지 확인하는 것입니다.
  • 위의 프로그램을 수정하여 'Hello World!'를 한 발에 4번 6줄씩, 각 줄은 17칸의 필드에 출력됩니다. for 루프 사용 이렇게 할 수 있습니다. 여기를 클릭하여 다음을 수행합니다. cout을 사용하여 출력 형식을 지정하는 방법을 알아봅니다. 여기를 클릭하여 솔루션을 확인하세요
  • 방금 완료한 프로그램을 사용하여 'Hello'를 출력하는 방법을 와!" 17개의 공백 필드에 왼쪽 정렬됨 (기본값은 일반적으로 오른쪽 정렬). 해결 방법을 보려면 여기를 클릭하세요.

예 2: 일부 내용 입력

cin을 사용하여 C++의 키보드에서 쉽게 입력을 가져올 수 있습니다. 예를 들면 다음과 같습니다.

// 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;
}

실험:

  • 입력 오류가 발생하면 스트림이 '중단'되어 Cin 리턴 false로 바뀌고 프로그램이 중지됩니다. 이러한 오류를 방지하는 것이 매우 중요합니다. 동일한 방식으로 작동합니다. 하지만 오류에서 복구하고 싶다면 어떻게 해야 할까요? 복구하려면 두 단계를 거쳐야 합니다 오류: <ph type="x-smartling-placeholder">
      </ph>
    1. cin.clear()로 오류를 삭제합니다.
    2. 스트림에서 잘못된 문자를 삭제하세요. 이를 위한 한 가지 방법은 cin.ignore()를 사용하는 것입니다.

이 두 단계를 사용하여 잘못된 입력에서 복구하는 프로그램을 작성합니다. 사용 Google에 문의하여 이러한 방법의 작동 방식을 검색하세요. 해결 방법은 여기를 참조하세요.

예 3: 이 프로그램은 무엇을 출력하나요?

#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: 분해를 통해 모든 것이 더 쉬워집니다.

이제 컴퓨터 게임을 만들 시간입니다! 첫 번째는 약간 간단하지만 그러나 그것은 시작입니다. 우리의 임무는 신경망을 사용하여 신경망을 학습시킬 있습니다. 프로그램은 0과 100 사이의 랜덤 숫자를 생성합니다. 플레이어는 비밀번호를 알아낼 수 있습니다. 프로그램에서 '너무 높음'과 같은 힌트를 제공합니다. 또는 '이건 "너무 낮음" 플레이어가 마침내 비밀을 추측할 때까지 말이죠.

이 게임에서는 3단계로 작업을 진행합니다. 

  1. 주어진 값 범위 내에서 랜덤 숫자를 생성하는 방법 알아보기
  2. 플레이어의 추측 하나를 처리하는 main 함수를 만들고 힌트
  3. 플레이어가 추측할 때까지 여러 번 추측할 수 있도록 필요한 값을 추가합니다. 있습니다.

이 개발 프로세스를 분해라고 하며, 이는 작업을 중단하는 것을 의미합니다. 할 수 있으며, 각 작업은 쉽게 수행할 수 있습니다.

1단계부터 Google 검색을 실행하여 랜덤 숫자를 생성하는 방법을 알아봅니다. 입니다. 'rand C++'로 검색해 보세요. 여기에서 확인하세요. 솔루션을 제공합니다

2단계에서는 플레이어로부터 정수 입력을 받아야 합니다. 오류 검사)을 실행하고 보안 번호와 대조하여 확인합니다. 직접 써 보기 게임의 이 부분을 직접 확인해 보세요. 솔루션을 참고하세요.

마지막으로, 플레이어의 추측을 계속 수집하는 루프를 추가해야 합니다. 퍼즐을 풀어야 합니다. 과정의 이 부분을 완료한 후 Google의 솔루션을 확인해 보세요.

분해는 프로그래머가 배워야 하는 가장 중요한 기술 중 하나입니다. 작업을 관리 가능한 조각으로 나눠서 하나의 작업을 완료할 수 있는 능력 한 번에 얼마나 많은 프로젝트를 완료하는 것이 중요합니다. 다음은 몇 가지 분해를 연습할 수 있는 다른 기회를 제공합니다.

  • 일상 업무의 많은 부분을 분해하는 스킬을 쌓을 기회를 제공합니다. 당신의 마음이 이렇게 작용한다는 것을 알게 되면 놀랄 수도 있습니다!

    예를 들어 정말 지저분한 주방을 청소해야 한다면 (아마도 케이크를 굽더니) 계획을 세우기 위해 작업을 세분화합니다. 나중에 작업을 다시 할 필요가 없도록 하기 위해서입니다. CANNOT TRANSLATE 카운터에 청소해야 할 물건이 온다면 바닥을 먼저 치우고 나중에 다시 바닥을 해야 할 수도 있습니다. 모든 재료를 넣고 멀리 떨어져 있어야 합니다. 모든 접시를 싱크대로 옮기고 카운터를 지웁니다. 워시 요리 마지막으로 바닥을 청소합니다. 다른 방법으로도 하지만 먼저 그것을 생각해 보면 재작업이 필요하지 않습니다

    일상적인 작업을 예시로 사용하여 분해 기술을 개발하세요. 알겠어요. 집 안에서 더 효율적으로 일할 수 있습니다.

  • 두 정수의 최대 공약수는 이 둘을 균등하게 나눕니다. 예: gcd(12, 18) = 6, gcd(−4, 14) = 2 gcd를 계산하는 가장 효율적인 방법은 유클리드 알고리즘을 사용하는 것입니다. 쓰기 두 정수의 gcd를 계산하는 함수가 있는 프로그램 이제 먼저 재귀 없이 함수를 실행해 보는 것이 좋습니다. 그러면 알고리즘이 있습니다.

    하위 작업을 명시적으로 정의합니다. 예를 들어 유클리드 알고리즘 알고리즘의 비재귀 함수를 만듭니다. 등. 여기에서 확인하세요. 솔루션을 제공합니다

예 5: 수학 퍼즐

컴퓨팅의 강점 중 하나는 문제에 대한 해결책을 찾는 것입니다. 일부 문제에서는 시행착오를 해도 무방합니다. 사실 컴퓨터는 이러한 문제를 잘 해결할 수 있습니다. 다음을 고려해 보세요.

말은 10달러, 돼지의 가격은 3달러, 토끼는 500원입니다. 농부가 100개를 구입하는 경우 100달러에 동물을 몇 개나 구매했나요? 

이 문제에 대한 놀랍도록 간단한 해결책이 있습니다. 다음을 찾을 수 있는지 확인해 보세요. 먼저 Google에서 확인하세요.

다른 방법을 사용해 보세요.
책장에 왼쪽에서 오른쪽으로 6개의 서로 다른 책을 정리하는 방법은 몇 가지인가요?

이번에는 해결책을 알려드리고 프로그램을 작성하도록 하겠습니다. 720입니다.

예시 6: 고려할 문자열

다음 프로그램은 무엇을 출력하나요?

#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;
}

클릭 여기를 참고하세요.

예시 7: 분해가 포함된 다음 단계 - 작업 첫날

여러분은 방금 ExerShoe 회사의 영업 사원으로 일자리를 얻었습니다. 운동화 한 켤레당 약 $225의 가격이 책정되었습니다. 상사가 제공하는 첫 번째 수익 창출을 시작하기 전에 선택해야 하는 세 가지 보상 옵션 일:

  1. 주당 $600의 정직 급여
  2. 시간당 $7.00에 판매 수수료 10% 를 더한 급여
  3. 급여는 없지만 수수료 20%, 판매된 신발 한 켤레당 20달러

C++ 전문 프로그래머로서 여러분은 데이터 애널리스트로서 최선의 보상을 결정하는 데 도움이 됩니다.

대규모 프로그램의 분해를 실행하는 일반적인 접근 방식은 문제를 해결하기 위한 윤곽선처럼 읽는 main 함수입니다. 그런 다음 각 작업을 수행하기 위해 함수를 작성합니다.

다음은 기본 프로그램의 첫 번째 패스입니다.

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

먼저 각 기능을 구현할 수 있는지 솔루션을 참고하세요.

예 8: 어디에서 구매할 수 있나요?

다음 프로그램의 출력 결과는 무엇인가요?

// 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;
}

답을 찾았으면 여기에서 주석 처리된 버전의 코드를 확인하세요.

예 9: 파일 처리

C++의 파일 처리는 fstream을 사용하여 실행됩니다. 파일에 저장하려면 스트림을 선언하고 'out' 있습니다. 확인 확인할 수 있습니다.

// 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;
} 
  • 방금 만든 파일을 여는 방법을 알아내고 데이터를 얻을 수 있습니다.여기에서 솔루션을 확인하실 수 있습니다.
  • 이제 사용자가 여러 단어를 입력할 수 있도록 이 프로그램을 수정할 수 있는지 루프를 사용하여 데이터를 기록합니다. 또한 모든 데이터를 다시 읽고 할 수 있습니다.여기에서 솔루션을 확인하실 수 있습니다.

이제 몇 가지 연습을 하고 직접 프로젝트를 시작할 수 있습니다.

Google의 소프트웨어 엔지니어가 되는 것

Google에서 일하는 것이 어떤 것인지 읽어보세요. 웹사이트를 참고하세요.

연습 및 프로젝트

다음 실습은 기본 C++로 더 많은 연습을 할 수 있습니다. 이러한 연습 문제에 대한 솔루션은 제공되지 않습니다. 이 과정의 다른 학생들과 함께 작업하길 바라기 때문입니다. 오신 것을 환영합니다

  1. 일반적인 필드에서 크리켓이 우는 소리는 현재 온도에 정비례합니다. 1분 동안 크리켓이 우는 횟수에 40을 더한 다음 4씩 곱하면 기온이 얻어집니다 입력으로 받는 프로그램 작성 1분 동안 우는 횟수를 계산하고 현재 온도를 출력합니다. 대상 예를 들어
    Number of chirps: 120
    The temperature is: 40.0 degrees. 
  2. 프로그래밍 과정의 최종 성적을 계산하는 프로그램 작성 있습니다. 평가 체계는 다음과 같습니다.
    Final grades will be based on the following:
    40% Assignments   15% Midterm Examination
    35% Final Examination
    10% Class Participation Grade 

    프로그램은 사용자에게 4개의 과제 점수, 즉 중간고사, 최종 및 섹션 성적 그런 다음 최종 점수가 계산되고 출력됩니다. 4개의 과제 점수를 합산하여 평균을 내야 합니다. 0.4 (40%)를 곱합니다. 그런 다음 중간 점수를 곱합니다 0.15로, 최종 점수를 0.35로, 참여 등급을 0.1로 나누는 것입니다. 그런 다음 이 곱셈의 결과를 모두 더합니다.

    이 프로그램에서 가능하면 함수를 사용하세요. 함수를 만들어 표시할 문자열을 매개변수로 전달하여 입력을 얻습니다. 악구를 지어야 합니다. 다음은 실행의 예입니다.

    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. 전자 스톱워치의 비용이 점점 더 저렴해지고 정확해짐에 따라 그저 불가능할 정도로 정확한 시간 측정에 의문을 품게 될 것입니다. 프로그램 작성 초 단위로 지정된 기간을 입력으로 받아 시간, 분, 초로 표현됩니다. 예를 들면 다음과 같습니다.
    Number of seconds: 3662
    Hours: 1
    Minutes: 1
    Seconds: 2     
  4. 다음에서 프로그램을 작성하기 전에 분해를 진행하세요. 가능하면 항상 함수를 사용하여 체계적으로 구성된 프로그램을 만드세요.

  5. 다음에 대한 배너를 출력한다고 가정해 보겠습니다.

    "FREEZY BREEZE는 나무 세 개를 얼립니다."

    배너이기 때문에 글자가 상당히 커야 합니다.

    FFFFF
    F
    FFF
    F
    F
    
    EEEEE
    E
    EEE
    E
    EEEEE
    
    드림 기타

    좋은 문제 분해자로서 여러분은 아마도 기본 함수에 모든 cout을 넣으면 훨씬 더 효율적입니다. 함수에 넣습니다. 여기서는 'printE'를 함수 'printZ' 함수 등이 있습니다.

    단어 또는 구문의 배너를 생성하는 함수를 사용하여 프로그램 작성 겹쳐서 표시될 수 있습니다. 다음은 몇 가지 예입니다.

    FREEZY BREEZE MAKES FLEAS
    SNEEZE TWEETLE BEETLE PADDLE BATTLE
    SIX SICK CHICKS KICK
    SUE SEWS SUE'S SOCKS
    BEN BENDS BIM'S BROOM 
  6. '마법의 숫자'를 찾았습니다 문제: 사용자에게 3자리 숫자를 입력하도록 요청 첫 번째 숫자가 마지막 자리보다 큰 숫자입니다. 프로그램이 원래 숫자에서 반전을 뺍니다. 마지막으로, 결과 숫자를 역전하여 반전되지 않은 형태에 더합니다. 다음과 같이 출력하세요. 최종 결과입니다. 사용자가 입력한 원래 숫자는 정수여야 합니다. 유형 (세 자 아님). 인코더-디코더 아키텍처를 정수를 입력으로 사용하고 해당 숫자의 역을 반환합니다. 예:
    input number: 901
    reverse it: 109
    subtract: 901 - 109 = 792
    reverse it: 297
    add: 297 + 792 = 1089   
  7. 법률에 따라 식품 제조업체는 만료일을 명시해야 합니다. 그러나 법에 허점이 있습니다. 만료일을 특정 형식으로 지정할 수 있습니다. 따라서 스와힐리어 및 합법적이어야 합니다.

    랄프 네이더의 세 번째 사촌 Nadine은 자칭 Food Quality 스파이입니다. 그녀는 많은 식품 제조업체가 고객이 제품 유통기한을 알 수 없도록 있습니다.

    하지만 인코딩을 통해 식료품점은 유통기한을 파악하고 확신할 수 있습니다.

    많이 사용되는 인코딩 방법 중 하나는

    • 1월부터 12월까지의 월을 'A'로 인코딩 'L'까지
    • 날짜의 각 자릿수를 'Q'로 인코딩 'Z'까지
    • 연도를 'A'로 인코딩 'Z'까지 의미: 1부터 26까지 1995년에 추가되었습니다.

    나딘은 ARZM이라는 날짜가 붙은 빵 한 개를 발견했는데, 날짜를 결정하는 프로그램을 작성합니다.

  8. 이것은 유명한 카드 트릭에 대한 숫자 비유입니다. 사용자에게 입력하도록 요청 세 자리 숫자입니다. 숫자를 ABC라고 생각하세요. 여기서 A, B, C는 세 개의 자릿수). 이제 ABC, BCA, CAB는 11로 나누어집니다. 이 나머지를 X, Y라고 부르겠습니다. Z를 누릅니다. X+Y, Y+Z, Z+X로 더합니다. 합계 중 하나라도 홀수인 경우 증가 또는 11만큼 낮춥니다 (양수로 반환되는 연산). 20 미만 합계가 9인 경우 보고하고 프로세스를 중지하세요.) 마지막으로 각 합계를 반으로 나눕니다. 결과 숫자는 A, B, C입니다. 쓰기 프로그램을 만들 수 있습니다.

애플리케이션: 애니메이션으로 음악 시각화

소프트웨어 엔지니어는 다양하고 흥미롭고 혁신적인 애플리케이션을 만듭니다. 이 과정의 각 모듈에서는 엔지니어가 이 과정을 통해 AI와 관련된 모든 다양한 영역을 이해할 수 있도록 있습니다.

여기에서 흥미로운 한 가지를 음악을 시각화하기 위해 빌드된 애플리케이션입니다.