1. 예정 ¶
- 수업 1시간 넘을수도 있음 (실습은 약간만)
- 강의 :
- 함수와 프로그램 구조
- 함수function
- 인자, 반환값, 매개변수, void, side-effect
- 변수 유효 영역scope(recall)
- 저장 클래스storage class, static, extern
- 사용자 정의 함수
type
identifier
(type
[identifier][, ...]
);
- 선언 후 정의
- 표준 라이브러리 함수
- main 함수 *
- argc, argv, EXIT_SUCESS, EXIT_FAILURE
- argc, argv, EXIT_SUCESS, EXIT_FAILURE
- 호출 스택 *
- 재귀 함수recursive function *
- 인자, 반환값, 매개변수, void, side-effect
- 프로그램 구조 *
- 헤더 파일
- extern
- 헤더 파일
- 함수function
-----------------------------------------------------------------------
- 실습 :
- 시간이 허락하는 만큼 까지만 합니다.
- 사칙연산 계산기 만들기
- #1)
- 입력)
- 첫 번째 : 연산 종류('+', '-', '*', '/')
- '!' 입력시 종료
- '!' 입력시 종료
- 두 번째, 세 번째 : 각각 피연산자 2개(정수만)
- 첫 번째 : 연산 종류('+', '-', '*', '/')
- 출력)
- 연산 결과
- 연산 결과
- 프롬프트를 출력할 것
- 종료 전까지 무한 반복
- 입력)
#1에서,
- 프로그램 실행 인자를 받는(main의 인자) 프로그램 만들기
[
[add|sub|mul|div]
[op1]
[op2]
[, ...]
]
- 인자를 받을 경우 즉시 종료
2. 진행 ¶
- 함수
- 인자, 반환값, 매개변수 등등으로 구성되어 있는 '도구'
- 순서에 영향을 많이 받기 때문에 함수가 호출되려면 앞에서 함수가 정의되어 있어야 한다.
- 인자, 반환값, 매개변수 등등으로 구성되어 있는 '도구'
- 재귀함수
- 함수가 자기 자신을 호출하는 함수.
- 속도가 느리다. 그러나 특정한 상황에서는 빠를 수도 있음
- 피보나치 수열이나 팩토리얼 계산에 활용할 수 있음
- 함수가 자기 자신을 호출하는 함수.
- 변수
- 전역변수 : 프로그램 전체에서 접근할 수 있고, 존재하는 변수
- 지역변수 : 한 함수 안에서 (중괄호 내에서) 존재하고, 접근할 수 있는 변수. 함수가 끝나면 사라진다
- static : 지역변수이긴 한데 함수가 끝나도 메모리 안에 존재하는 변수. 그러나 다른 함수에서는 접근하지 못한다.
- 전역변수 : 프로그램 전체에서 접근할 수 있고, 존재하는 변수
- 표준 라이브러리 함수
- 사용자가 함수를 더 사용하기 쉽게 어떤
친절한사람이 만들어놓은 헤더파일이라고 보면 된다.
- stdio.h, stdlib 에서 지정된 printf, scanf 등이 있음.
- 사용자가 함수를 더 사용하기 쉽게 어떤
- main함수
- main함수도 반환값이 있다
- 반환값이 0이면 성공적으로 실행된 것이라고 약속해놨음
- stdlib.h에서는 성공 반환값과 실패 반환값을 EXIT_SUCCESS, EXIT_FAILURE라고 매크로로 정의해놓음
- main함수도 반환값이 있다
- stack
- 마지막에 집어넣은 것일수록 제일 먼저 나오는 구조
어셈블리를 배우고 왔으면 더 쉬울건데
- 대충만 알아도 성공한 것이다
- 마지막에 집어넣은 것일수록 제일 먼저 나오는 구조