3주차 수업 내용 및 수업 후 과제

2024. 3. 18. 16:43C프로그래밍/수업 내용 및 수업 후 과제

반응형

지난주 내용을 바탕으로 뤼튼을 활용해서 내 이름을 10번 출력되게 해봤다 이 프로그램에서는 while 루프를 사용하여 조건이 참인 동안, 즉 count 변수가 10보다 작은 동안 "정상연"을 출력하고, count를 1씩 증가시킵니다. count가 10에 도달하면 루프가 종료됩니다. for 루프와 마찬가지로, printf 함수는 "정상연"을 출력하고, 개행 문자 \n을 사용하여 다음 줄로 넘어갑니다. 이 방법도 매우 효율적으로 원하는 작업을 수행할 수 있습니다.

 

아래는 c 기본 프로그래밍에 있는 내용 중 2장(36줄까지) 뤼튼에 주석 달아달라고 해봤다

#include <stdio.h> // 표준 입출력 라이브러리 포함. 입출력 관련 함수 사용을 위함.
#define SIZE 3 // 전처리기 지시문. SIZE라는 이름의 매크로를 3으로 정의.
// WEIGHT 구조체 정의. 사람의 이름과 체중을 저장하기 위한 구조체.
typedef struct{
char name[10]; // 사람의 이름을 저장하는 문자 배열. 최대 9자 + 널 문자.
double w; // 사람의 체중을 저장하는 변수.
}WEIGHT;
void swap(WEIGHT *, WEIGHT *); // swap 함수 선언. WEIGHT 구조체 포인터를 매개변수로 받음.
int main()
{
// WEIGHT 타입의 배열 선언 및 초기화. 3명의 사람 정보를 저장.
WEIGHT man[SIZE]={{"한개발",57.5},
{"엄청군",125.6},
{"갈비양",35.7} };
int i,j; // 반복문 제어를 위한 변수 선언.
// 이중 for 반복문을 사용하여 모든 요소를 비교하며 체중 기준으로 정렬 (내림차순).
for(i=0;i<2;i++){
for(j=i+1;j<3;j++){
if(man[i].w<man[j].w) { // 현재 요소의 체중이 비교 요소보다 작으면,
swap(&man[i],&man[j]); // swap 함수를 호출하여 두 요소의 위치를 바꿈.
}
}
}
 
printf(" 이름 \t체중\n"); // 정렬된 결과의 헤더 출력.
for(i=0;i<3;i++){ // 정렬된 배열의 모든 요소를 출력.
printf(" %s %5.1f\n",man[i].name,man[i].w);

 

}
return 0;
}
// swap 함수 정의. WEIGHT 구조체 포인터를 매개변수로 받아 해당 요소들의 위치를 바꿈.
void swap(WEIGHT *mani, WEIGHT *manj)
{
WEIGHT temp; // 임시 WEIGHT 변수 선언.
temp=*mani; // 첫 번째 요소를 임시 변수에 복사.
*mani=*manj; // 두 번째 요소를 첫 번째 요소 위치로 이동.
*manj=temp; // 임시 변수의 내용을 두 번째 요소 위치로 이동.
}
위의 내용에서 정렬순서를 바꿔서 다시 프로그램을 짜봤다

 

parameter, argument, return value을 뤼튼을 통해 쉽게 설명해달라고 해봤다.

 

 구조적 프로그래밍(structured programming) 방식 : 큰 프로그램을 하나의 여러 개의 함수로 분할하여 구현하는것

main 함수 두개를 넣었다, 콘솔 기반의 c 프로그램은 main 함수가 두개가 된다면 빌드 오류가 발생하므로 main함수는 1개만 넣도록 한다

caret : 텍스트 입력이 가능한 위치를 가르키는 텍스트 커서의 한 형태로, 주로 깜빡이는 세로 막대기(ㅣ) 모양으로 표현

뤼튼을 사용해서 구두점(punctuator)을 예시와 함께 설명한 표이다.

c 언어의 중요 소스 용어를 쉽게 정리한것

  1. 변수(Variable): 데이터를 저장하기 위해 프로그램에서 사용되는 메모리 공간의 이름입니다.
  2. 전처리기(Preprocessor): 컴파일 전에 소스 코드에 대해 실행되는 지시어들로, 예를 들어 #include는 다른 파일의 내용을 현재 파일에 포함시킵니다.
  3. 입출력 라이브러리 함수(I/O Library Functions): scanf()와 printf()와 같은 함수들은 사용자로부터 데이터를 입력받고 결과를 출력하는 데 사용됩니다.
  4. 연산자(Operators): 산술(+, -, *, /), 관계(<, >, == 등), 논리(&&, || 등) 등의 연산을 수행하기 위해 사용되는 기호입니다.
  5. 제어문(Control Statements): 프로그램의 흐름을 제어하기 위해 사용되며, if, for, while 등이 여기에 속합니다.
  6. 함수 선언(Function Declaration): 함수의 이름, 반환 타입, 그리고 매개변수의 타입과 개수를 정의하는 것입니다.
  7. 기억 클래스(Storage Class): 변수나 함수의 저장 영역, 수명, 그리고 가시성을 정의합니다; 예를 들어, static, extern 등이 있습니다.
  8. 배열(Array): 같은 타입의 여러 변수를 하나의 이름으로 관리하기 위해 사용되며, 각 요소는 인덱스를 통해 접근할 수 있습니다.
  9. 구조체(Structure): 서로 다른 타입의 데이터를 하나의 단위로 묶어서 관리하기 위한 사용자 정의 데이터 타입입니다.
  10. 포인터(Pointer): 변수의 메모리 주소를 저장하는 변수로, 간접적으로 다른 변수의 값을 변경하거나 접근할 수 있게 해줍니다.
  11. Call by Address: 함수를 호출할 때 인자로 메모리 주소를 전달하여, 함수 내에서 해당 주소에 있는 값을 직접 변경할 수 있는 기법입니다.

구두점을 마킹한 것이다.