제2장 제어구조와 배열 if-else 문에 대하여 학습한다. 중첩 if-else 문에 대하여 학습한다.

Slides:



Advertisements
Similar presentations
조건문, 함수 정대진 ( ) C Programming -3 일차 ITA 8 월 강의.
Advertisements

YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
어서와 Java는 처음이지! 제3장선택과 반복.
Vision System Lab, Sang-Hun Han
제 3 장 변수와 자료형.
명품 C++ 프로그래밍 3장. 클래스와 객체.
명품 C++ 8장 상속.
Power C++ 제6장 포인터와 문자열.
배열, 포인터 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
C++ Espresso 제3장 배열과 포인터.
C++ Espresso 제3장 배열과 포인터.
C++ Espresso 제1장 기초 사항.
C++ Espresso 제2장 제어문과 함수.
어서와 Java는 처음이지! 제4장 배열.
강좌명 : C++프로그래밍 (C++ Programming)
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
제6장 객체배열과 벡터 객체 배열을 이해한다. 벡터(vector) 클래스를 사용할 수 있다.
명품 C++ 13장 예외 처리와 C 언어와의 링크 지정.
8. 객체와 클래스 (기본).
제12장 다형성과 가상함수 다형성의 개념을 이해한다. 상향 형변환의 개념을 이해한다. 가상 함수의 개념을 이해한다.
C++ Espresso 제9장 다형성.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
제5장 제어명령
10장 템플릿과 표준 템플릿 라이브러리(STL)
제15장 STL과 람다식 STL의 개념을 이해하고 사용할 수 있다. 람다식을 이해하고 사용할 수 있다.
7. while 문의 흐름 제어.
명품 Java Programming.
명품 C++ 7장 프렌드와 연산자 중복.
18장. 헤더 파일과 구현 파일 01_ 헤더 파일과 구현 파일의 사용.
C ++ 프로그래밍 시작.
C언어 프로그래밍의 이해 Ch05. 명령문 Phylogenetic: 계통, 발생(학)의.
쉽게 풀어쓴 C언어 Express 제10장 배열 C Express.
스택(Stack) 김진수
제 3 장 상수와 변수
17장. 문자열 01_ 문자열 사용의 기본 02_ 문자열의 사용.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
4장 제어문 선택문: if 문, if – else 문, switch 문
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
adopted from KNK C Programming : A Modern Approach
개정판 누구나 즐기는 C언어 콘서트 제6장 반복문 출처: pixabay.
제5장 생성자와 접근제어 객체 지향 기법을 이해한다. 클래스를 작성할 수 있다. 클래스에서 객체를 생성할 수 있다.
어서와 Java는 처음이지! 제4장 배열 IT응용시스템공학과 김형진 교수.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
Chapter 1 C와는 다른 C++. 최호성.
4. 고급변수 사용 : 포인터와 관련하여 메모리 바라보기
제어문 & 반복문 C스터디 2주차.
4장 - PHP의 표현식과 흐름 제어-.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Java의 정석 제 4 장 조건문과 반복문 Java 정석 남궁성 강의
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
자바 5.0 프로그래밍.
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
루프와 카운트 Looping and counting
제8장 포인터와 동적객체 생성 포인터의 개념을 이해한다. 포인터와 관련된 연산을 이해한다.
5. 논리적 자료표현 : 구조체.
C언어 프로그래밍의 이해 Ch05. 명령문.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
제 11장. 템플릿과 STL 학기 프로그래밍언어및실습 (C++).
03. 메모리 관리 C++ 프로그램에서 다룰 수 있는 메모리의 종류
C++ Espresso 제13장 입출력과 파일처리.
포인터와 배열 조 병 규 한 국 교 통 대 학 교 SQ Lab..
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
10장 템플릿과 표준 템플릿 라이브러리(STL)
어서와 C언어는 처음이지 제16장.
개정판 누구나 즐기는 C언어 콘서트 제10장 문자열 출처: pixabay.
printf("Global Korea\n");
어서와 C언어는 처음이지 제22장.
PHP 기초문법 PHP를 공부하는데 있어 가장 기초가 되는 PHP기초문법에 대해서 배워 봅니다.
Presentation transcript:

제2장 제어구조와 배열 if-else 문에 대하여 학습한다. 중첩 if-else 문에 대하여 학습한다. while 문에 대하여 학습한다. for 문에 대하여 학습한다. 배열에 대하여 학습한다.

이번 장에서 만들어볼 프로그램

제어구조

관계연산자

예제 #include <iostream> using namespace std; int main() { bool b; cout << std::boolalpha; cout << b << endl; return 0; }

논리연산자

if-else문

예제 하나의 예로 사용자로부터 받은 두 개의 정수 중에서 더 큰 수를 찾는 프로그램을 작성하여 보자.

예제 #include <iostream> using namespace std; int main() { int x, y; cout << "x값을 입력하시오: "; // 입력 안내 출력 cin >> x; cout << "y값을 입력하시오: "; // 입력 안내 출력 cin >> y; if (x > y) cout << "x가 y보다 큽니다. " << endl; else cout << "y가 x보다 큽니다. " << endl; return 0; }

중첩 if-else문

예제 변수 x의 값이 양수, 음수, 0인지를 검사하는 코드는 다음 과 같다. if (x > 0) cout << "x는 양수입니다." << endl; else if (x < 0) cout << "x는 음수입니다." << endl; else cout << "x는 0입니다." << endl;

예제 사용자로부터 나이를 받아서 어린이, 청소년, 성인을 구 분하는 프로그램을 작성하여 보자.

예제 #include <iostream> using namespace std; int main() { int age; // 나이 cout << "나이를 입력하시오: "; cin >> age; if (age <= 12) cout << "어린이입니다." << endl; else if (age <= 19) cout << "청소년입니다." << endl; else cout << "성인입니다." << endl; return 0; }

Lab: 비밀 코드 맞추기 컴퓨터가 숨기고 있는 비밀 코드를 추측하는 게임을 작성 해보자. 비밀 코드는 a부터 z 사이의 문자이다.

Solution #include <iostream> using namespace std; int main() { char secret_code = 'h'; cout << "비밀코드를 맞춰보세요: " ; char code; cin >> code; if (code < secret_code) cout << code << "뒤에 있음" << endl; else if (code > secret_code) cout << code << "앞에 있음" << endl; else cout << "맞추었습니다." << endl; return 0; }

Lab: 세 개의 정수 중에서 큰 수 찾기 사용자로부터 받은 3개의 정수 중에서 가장 큰 수를 찾는 프로그램을 작성해보자.

Solution #include <iostream> using namespace std; int main() { int a, b, c, largest; cout << "3개의 정수를 입력하시오: "; cin >> a >> b >> c; if (a > b && a > c) largest = a; else if (b > a && b > c) largest = b; else largest = c; cout << "가장 큰 정수는" << largest << endl; return 0; }

switch문 int number; cout << "숫자를 입력하시오:"; cin >> number; switch (number) { case 0: cout << "zero\n"; break; case 1: cout << "one\n"; case 2: cout << "two\n"; default: cout << "many\n"; }

while 루프

카운터 예제 카운트다운 예제를 만들어보자.

예제 #include <iostream> using namespace std; int main() { int n = 10; while (n > 0) { cout << n << " "; n--; } cout << "발사! \n";

구구단 예제 반복문을 사용하여서 구구단을 출력하여 보자.

예제 #include <iostream> using namespace std; int main() { int n; int i = 1; cout << "구구단 중에서 출력하고 싶은 단을 입력하시오: "; cin >> n; while (i <= 9) { cout << n << "*" << i << "=" << n * i << endl; i++; } return 0;

do-while루프

예제 사용자가 “종료”를 입력하기 전까지는 사용자의 입력을 그대로 화면에 출력하는 프로그램을 작성해 보자.

예제 #include <iostream> #include <string> using namespace std; int main() { string str; do { cout << "문자열을 입력하시오: "; getline(cin, str); cout << "사용자의 입력: " << str << '\n'; } while (str != "종료"); return 0; }

for루프

예제 1부터 10까지의 정수를 더하여 합을 구하는 프로그램을 살펴보자.

예제 #include <iostream> using namespace std; int main() { int sum = 0; for (int i = 1; i <= 10; i++) sum += i; cout << "1부터 10까지의 정수의 합 = " << sum << endl; return 0; }

예제 팩토리얼 값을 계산하여 보자.

예제 #include <iostream> using namespace std; int main() { long fact = 1; int n; cout << "정수를 입력하시요:"; cin >> n; for (int i = 1; i <= n; i++) fact = fact * i; cout << n << "!은 " << fact << "입니다.\n"; return 0; }

break 문장 예제 #include <iostream> using namespace std; int main() { for (int i = 1; i < 10; i++) cout << i << " "; if (i == 4) break; } return 0;

continue 문장 예제 #include <iostream> using namespace std; int main() { int i = 0; do { i++; cout << "continue 문장 전에 있는 문장" << endl; continue; cout << "continue 문장 후에 있는 문장" << endl; } while (i < 3); return 0; }

Lab: 자음과 모음 개수 세기 사용자로부터 영문자를 받아서 자음과 모음의 개수를 세 는 프로그램을 작성하여 보자.

Solution #include <iostream> using namespace std; int main() { int vowel = 0, consonant = 0; char ch; cout << "영문자를 입력하고 콘트롤-Z를 치세요" << endl; while (cin >> ch) { switch (ch) { case 'a': case 'i': case 'e': case 'o': case 'u': vowel++; break; default: consonant++; break; } cout << "모음: " << vowel << endl; cout << "자음: " << consonant << endl; return 0;

Lab: 숫자 맞추기 게임 프로그램은 1부터 100사이의 정수를 저장하고 있고 사용 자는 질문을 통하여 그 정수를 알아맞히려고 노력한다.

Solution // 반복을 이용한 게임 프로그램 #include <iostream> // 반복을 이용한 게임 프로그램 #include <iostream> #include <time.h> using namespace std; int main() { srand(time(NULL)); int answer = rand() %100; // 정답 int guess; int tries = 0; // 반복 구조

Solution do { cout << "정답을 추측하여 보시오: "; cin >> guess; tries++; if (guess >answer) cout << "제시한 정수가 높습니다.\n"; if (guess <answer) cout << "제시한 정수가 낮습니다.\n"; } while (guess != answer); cout << "축하합니다. 시도 횟수=" << tries << endl; return 0; }

Lab: 산수 문제 자동 출제 초등학교 학생들을 위한 산수 문제를 자동으로 출제하는 프로그램을 작성해보자.

Solution #include <iostream> #include <stdlib.h> using namespace std; int main() { int i, ans; cout << "산수 문제를 자동으로 출제합니다." << endl; while (true) { int x = rand() % 100; int y = rand() % 100; cout << x << "+" << y << "="; cin >> ans; if (x + y == ans) { cout << "맞았습니다." << endl; break; } else cout << "틀렸습니다." << endl; return 0; Solution

배열 배열(array)은 같은 종류의 데이터들이 순차적으로 메모 리에 저장되는 자료 구조이다

배열 선언

예제 학생들의 성적을 입력받아서 평균을 구하는 프로그램을 배열을 이용하여서 작성하여 보자.

예제 #include <iostream> using namespace std; int main() { const int STUDENTS = 10; int scores[STUDENTS]; int sum = 0; int i, average; for (i = 0; i < STUDENTS; i++) { cout << "학생들의 성적을 입력하시오: "; cin >> scores[i]; } for (i = 0; i < STUDENTS; i++) sum += scores[i]; average = sum / STUDENTS; cout << "성적 평균= " << average << endl; return 0;

배열의 초기화 int sales[5] = { 100, 200, 300, 400, 500 };

보편적 초기화 모든 초기화에 중괄호 { ... }을 사용한다. int scores[] { 10, 20, 30 }; int a{ 0 }; // int a=0;과 동일하다. string s{ "hello" }; // string s="hello"; vector<string> list{ "alpha", "beta", "gamma" }; // 벡터 생성시 초기화

범위-기반 for루프 이 형식은 배열 안에 들어 있는 모든 값에 대하여 반복할 때 사용된다.

예제 #include <iostream> #include <string> using namespace std; int main() { int list[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int i : list) { cout << i << " "; } cout << endl;

참조자 버전 for (int& i : list) { cout << i << " "; } for (auto& i : list) { cout << i << " "; }

배열 요소의 변경이 필요하다면 반드시 참조자를 사용하여야 한다. 예제 #include <iostream> #include <string> using namespace std; int main() { int list[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int& i : list) { i = i*i; } for (int i : list) { cout << i << " "; 배열 요소의 변경이 필요하다면 반드시 참조자를 사용하여야 한다.

Lab: 배열에서 최대값 찾기 크기가 100인 배열을 1부터 100 사이의 난수로 채우고 배열 요소 중에서 최대값을 찾아보자

Solution #include <iostream> #include <stdlib.h> using namespace std; int main() { int list[10]; int max; for (int& elem : list) { elem = rand() % 100 + 1; cout << elem << " "; } cout << endl; max = list[0]; for (auto& elem : list) { if (elem > max) max = elem; cout << "최대값=" << max << endl; return 0;

2차원 배열 배열 요소들이 2차원으로 나열된 배열

2차원 배열의 선언 int s[3][5];

2차원 배열의 초기화 int s[3][5] = { { 1, 2, 3, 4, 5 }, // 첫 번째 행의 요소들의 초기값 { 1, 2, 3, 4, 5 }, // 첫 번째 행의 요소들의 초기값 { 2, 4, 6, 8, 10 }, // 두 번째 행의 요소들의 초기값 { 3, 6, 9, 12, 15 } // 세 번째 행의 요소들의 초기값 };

예제 구구단의 저장

예제 #include <iostream> using namespace std; #define WIDTH 9 #define HEIGHT 3 int main() { int table[HEIGHT][WIDTH]; int r, c; for (r = 0; r < HEIGHT; r++) for (c = 0; c < WIDTH; c++) table[r][c] = (r + 1)*(c + 1); for (r = 0; r < HEIGHT; r++) { for (c = 0; c < WIDTH; c++) { cout << table[r][c] << ", "; } cout << endl;

Lab: Tic-Tac-Toe 게임 Tic-Tac-Toe 게임은 2명의 경기자가 오른쪽과 같은 보드 를 이용하여서 번갈아가며 O와 X를 놓는 게임이다.

예제 #include <iostream> using namespace std; int main() { char board[3][3]; int x, y, k, i; // 보드를 초기화한다. for (x = 0; x < 3; x++) for (y = 0; y < 3; y++) board[x][y] = ' '; // 사용자로부터 위치를 받아서 보드에 표시한다. for (k = 0; k < 9; k++) { cout << "(x, y) 좌표: "; cin >> x >> y; board[x][y] = (k % 2 == 0) ? 'X' : 'O';

예제 // 보드를 화면에 그린다. for (i = 0; i < 3; i++) { cout << "---|---|---" << endl; cout << board[i][0] << " | " << board[i][1] << " | " << board[i][2] << endl; } return 0;

Q & A