쉽게 풀어쓴 C 프로그래밍

Similar documents
쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

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

슬라이드 1

Microsoft PowerPoint - Java7.pptx

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

슬라이드 1

PowerPoint 프레젠테이션

Microsoft PowerPoint - Chapter8.pptx

설계란 무엇인가?

TEST BANK & SOLUTION

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

Microsoft PowerPoint - chap-03.pptx

윈도우즈프로그래밍(1)

11장 포인터

쉽게 풀어쓴 C 프로그래밍

Microsoft Word - FunctionCall

Microsoft PowerPoint - chap05-제어문.pptx

중간고사

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

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

쉽게 풀어쓴 C 프로그래밍

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

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

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

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - Lesson2.pptx

슬라이드 1

슬라이드 1

3장 함수

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

chap x: G입력

쉽게 풀어쓴 C 프로그래밍

untitled

Microsoft PowerPoint - [2009] 02.pptx

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

Microsoft PowerPoint 세션.ppt

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

8장 문자열

Microsoft PowerPoint - chap-09.pptx

17장 클래스와 메소드

쉽게 풀어쓴 C 프로그래밍

Java ...

Microsoft PowerPoint - chap06-5 [호환 모드]

C 프로그래밊 개요

PowerPoint 프레젠테이션

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

- 클래스를이용한 2개의계산기구현 class Calculator: def init (self): self.result = 0 def adder(self, num): self.result += num return self.result cal1 = Calculator()

Microsoft PowerPoint - chap08-1 [호환 모드]

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

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

OCaml

쉽게 풀어쓴 C 프로그래밍

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

PowerPoint Template

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

슬라이드 1

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

Microsoft Word _mentor_conf_output5.docx

PowerPoint Presentation

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

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

Microsoft PowerPoint - C++ 5 .pptx

PowerPoint 프레젠테이션

슬라이드 1

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

Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구

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

Microsoft PowerPoint Python-Function.pptx

Data Structure

컴파일러

<4D F736F F F696E74202D20C1A639C0E520C7D4BCF6BFCDBAAFBCF6>

쉽게 풀어쓴 C 프로그래밍

OCW_C언어 기초

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

Lab #4 - 화씨변환기 (fahrenheit_converter) Copyright 2015 document created by Introduction 4 주차강의 Lab Assignment 입니다. 이번 lab 은더짧고더

Tcl의 문법

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap-11.pptx

PowerPoint 프레젠테이션

Microsoft Word - ExecutionStack

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Python과 함께 배우는 신호 해석 제 5 강. 복소수 연산 및 Python을 이용한 복소수 연산 (제 2 장. 복소수 기초)

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

PowerPoint 프레젠테이션

슬라이드 1

Microsoft PowerPoint - 제11장 포인터

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

쉽게

PowerPoint Presentation

PowerPoint 프레젠테이션

Lab 3. 실습문제 (Single linked list)_해답.hwp

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap12-고급기능.pptx

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

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

Transcription:

함수 (function) 는특정작업을수행하는명령어들의모음에이름을붙인것 함수는작업에필요한데이터를전달받을수있으며, 작업이완료된후에는작업의결과를호출자에게반환할수있다.

print() input() abs(), 함수안의명령어들을실행하려면함수를호출 (call) 하면된다. >>> value = abs(-100) >>> value 100

>>>def say_hello(name): print(" 안녕, ", name); >>>say_hello(" 철수 ") 안녕, 철수 >>>def say_hello(name, msg): print(" 안녕, ", name, " 야, ", msg); >>>name=" 철수 " >>>msg=" 어서집에오너라 " >>>say_hello(name, msg) 안녕, 철수야, 어서집에오너라

>>>def get_sum(start, end) : sum=0 for i in range(start, end+1) : sum += i return sum >>>value = get_sum(1, 10) >>>print(value) 55

프로그램안에서중복된코드를제거한다. 복잡한프로그래밍작업을더간단한작업들로분해할수있다 함수는한번만들어지면다른프로그램에서도재사용될수있다. 함수를사용하면가독성이증대되고, 유지관리도쉬워진다.

함수의목적을설명하는동사또는동사 + 명사를사용 square(side) compute_average(list) set_cursor_type(c) // 정수를제곱하는함수 // 평균을구하는함수 // 커서의타입을설정하는함수

함수를사용하려면함수를호출 (call) 하여야한다.

def get_sum(start, end) : sum=0 for i in range(start, end+1) : sum += i return sum print( get_sum(1, 10)) print( get_sum(1, 20)) 55 210

정수를입력받아서제곱한값을반환하는함수를만들어보자.

def square(n): return(n*n) print(square(10)) 100

두개의정수가주어지면두수중에서더큰수를찾아서이것을반환하는함수를만들어보자.

def get_max(x, y): if( x > y ): return x else: return y print(get_max(10, 20)) 20

정수의거듭제곱값을계산하여반환하는함수를작성하여보자. ( 파이썬에는 ** 연산자가있지만 )

def power(x, y): result = 1 for i in range(y): result = result * x return result print(power(10, 2)) 100

파이썬인터프리터는함수가정의되면함수안의문장들은즉시실행하지않는다. 함수정의가아닌문장들은즉시실행하게된다. print(power(10, 2)) def power(x, y): result = 1 for i in range(y): result = result * x return result 무엇이문제인가?

def main(): print(power(10, 2)) def power(x, y): result = 1 for i in range(y): result = result * x return result main() 이런형태는가능하다!

생일축하메시지를출력하는함수 happybirthday() 를작성해보자. 생일축하합니다! 생일축하합니다! 사랑하는친구의생일축하합니다!

def happybirthday(): print(" 생일축하합니다!") print(" 생일축하합니다!") print(" 사랑하는친구의 ", end=" ") print(" 생일축하합니다!") happybirthday()

섭씨온도를화씨온도로변환하여반환하는함수 FtoC() 를작성하고테스트하라. 화씨온도를입력하시오 : 32.0 0.0

# 함수가여기서정의된다. def FtoC(temp_f): temp_c = (5.0 * (temp_f - 32.0)) / 9.0; return temp_c; temp_f = float(input(" 화씨온도를입력하시오 : ")) # FtoC() 함수를호출한다. print(ftoc(temp_f))

여기서는소수를판별하는함수 is_prime() 을작성하여사용하여보자. 정수를입력하시오 : 101 True

def is_prime(n): for i in range(2, n): if ( n%i == 0 ): return False return True n = int(input(" 정수를입력하시오 : ")) print(is_prime(n))

인수 (argument) 는호출프로그램에의하여함수에실제로전달되는값이다. 매개변수 (parameter) 는이값을전달받는변수이다.

반환값 (return value) 은함수가호출한곳으로반환하는작업의결과값이다.

구의부피를계산하는함수 spherevolume() 을작성하여보자. 반지름이 r 인구의부피는다음과같다. 구의반지름을입력하시오 : 10.0 4188.790204786391

import math def spherevolume(radius): volume = (4.0 / 3.0) * math.pi * radius * radius * radius return volume; radius = float(input(' 구의반지름을입력하시오 : ')) print(spherevolume(radius))

일회용패스워드생성기를이용하여서 3 개의패스워드를생성하여출력하는프로그램을작성해보자. q546zv 1kvkss b3vrmi

import random def genpass(): alphabet = "abcdefghijklmnopqrstuvwxyz0123456789" password = "" print(genpass()) print(genpass()) print(genpass()) for i in range(6): index = random.randrange(len(alphabet)) password = password + alphabet[index] return password

파이썬에서는함수의매개변수가기본값을가질수있다. 이것을디폴트인수 (default argument) 라고한다. def greet(name, msg=" 별일없죠?"): print(" 안녕 ", name + ', ' + msg) greet(" 영희 ") 안녕영희, 별일없죠?

인수들이위치가아니고키워드에의하여함수로전달되는방식 >>> def calc(x, y, z): return x+y+z >>> calc(10, 20, 30) 60 >>> calc(x=10, y=20, z=30) 60 >>> calc(y=20, x=10, z=30) 60

사칙연산을수행하는 4 개의함수 (add(), sub(), mul(), div()) 를작성한다. 이들함수를이용하여 10+20*30 을계산하여보자. 함수를호출할때키워드인수를사용하여호출해보자. 610

def add(a, b): return a + b def sub(a, b): return a - b def mul(a, b): return a * b def div(a, b): return a / b r1 = mul(a=20, b=30) r2 = add(a=10, b=r1) print(r2)

섭씨온도를화씨온도로, 또그반대로변환하는프로그램을작성하여보자. 'c' 섭씨온도에서화씨온도로변환 'f' 화씨온도에서섭씨온도로변환 'q' 종료메뉴에서선택하세요.c 섭씨온도 : 100 화씨온도 : 212.0 'c' 섭씨온도에서화씨온도로변환 'f' 화씨온도에서섭씨온도로변환 'q' 종료메뉴에서선택하세요.

def printoptions(): print( " 'c' 섭씨온도에서화씨온도로변환 ") print( " 'f' 화씨온도에서섭씨온도로변환 ") print( " 'q' 종료 ") def C2F(c_temp): return 9.0 / 5.0 * c_temp + 32 def F2C(f_temp): return (f_temp - 32.0) * 5.0 / 9.0 printoptions() choice = input(" 메뉴에서선택하세요.") while choice!= "q": if choice == "c": temp = float( input(" 섭씨온도 : ")) print (" 화씨온도 :", C2F(temp)) elif choice == "f": temp = float(input(" 화씨온도 : ")) print (" 섭씨온도 :", F2C(temp)) printoptions() choice = input(" 메뉴에서선택하세요.")

함수를호출할때, 변수를전달하는 2 가지방법 값에의한호출 (call-by-value) 참조에의한호출

def modify1(s): s += "To You" msg = "Happy Birthday" print("msg=", msg) modify1(msg) print("msg=", msg) msg= Happy Birthday msg= Happy Birthday

def modify2(li): li += [100, 200] list = [1, 2, 3, 4, 5] print(list) modify2(list) print(list) [1, 2, 3, 4, 5] [1, 2, 3, 4, 5, 100, 200]

def sub(): s = " 바나나가좋음!" print(s) sub() 바나나가좋음!

def sub(): print(s) s = " 사과가좋음!" sub() 사과가좋음!

def sub(): s = " 바나나가좋음!" print(s) s = " 사과가좋음!" sub() print(s) 전역변수를사용하는것이아님! 바나나가좋음! 사과가좋음!

def sub(): global s print(s) s = " 바나나가좋음!" print(s) s = " 사과가좋음!" sub() print(s) 사과가좋음! 바나나가좋음! 바나나가좋음!

def sub(x, y): global a a = 7 x,y = y,x b = 3 print(a, b, x, y) a,b,x,y = 1,2,3,4 sub(x, y) print(a, b, x, y) 7 3 4 3 7 2 3 4

다음프로그램의실행결과는어떻게될까? # 함수가정의된다. def sub( mylist ): # 리스트가함수로전달된다. mylist = [1, 2, 3, 4] # 새로운리스트가매개변수로할당된다. print (" 함수내부에서의 mylist: ", mylist) return # 여기서 sub() 함수를호출한다. mylist = [10, 20, 30, 40]; sub( mylist ); print (" 함수외부에서의 mylist: ", mylist)

함수내부에서의 mylist: [1, 2, 3, 4] 함수외부에서의 mylist: [10, 20, 30, 40]

파이를전역변수로선언하고이것을이용하여서원의면적과원의둘레를계산하는함수를작성해보자. 원의반지름을입력하시오 : 10 원의면적 : 314.159265358979 원의둘레 : 62.8318530717958

PI = 3.14159265358979 # 전역상수 def main(): radius = float(input(' 원의반지름을입력하시오 : ') print(' 원의면적 :', circlearea(radius)) print(' 원의둘레 :', circlecircumference(radius)) def circlearea(radius): return PI*radius*radius def circlecircumference(radius): return 2*PI*radius main()

def sub(): return 1, 2, 3 a, b, c = sub() print(a, b, c) 1 2 3

무명함수는이름은없고몸체만있는함수이다. 파이썬에서무명함수는 lambda 키워드로만들어진다.

sum = lambda x, y: x+y; print( " 정수의합 : ", sum( 10, 20 )) print( " 정수의합 : ", sum( 20, 20 )) 정수의합 : 30 정수의합 : 40

함수나변수들을모아놓은파일을모듈 (module)

fibo.py # 피보나치수열모듈 def fib(n): # 피보나치수열을화면에출력한다. a, b = 0, 1 while b < n: print(b, end=' ') a, b = b, a+b print()

>>> import fibo >>> fibo.fib(1000) 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo. name 'fibo >>> from fibo import * >>> fib(500) 1 1 2 3 5 8 13 21 34 55 89 144 233 377

만약파이썬모듈을다음과같이명령어프롬프트를이용하여실행한다면 C> python fibo.py <arguments> if name == " main ": import sys fib(int(sys.argv[1]))

C> python fibo.py 50 1 1 2 3 5 8 13 21 34 if name == " main ": import sys fib(int(sys.argv[1]))

1. 문제를한번에해결하려고하지말고더작은크기의문제들로분해한다. 문제가충분히작아질때까지계속해서분해한다. 2. 문제가충분히작아졌으면각각의문제를함수로작성한다. 3. 이들함수들을조립하면최종프로그램이완성된다.

def readlist(): nlist = [] flag = True; while flag : number = int(input(" 숫자를입력하시오 : ")) if number < 0: flag = False else : nlist.append(number) return nlist def processlist(nlist): nlist.sort() return nlist def printlist(nlist): for i in nlist: print(" 성적 =", i)

def main(): nlist = readlist() processlist(nlist) printlist(nlist) if name == " main ": main() 숫자를입력하시오 : 30 숫자를입력하시오 : 50 숫자를입력하시오 : 10 숫자를입력하시오 : 90 숫자를입력하시오 : 60 숫자를입력하시오 : -1 성적 = 10 성적 = 30 성적 = 50 성적 = 60 성적 = 90

함수는동일한코드를재사용하기위한것이다. 함수는 def 로작성된다. 함수안에서선언되는변수는지역변수이고함수의외부에서선언되는변수는전역변수이다. 함수나변수들을모아놓은파일을모듈 (module) 이라고한다.