7장. 분기와 반복 01_ 분기 02_ 반복.

Slides:



Advertisements
Similar presentations
1.1 구조체란 1.2 중첩 구조체 1.3 구조체와 배열 1.4 구조체와 포인터 1.5 구조체와 함수 1.6 공용체와 열거형.
Advertisements

Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
1 구조체 윤 홍 란 컴퓨터 프로그래밍 2 구조체 정의  구조체란 ? o 서로 다른 형의 변수들을 하나로 묶어주는 mechanism. (cf. 배열 : 같은 형의 변수들을 하나로 묶어주는 mechanism) o 예 : 카드의.
4장 배열과 함수 한빛미디어(주).
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
C 5장. 제어문 #include <stdio.h> int main(void) { int num;
Chapter 7. 조건문.
제 9 장 구조체와 공용체.
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
자료 구조: Chapter 3 (2)구조체, 포인터
5장 배열 작성자 : 변재현.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
5장. 참조 타입.
제 3장. C보다 나은 C++ II.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
고급 선택 제어문과 반복문 Chapter 9 C에서의 다중 선택 제어문 선 검사 반복 구조와 for 문
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
2주차: 변수, 수식, Control Flow.
Chapter 07. 기본 함수 익히기.
예제로 배우는 Visual Basic 구구단 작성기로 익히는 반복문
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
11장. 1차원 배열.
C#.
3. while문 반복문의 종류 while 문 while( 조건식 )        문장;.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express Slide 1 (of 27)
JA A V W. 03.
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
에어 조건문.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
Choi Seong Yun 컴퓨터 프로그래밍 기초 #06 : 반복문 Choi Seong Yun
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
8주차: Strings, Arrays and Pointers
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
구조체 배열 실습: 평점이 최고인 학생의 정보를 출력하기
8장. 조건에 따른 흐름의 분기. 8장. 조건에 따른 흐름의 분기 8-1 흐름의 분기가 필요한 이유 상황에 따른 프로그램의 유연성 부여 그림 8-1.
[ 단원 04 ] 반복과 배열.
에어 PHP 입문.
Flow Diagram IV While.
7주차: Functions and Arrays
C++ 프로그래밍 기초 √ 원리를 알면 IT가 맛있다 3장. 연산자.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
Chapter 10 데이터 검색1.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
제어문Control Statements
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
13. 포인터와 배열! 함께 이해하기.
6 객체.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

7장. 분기와 반복 01_ 분기 02_ 반복

if/else를 사용한 조건 비교 미성년자를 판별하는 예 int age = 20; // 20 세 // 조건에 따라서 다른 문자열을 출력한다. if ( age <= 19) { cout << "미성년자입니다\n"; } else cout << "성인입니다\n";

else if를 사용한 조건문의 확장 19세인 사람을 별도로 처리하는 예 int age = 19; // 19 세 // 조건에 따라서 다른 문자열을 출력한다. if ( age <= 18) { cout << "미성년자입니다\n"; } else if ( age == 19 ) cout << "아쉽네요\n"; else cout << "성인입니다\n";

switch/case를 사용한 조건 비교 성적에 따라서 문자열을 출력하는 예 int score = 2; switch( score ) { case 0: cout << "밀려 쓰셨군요~\n"; break; case 1: cout << "조금 더 노력하세요~\n"; case 2: cout << "안타깝네요~\n"; case 3: cout << "멋있어요~\n"; }

switch/case에서의 break switch/case 명령 안에서 break를 사용하면 switch 블록 밖으로 실행의 흐름이 이동된다.

switch/case를 사용한 조건 비교 - 기타 모든 조건을 만족하지 않는 경우를 처리하기 위해서 default 를 사용할 수 있다. 할 일이 같은 경우에는 case를 붙여서 사용할 수 있다. switch( score ) { . default: cout << " 올바르지 않은 점수입니다!!\n "; } switch( score ) { case 0: case 1: case 2: cout << "열심히 하세요~\n"; break; case 3: cout << "멋있어요~\n"; default: cout << " 올바르지 않은 점수입니다!!\n "; }

삼항 연산자 삼항 연산자를 사용해서 간단한 if/else를 대체할 수 있다. = 삼항 연산자는 C++에서 유일하게 3개의 피연산자를 받는 연산자다. int a = 3; int b = 5; int c = a > b ? a : b; = if ( a > b ) c = a; else c = b;

goto를 사용한 무조건 분기 goto 를 사용해서 원하는 위치로 실행의 흐름을 이동할 수 있다. = 실행 결과 int main() { // ILoveYou 라고 찍힌 곳으로 이동한다. goto ILoveYou; // 이곳을 뛰어넘는지 실험 cout << "이 문자열을 출력되면 안됩니다.\n"; ILoveYou: cout << "여기는 ILoveYou 다음입니다.\n"; return 0; } =

while 을 사용한 반복 while 을 사용해서 1~10의 합을 구하는 예 실행 결과 int i = 1; // 1 부터 10까지 증가할 변수 int sum = 0; // 전체 합을 보관할 변수 // ‘i <= 10’ 을 만족하는 동안만 반복한다. while( i <= 10) { // 현재까지의 합에 i를 더한다. sum += i; // i에 1을 더한다. ++i; } cout << "현재 i의 값 = " << i << "\n"; cout << "1~10 까지의 합 = " << sum << "\n";

while 의 문법 괄호안의 조건식이 참(true)일 동안 중괄호 안쪽의 코드를 반복적으로 실행한다.

반복명령 안에서의 break while 블록 안에서 break 를 사용하면 while 블록 밖으로 실행의 흐름이 이동된다. 뒤에서 배우는 for, do while 블록 안에서도 같은 방식으로 사용할 수 있다.

for 를 사용한 반복 for 를 사용해서 1~10의 합을 구하는 예 실행 결과 int sum = 0; // 1~10까지 반복하면서 더한다. for (int i = 1; i <= 10; ++i) sum += i; // 현재까지의 합에 i를 더한다. cout << "현재 i의 값 = " << i << "\n"; cout << "1~10 까지의 합 = " << sum << "\n";

for 의 문법 괄호안에 순서대로 초기화 코드, 반복 조건, 증가 코드를 적는다. 초기화 코드는 처음 한 번만 실행한다. 매 반복이 끝날 때마다 반복 조건을 비교해서, 거짓(false)인 경우 반복을 종료한다. 매 반복이 끝날 때마다 증가 코드를 실행한다.

continue를 사용해서 반복 건너뛰기 5를 제외한 1~10의 합 구하는 예 실행 결과 int sum = 0; // 1~10까지 반복하면서 더한다. for (int i = 1; i <= 10; ++i) { // i가 5인 경우는 그냥 넘어간다. if ( 5 == i ) continue; sum += i; // 현재까지의 합에 i를 더한다. } cout << "현재 i의 값 = " << i << "\n"; cout << "1~4, 5~10 까지의 합 = " << sum << "\n";

반복 명령을 중첩해서 사용하기 중첩된 반복을 사용해서 구구단을 계산하는 예 실행 결과 for (int i = 2; i <= 9; ++i) { cout << i << " 단 --------\n"; for (int j = 1; j <= 9; ++j) cout << i << " x " << j << " = " << i * j << "\n"; }

do while 을 사용한 반복 do while 사용해서 1~10의 합을 구하는 예 실행 결과 int i = 1; // 1 부터 10까지 증가할 변수 int sum = 0; // 전체 합을 보관할 변수 do { sum += i; // 현재까지의 합에 i를 더한다. ++i; // i에 1을 더한다. } while ( i <= 10); cout << "현재 i의 값 = " << i << "\n"; cout << "1~10 까지의 합 = " << sum << "\n";

9장. 배열 01_ 배열의 기본 02_ 배열에서의 문자열 사용

배열의 정의 5명의 국어 점수를 보관할 수 있는 배열을 정의해보자. 배열을 정의할 때는 원소의 타입과 개수를 지정해준다. // int 타입의 배열 정의 int kor_scores[5]; // 임의의 값을 넣어본다. kor_scores[0] = 100; kor_scores[1] = 88; kor_scores[2] = 92; kor_scores[3] = 40; kor_scores[4] = 76;

배열의 원소에 접근하기 배열의 원소에 값을 읽거나 변경시키기 위해서는 다음과 같은 문법을 사용한다.

배열의 구조 배열의 원소들은 메모리상에 나란히 붙어서 위치한다(Linear).

배열의 원소 탐색하기 반복 명령을 사용해서 배열의 모든 원소의 값을 출력하는 예 실행 결과 int kor_scores[5]; for (int i = 0; i < 5; ++i) { cout << i << " 번째 원소 = " << kor_scores[i] << "\n"; }

배열의 초기화 배열을 정의하는 동시에 모든 원소들을 초기화 할 수 있다. = 배열을 초기화하는 다양한 방법 // 배열을 정의하면서 초기화 시킨다. int kor_scores[5] = {100, 88, 92, 40, 76}; = int kor_scores[5]; kor_scores[0] = 100; kor_scores[1] = 88; kor_scores[2] = 92; kor_scores[3] = 40; kor_scores[4] = 76; // 첫번째 원소뿐만 아니라 모든 원소들의 값이 0으로 채워진다. int kor_scores[5] = {0}; // 이 배열의 원소의 크기는 자동적으로 5가 된다. int kor_scores[] = {100, 88, 92, 40, 75};

배열의 크기 (1) 배열의 크기는 ‘원소의 크기’ x ‘원소의 개수’ 가 된다.

배열의 크기 (2) 배열의 크기를 확인하는 예 실행 결과 char cArray[3] = { 'A', 'B', 'C' }; int iArray[4] = { 100, 200, 300, 400}; // cArray의 크기에 대한 조사 cout << "sizeof(cArray) = " << sizeof(cArray) << " (Bytes)\n"; cout << "sizeof(cArray[0]) = " << sizeof(cArray[0]) << " (Bytes)\n"; cout << "원소의 개수 = " << sizeof(cArray) / sizeof(cArray[0]) << "\n\n"; // iArray의 크기에 대한 조사 cout << "sizeof(iArray) = " << sizeof(iArray) << " (Bytes)\n"; cout << "sizeof(iArray[0]) = " << sizeof(iArray[0]) << " (Bytes)\n"; cout << "원소의 개수 = " << sizeof(iArray) / sizeof(iArray[0]) << "\n\n";

문자열(Strings) 문자열이란 널문자(Null)로 끝나는 문자의 배열을 말한다. 널문자란 아스키(Ascii) 코드 값이 0인 문자를 말한다. // 다음의 두 가지 방법으로 널문자를 표현할 수 있다. char a = ‘\0’; // a에 널문자를 대입한다. char b = 0; // b에 널문자를 대입한다.

문자의 배열 vs 문자열 (1) 문자의 배열과 문자열의 차이점을 보여주는 예 실행 결과 // 그냥 문자의 배열을 만든다. char ThisIsNotString[] = { 'H', 'e', 'l', 'l', 'o' }; // 문자열을 만든다. char ThisIsString[] = { 'H', 'e', 'l', 'l', 'o', '\0'}; // 두 배열을 cout 객체로 보낸다. cout << ThisIsNotString << "\n"; cout << ThisIsString << "\n";

문자의 배열 vs 문자열 (2) 이전 예제에서의 메모리 구조

문자열 상수(String Literals) 큰 따옴표를 사용해서 만드는 문자열 상수에는 자동적으로 널문자가 추가된다. 실행 결과 char cArray1[] = "ABCDE"; char cArray2[] = { 'A', 'B', 'C', 'D', 'E', 0 }; // 두 배열의 크기를 비교해 본다. cout << "sizeof(cArray1) = " << sizeof(cArray1) << " (Bytes)\n"; cout << "sizeof(cArray2) = " << sizeof(cArray2) << " (Bytes)\n"; // 두 배열의 4, 5 번째 원소를 출력해본다. cout << cArray1[4] << (int)cArray1[5] << "\n"; cout << cArray2[4] << (int)cArray2[5] << "\n";

10장. 구조체 01_ 구조체의 기본

구조체의 정의 학생의 정보를 보관하기 위한 구조체를 정의해보자. 구조체를 정의하는 방법 // 'StudentInfo'라는 이름의 구조체를 정의한다. struct StudentInfo { char bloodType; // 혈액형 int stdNumber; // 학번 float grade; // 평점 };

구조체 변수의 정의 두 명의 학생 정보를 보관하기 위해서 두 개의 구조체 변수를 정의해보자. 메모리 구조 // StdudentInfo 구조체 타입의 변수 2개를 정의한다. StudentInfo si1; StudentInfo si2;

구조체 vs 구조체 변수 구조체는 구조체 변수의 모양(layout)을 명시하는 설계도와 같은 역할을 한다. ex) 앞에서 본 구조체 정의의 의미 “컴퓨터야, 앞으로 StudentInfo 라는 구조체의 모양(layout)에 대해서 알려줄게. 그 구주체는 bloodType, stdNumber, grade라는 변수가 들어갈거야” 구조체 변수를 정의할 때 실제로 정보를 보관할 수 있는 공간이 마련된다. ex) 앞에서 본 구조체 변수 정의의 의미 “컴퓨터야, 앞에서 정의한 StudentInfo 라는 구조체 알지? 그 때 알려준 모양(layout)으로 변수를 하나 만들어다오”

멤버에 접근하기 구조체에 포함되는 각 변수들을 멤버 혹은 멤버변수라고 부른다. 멤버 변수의 값을 얻어오거나 변경하는 방법 ex) StudentInfo 구조체의 멤버 변수들 bloodType, stdNumber, grade 멤버 변수의 값을 얻어오거나 변경하는 방법 StudentInfo si1; si1.bloodType = 'O'; si1.stdNumber = 20031128; si1.grade = 3.5f;

구조체의 초기화 구조체 변수를 정의함과 동시에 모든 멤버들을 초기화할 수 있다. struct StudentInfo { char bloodType; // 혈액형 int stdNumber; // 학번 float grade; // 평점 }; int main() // StudentInfo 구조체 타입의 변수 2개를 정의한다. StudentInfo si1 = { 'O', 20031128, 3.5f }; StudentInfo si2 = { 'A', 19961219, 2.3f }; .

구조체의 대입 구조체 변수끼리 대입을 하면 각 멤버 변수들이 1:1로 복사된다. 실행 결과 struct Point { int x; // x 좌표 int y; // y 좌표 }; Point pt1 = { 30, 50}; Point pt2; pt2 = pt1; // pt1을 pt2에 대입한다. cout << "pt1 = ( " << pt1.x << ", " << pt1.y << ")\n"; cout << "pt2 = ( " << pt2.x << ", " << pt2.y << ")\n";

구조체 정의 2 구조체를 정의하는 동시에 구조체 변수를 정의할 수 있다. 이런 경우에는 구조체의 이름을 생략할 수 있다. struct Point { int x; int y; } pt1 = { 30, 50}, pt2; struct // 구조체의 이름 생략 { int x; int y; } pt1 = { 30, 50}, pt2;