쉽게 풀어쓴 C 프로그래밍

Similar documents
Microsoft PowerPoint - additional01.ppt [호환 모드]

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - C++ 5 .pptx

C프로-3장c03逞풚

untitled

C++ Programming

설계란 무엇인가?

11장 포인터

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

C++ Programming

설계란 무엇인가?

슬라이드 1

Microsoft PowerPoint - Chapter 1-rev

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - [2009] 02.pptx

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint Template

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Chapter8.pptx

Microsoft PowerPoint - chap-11.pptx

PowerPoint 프레젠테이션

C 언어 프로그래밊 과제 풀이

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - 제11장 포인터

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - 제11장 포인터(강의)

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf("int, dou

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수

02장.배열과 클래스

Microsoft PowerPoint - 05장(함수) [호환 모드]

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Chapter_08.pptx

PowerPoint Template

Microsoft PowerPoint - ch07 - 포인터 pm0415

설계란 무엇인가?

중간고사

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

슬라이드 1

설계란 무엇인가?

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

C 프로그래밊 개요

Microsoft PowerPoint - ch07 - 포인터 pm0415

설계란 무엇인가?

Microsoft PowerPoint - Chapter 6.ppt

Microsoft PowerPoint - 9ÀÏ°_ÂüÁ¶ÀÚ.ppt

Microsoft PowerPoint - chap06-2pointer.ppt

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

Microsoft PowerPoint - Chap12-OOP.ppt

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

untitled

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint 프레젠테이션

Microsoft Word - FunctionCall

K&R2 Reference Manual 번역본

untitled

윤성우의 열혈 TCP/IP 소켓 프로그래밍

Programming hwp

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

C++ Programming

Visual C++ & OOP Fundamentals ( 2005/1/31~2005/2/4)

PowerPoint 프레젠테이션

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

PowerPoint Presentation

Microsoft PowerPoint - chap12-고급기능.pptx

chap10.PDF

080629_CFP °ø°³¿ë.hwp

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

Microsoft PowerPoint - Lesson2.pptx

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

1. 인라인함수 예 : x, y 값중최소값을반환하는매크로와함수작성 // 매크로로구현한경우 #define MIN(X, Y) ((X) < (Y)? (X) : (Y)) X, Y 각각을괄호 ( ) 안에넣는이유는? // 함수로구현한경우 cout << MIN(4, 5) << en

Microsoft PowerPoint - chap-03.pptx

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

금오공대 컴퓨터공학전공 강의자료

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

Microsoft PowerPoint - chap05-제어문.pptx

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

17장 클래스와 메소드

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

슬라이드 1

Microsoft PowerPoint - additional06.ppt [호환 모드]

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

OCW_C언어 기초

03장.스택.key

PowerPoint Presentation

Microsoft PowerPoint 세션.ppt

Transcription:

제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다.

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

함수란?

함수선언

함수호출

예제 #include <iostream> using namespace std; // 함수정의 int max(int x, int y) if (x>y) return x; else return y; int main() int n; n = max(2, 3); // 함수호출 cout << " 연산결과 = " << n << endl; return 0;

Lab: 함수만들기 정수의제곱값을구하는함수를만들어보자.

예제 #include <iostream> using namespace std; int square(int n) return(n*n); int main() int n; cout << " 제곱할정수를입력하시오 : "; cin >> n; cout << square(n) << endl; return 0;

함수원형정의 함수원형 (function prototype) 은함수의이름, 매개변수, 반환형을함수가정의되기전에미리한번써주는것이다. #include <stdio.h> int square(int n); int main() int result; result = square(5); printf("%d \n", result); int square(int n) return(n * n);

함수호출시인수전달방법 값으로호출하기 (call-by-value): 호출하는곳에서인수를전달할때인수의값이매개변수로복사되는방법이다. 참조로호출하기 (call-by-reference): 원본인수가함수에전달되는방법이다. 참조로호출하기 방식에서함수안에서매개변수는변경하면원본인수가변경된다.

값으로전달하기

참조로전달하기 참조자 (reference) 는변수의별명 int var = 10; int &ref = var;

Lab: swap() 함수만들기 swap(a, b) 와같이호출하면변수 a 와변수 b 의값을교환 int main() int a = 100, b = 200; printf("a=%d b=%d\n", a, b); swap(a, b); printf("a=%d b=%d\n", a, b); return 0;

Solution: #include <stdio.h> void swap(int& x, int& y) int tmp; tmp = x; x = y; y = tmp; int main() int a = 100, b = 200; printf("a=%d b=%d\n", a, b); swap(a, b); printf("a=%d b=%d\n", a, b); return 0;

중복함수 동일한이름의함수를여러개정의하는것을중복함수 (overloaded functions) 라고한다. // 정수값을제곱하는함수 int square(int i) return i*i; // 실수값을제곱하는함수 double square(double i) return i*i;

중복함수

예제 #include <iostream> using namespace std; int square(int i) cout << "square(int) 호출 " << endl; return i*i; double square(double i) cout << "square(double) 호출 " << endl; return i*i; int main() cout << square(10) << endl; cout << square(2.0) << endl; return 0;

Lab: 중복함수 정수, 실수, 문자를모두출력할수있는 print() 함수를중복함수로정의하고사용해보자.

예제 #include <iostream> using namespace std; void print(int i) cout << " 정수출력 : " << i << endl; void print(double f) cout << " 실수출력 : " << f << endl; void print(char c) cout << " 문자출력 : " << c << endl; int main() print(100); // 정수를출력하기위하여호출한다. print(3.14); // 정수를출력하기위하여호출한다. print('c'); // 문자를출력하기위하여호출한다. return 0;

디폴트인수 인수를전달하지않아도디폴트값을대신넣어주는기능을디폴트인수 (default argument) 라고한다. #include <iostream> using namespace std; // 문자 c 를 n 번반복하여화면에출력한다. void display(char c = '*', int n = 10) for (int i = 0; i < n; i++) cout << c; cout << endl;

#include <iostream> using namespace std; void display(char c = '*', int n = 10) for (int i = 0; i < n; i++) cout << c; cout << endl; int main() cout << " 아무런인수가전달되지않는경우 :\n"; display(); cout << "\n 첫번째인수만전달되는경우 :\n"; display('#'); cout << "\n 모든인수가전달되는경우 :\n"; display('#', 5); return 0;

실행결과

Lab: 디폴트매개변수실습하기 int main() cout << "sum(10, 15)=" << sum(10, 15) << endl; cout << "sum(10, 15, 25)=" << sum(10, 15, 25) << endl; cout << "sum(10, 15, 25, 30)=" << sum(10, 15, 25, 30) << endl; return 0;

예제 #include <iostream> using namespace std; int sum(int x, int y, int z = 0, int w = 0) return x + y + z + w; int main() cout << "sum(10, 15)=" << sum(10, 15) << endl; cout << "sum(10, 15, 25)=" << sum(10, 15, 25) << endl; cout << "sum(10, 15, 25, 30)=" << sum(10, 15, 25, 30) << endl; return 0;

인라인함수 함수이름앞에 inline 이붙으면컴파일러는함수를생성하지않고함수의코드를호출한곳에직접집어넣는다. // 실수값을제곱하는함수 inline double square(double i) return i*i;

문자열 string 클래스

string 객체 클래스와객체

string 클래스사용하기 #include <string> using namespace std; void main() string s; // string 객체 s 를생성한다. string s = "Hello World!"; // string 객체를생성하고초기화한다. string s "Hello World!" ; // string 객체를생성하고초기화한다.

문자열의결합 #include <string> using namespace std; void main() string subject = "Money"; string other = " has no value if it is not used"; string sentence = subject + other;

예제 #include <iostream> #include <string> using namespace std; int main() string s1 = "Slow", s2 = "steady"; string s3 = "the race."; string s4; s4 = s1 + " and " + s2 + " wins " + s3; cout << s4 << endl; return 0;

문자열의비교 #include <string> using namespace std; void main() string s1 = "Hello", s2 = "World"; if( s1 == s2 ) cout << " 동일한문자열입니다." << endl; else cout << " 동일한문자열이아닙니다." << endl; if( s1 > s2 ) cout << "s1 이앞이있습니다. " << endl; else cout << "s2 가앞이있습니다. " << endl;

예제 : 사용자로부터이름과주소를받아서친근하게인사하는프로그램을작성

예제 #include <iostream> #include <string> using namespace std; int main() string s1, addr; cout << " 이름을입력하시오 : "; cin >> s1; cin.ignore(); // 엔터키를없애기위하여필요하다. cout << " 주소를입력하시오 : "; getline(cin, addr); cout << addr << " 의 " << s1 << " 씨안녕하세요? " << endl; return 0;

string 클래스멤버함수사용

예제 문자열 "When in Rome, do as the Romans." 중에서 "Rome" 이몇번째위치에있는지를계산하는프로그램

예제 #include <iostream> #include <string> using namespace std; int main() string s="when in Rome, do as the Romans."; int index = s.find("rome"); cout << index << endl; return 0;

예제 사용자가입력한주민등록번호에서 - 문자를삭제하는프로그램을작성하여보자.

string 객체에서문자추출하기 #include <iostream> #include <string> using namespace std; int main() string s; cout << " 주민등록번호를입력하시오 : "; cin >> s; cout << "- 가제거된주민등록번호 : "; for (auto& c : s) if (c == '-') continue; cout << c; cout << endl; return 0;

문자열의배열 #include <iostream> #include <string> using namespace std; int main() string list[] = " 철수 ", " 영희 ", " 길동 " ; for (auto& x : list) cout << (x + " 야안녕!") << endl; return 0;

Lab: 해밍거리구하기 유전자를나타내는 2 개의문자열을받아서동일한위치에틀린글자가몇개나있는지를계산하는프로그램을작성해보자. 이것을해밍거리 (Hamming distance) 라고한다

#include <iostream> #include <string> using namespace std; string 객체에서문자추출하기 int main() string s1, s2; int count = 0; cout << "DNA1: "; cin >> s1; cout << "DNA2: "; cin >> s2; if (s1.length()!= s2.length()) cout << " 오류 : 길이가다름 " << endl; else for (int i = 0; i < s1.length(); i++) if (s1[i]!= s2[i]) count += 1; cout << " 해밍거리는 " << count << endl; return 0;

Lab: 행맨

solution #include <iostream> #include <string> using namespace std; int main() char ch; string solution; string list[] = "the", "c++", "programming", "language", ;

int n = rand() % 4; solution = list[n]; string 객체에서문자추출하기 string guess(solution.length(), '_'); while (true) cout << guess << endl; cout << " 글자를입력하시오 : "; cin >> ch; for (int i=0;i< solution.length();i++) if (ch == solution[i]) guess[i] = ch; if (solution == guess) cout << solution << endl; cout << " 성공하였습니다.!"; break; return 0;

Q & A