printf("ho_tari\n");

ep.21 반복문, 함수 본문

두산 로보틱스 부트캠프 ROKEY/C 교육

ep.21 반복문, 함수

호타리 2024. 8. 5. 12:30

2024.8.5

• 반복이란 코드가 중복된다는 의미
• C 언어가 제공하는 while 문, for 문, 그리고 do-while 문
• 본질적으로 세 가지 반복문은 동일하지만, 용도가 조금씩 다름
• 반복문을 코딩할 때 반복 또는 종료 조건에 대해서 정확하게 파악해야 함
• 반복이나 종료 조건은 언제 반복해야 할지와 반복을 종료할지 결정하는 것

while 문

• 조건이 만족되지 않을 때까지 코드를 반복해서 실행

do-while 문

• do 명령문을 먼저 실행한 후에 조건식을 확인
• 반복문의 명령문을 최소한 한 번 실행
• do-while 문은 do가 먼저오고 중괄호가 무조건 있어야 함

for 반복문

• 정해진 횟수만큼 반복하거나 배열처럼 정해진 개수의 자료를 한 개씩 처리
할 때 사용하는 반복문
– while 문보다 짧은 코드 작성 가능

• 초기화_표현식은 반복문에서 횟수 또는 범위를 지정할 변수를 선언하고 초
기화시키는 데 사용
• 주로 횟수나 번호를 나타내는 변수
• 조건식은 반복을 지속할지 종료할지 결정
• 증감_연산_표현식은 초기화_표현식에서 선언된 변숫값을 변경
• 횟수나 번호를 증감시키는 목적으로 사용

▪ for 반복문 실행 순서

▪ for 반복문에서 여러 개 변수 사용 - 콤마 연산자

for, while 반복문

반복문 특징

while 문
• 조건식의 결과에 따라 반복문의 실행 여부를 결정하는 경우에 적합
• 그 중에서도 조건에 따라 코드를 실행하지 않을 수도 있는 경우에 사용
do-while 문
• while 문과는 달리 최소한 한 번은 실행시켜야 하는 코드가 있을 때 적합한 반복문
for 문
• 주로 정해진 횟수 또는 정해진 개수의 요소들을 각각 처리할 때 자주 사용
• while이나 do-while보다 for 문이 반복 관련 코드를 보다 일목요연하게 보여 줄 수 있음

break와 continue

• 프로그램은 보통 순차적으로 실행
• 반복문도 내부 영역의 코드는 순차적으로 실행

break 문
• 반복문의 실행 흐름을 멈추고, 반복문 다음 문장을 실행시키도록 하는 명령문

• 중첩된 반복문에서 break 문 사용

continue 문
• 반복문의 순차적인 실행을 중단
• 다시 반복/종료 조건을 확인하면서 반복할지 결정하는 명령문

 

함수

▪ C 언어의 함수 사용 목적

캡슐화
• 내부 동작 원리 및 구조를 밖에 드러내지 않고 사용하는데 필요한 인터페이스만 제공하는 것
재사용성
• 재사용성을 높이기 위해 함수는 단순화시키고 일반화해서 작성

함수 정의(define) 방법

함수 코드 실행 후 반환하는 값

▪ return 문
• 함수 몸체 중간에서 실행 종료 가능
• 값을 반환할 수 있음

함수 호출
• 함수 이름에 괄호를 붙이고, 매개변수에 전달할 값이 있다면 괄호 안에 나열

함수의 매개변수에 인자 전달
• 함수를 호출할 때 인자가 매개변수에 전달되는 과정

• 인자를 매개변수에 값에 의한 호출 방식으로 전달

• 두 개의 매개변수로 전달된 값을 서로 바꿔 함수 밖에 전달하는 swap() 함수

C 언어의 값 전달 방식 특징
• 인자에 표현식을 사용 가능(변수나 리터럴 상수도 표현식 중 한 가지)
• 함수에서 매개변수의 값을 변경해도 함수 바깥에 영향을 주지 않음

변수의 유효범위와 생존 기간

유효 범위(scope)
• C 언어 코드를 변수들이 선언된 위치를 통해 그 변수가 어디서 사용할 수 있는지 확인하는 것

변수의 유효 범위
• 전역
• 지역
• 코드 블록
• for 문
• 파일

지역변수
• 함수 내부에서 선언되고 그 함수에서만 사용할 수 있는 변수
• 매개변수도 지역변수로 함수 내에서 동일한 명칭으로 변수 선언 불가

전역변수
• 함수 밖에 선언하고 프로그램의 모든 함수에서 사용할 수 있는 변수
• 프로그램 전체에 영향을 미치기 때문에 동일한 이름의 변수 선언 불가

전역변수와 지역변수의 이름 충돌과 유효 범위
• 같은 이름의 변수들을 다른 함수들에 사용하는 것은 괜찮음

코드 블록과 for 문 유효 범위
• 코드 블록은 자신만의 유효 범위를 가짐

정적 지역변수
• 유효 범위는 지역변수와 동일
• 생존 기간은 전역변수와 일치하는 변수
• 함수가 종료되어도 정적 지역변수가 사용하는 메모리 공간은 변함없이 존재

정적 지역변수의 두 가지 특징
• 함수가 여러 번 호출되더라도 초기화 코드는 실행되지 않음
• 정적 지역변수를 초기화하는 것은 상수로만 가능

typedef와 유효 범위

유효 범위 설명
• 함수 밖에 선언된 자료형 이름은 현재 선언된 소스 파일 안에서 유효
• 함수 안에서 선언된 이름은 함수에서 유효
• 코드 블록 안에서 선언된 자료형 이름은 코드 블록 안에서 유효

함수 선언

• 함수 선언은 반드시 함수의 머리 부분에 세미콜론을 붙여서 문장 생성

프로그램의 메모리 구조

• 코드 영역(텍스트 영역)
• 데이터 영역
• 힙 영역
• 스택 영역

재귀 호출

• 재귀(recursion)는 문제를 같은 유형의 작은 문제로 나누어서 해결하는 방법

반복문과 재귀 호출
• 반복문으로 해결하는 문제는 모두 재귀 호출을 이용해서 해결 가능
• 그 반대로 재귀 호출을 이용해서 해결할 수 있는 문제는 반복문으로도 구현 가능

매크로 함수

매크로 함수 선언 주의점
• 인자 개수는 제한 없음
• 매크로_이름과 괄호 사이에 공백이 있으면 안 됨
• 치환할_값은 인자1, 인자2 등을 포함하지 않아도 되지만, 대부분 포함하는 코드로 구성
• 치환할_값은 (인자1), (인자2)와 같이 괄호로 감싼 형태로 사용
• 매크로 함수 사용은 매크로_이름(표현식1, 표현식2, ...) 형태로 사용
• 매크로 함수를 여러 줄로 표현하려면 마지막 줄을 제외한 각 줄의 끝에 ''를 붙임

매크로 함수의 장단점
장점
• 함수보다 빠름
• 자료형을 구분하지 않음
단점
• 큰 값으로 반환되는 변수는 두 번 증가
• 따라서 결과가 예상과 다르게 나타남

 

오늘은 C 언어에서 반복문과 함수에 대해서 배웠다. 반복문인 for, while, do-while을 이용하여 여러 코드를 작성해보았다. 각 종류마다 결과는 같게 나오지만 각각 장단점이 존재하는 것 같다. 또한, for문을 이용하여 작성한 코드를 while문을 이용하는 코드로 바꾸거나 while문 코드를 for문 코드로 바꾸는 것과 같이 같은 결과값을 여러 방법으로 코딩할 수 있는 연습이 많이 필요하다고 생각한다. 코딩에 있어서 코드 정리와 가독성에 도움을 주는 함수는 중요하다고 생각한다. 함수를 이용해야 코드를 만드는 사람과 읽는 사람 모두 편리할 수 있다고 생각한다. 코드를 만드는 사람은 함수로 코드들을 정리하여 코딩을 하는 동안이나 나중에 수정을 할 때 더 편리할 수 있고 코드를 읽는 사람은 코드를 더 쉽게 이해할 수 있을 것이라고 생각한다.