1일차
| 이름
|
참여 여부
|
| 신기호
|
O
|
| 강재곤
|
O
|
| 윤상현
|
O
|
주요 수업 내용
- 변수의 선언 방법: Datatype name or Datatype name,name,name,...
- Data type: 변수가 표현할 수 있는 데이터의 범위를 나타낸다. 변수의 메모리상의 공간의 크기를 나타낸다.
- sizeof(parameter): 매개변수가 가지고 있는 메모리상의 바이트 단위의 정수를 반환한다.
- sizeof(int) = 4, sizeof(char) = 1, sizeof(short) = 2 etc.
- overflow: 변수가 표현할 수 있는 범위를 넘어선 데이터를 대입할때 나타나는 현상으로, 데이터의 손실이 일어난다. 프로그래밍할 때 오버플로우를 조심해야 한다!
- Global variable의 특징
- 프로그램 어디서나 참조 가능하다.
- 프로그램이 끝날 때 메모리상에서 지워진다.
- Local variable의 특징
- 변수가 포함되어 있는 지역(블럭 { })에서만 참조 가능하다.
- 블럭이 끝나면 메모리상에서 지워진다.
- Static variable의 특징
- 선언된 이후로부터 전역변수처럼 사용 가능하다.
- 선언된 이후 프로그램이 끝날 때 메모리상에서 지워진다.
- 나중에 함수 배울때 다시 배웁니다.
- 변수를 참조할 때 지역변수를 전역변수보다 우선으로 참조한다.
- 전역변수를 왠만해선 사용하지 마라! 값을 원하지 않을 때 임의로 변경할 수 있다.
과제
- #define pi 3.141592를 이용하여 구의 겉넓이, 부피를 계산하고 출력하는 프로그램을 만드시오.(코드를 여기에 올려주세요)
- swap(int num1, int num2)함수를 구현하시오. 함수 호출을 배우지 않았기 때문에, 그리고 포인터를 아직 배우지 않았기 때문에 기본적인 코드를 제공합니다.
void swap(int num1,int num2);
int main(void){
int num1, num2;
printf("정수 2개를 입력하시오: ");
scanf("%d %d",&num1,&num2);
printf("num1: %d, num2: %d\n",num1, num2);
swap(num1,num2);
}
void swap(int num1,int num2){
// 이곳에 코드 넣기
printf("after swap\nnum1: %d, num2: %d\n",num1, num2);
}
강재곤 후기 : 변수에 대해 배웠다. 첫날이라 많은 내용을 배운게 아니라 부담은 없었다. 오버플로우가 일어나면 자료의손실이 일어나므로 조심해야 한다는 것을 알았다. 다음시간부턴 직접 실습을 해보고 싶다
2일차
| 이름
|
참여 여부
|
| 신기호
|
O
|
| 강재곤
|
자봉단 회의
|
| 윤상현
|
O
|
주요 수업 내용
if(조건식){
처리내용
}
- 조건식이 만족해야 블록 진입
- 조건식엔 논리식이 들어간다 (일반적으로 참 = 0이 아닌 숫자, 거짓 = 0)
- 논리식이란?
- true/false로 판별이 가능한 식
- 논리연산자(&&,||,== 등)를 쓴다.
- 예제1) 정수를 입력받고 숫자가 짝수인지 홀수인지 판별하는 프로그램
#include <stdio.h>
int main(void){
int num;
scanf_s("%d",&num);
if(num%2==0)
printf("짝수");
else
printf("홀수");
return 0;
}
- 다중 조건식
- 조건식을 여러개 쓸 수 있다.
- 논리연산자로 연결한다. ex) if(x==2&&y==3)
- parenthesis(괄호)를 이용하여 우선순위를 부여할 수 있다. ex) if((x==2&&y==3)||z==4)
#include <stdio.h>
int main(void){
int year;
scanf_s("%d",&year);
if((year%4==0&&year%100!=0)||year%400==0)
printf("윤년입니다");
else
printf("아닙니다");
return 0;
}
- 조건문 if 속에 또다른 if문을 넣을 수 있다. (dangling else)
if(){
처리내용
if(){
처리내용
}
}
- 반복문
- while: 조건식을 만족하는 경우 무한 반복으로 처리
- for: 조건식을 만족할때 까지만 반복 처리
- do while: 3일차에 다시 설명.
- while
- 무한반복의 성질이 있기 때문에 영원히 빠져나오지 못하는 프로그램을 만들 수 있다.
- 임의로 무한반복의 상태를 벗어나게 할 수 있다. -> break,return
- continue
- continue 아래에 있는 명령어들을 처리하지 않고 반복문의 처음으로 다시 돌아간다.(물론 조건식을 다시 확인)
- 예제3) a부터 z까지 출력하는 프로그램 만들기
#include <stdio.h>
int main(void){
char letter = 'a';
while(letter<='z'){
printf("%c",letter);
letter++;
}
return 0;
}
- 예제4) -1값을 입력할 때 까지 정수를 입력 받고 평균을 구하는 프로그램
#include <stdio.h>
int main(void){
int number;
int sum = 0;
int count = 0;
scanf_s("%d",&number);
while(number!=-1){
sum += number;
count++;
scanf_s("%d",&number);
}
if(sum==0&&count==0)
printf("0");
else
printf("%d",sum/count);
return 0;
}
- 예제5) -1값을 입력할 때 까지 정수를 입력 받고 짝수인 정수들만 평균 구하기
#include <stdio.h>
int main(void){
int number;
int sum = 0;
int count = 0;
scanf_s("%d",&number);
while(number!=-1){
if(number%2==0){
sum += number;
count++;
}
else
scanf_s("%d",&number);
}
if(sum==0&&count==0)
printf("0");
else
printf("%d",sum/count);
return 0;
}
3일차&4일차
| 이름
|
참여여부
|
|
|
3일차
|
4일차
|
| 신기호
|
O
|
O
|
| 강재곤
|
O
|
O
|
| 윤상현
|
O
|
X
|
주요 수업 내용
- for(초기식;조건식;증감식)
- 초기식, 조건식, 증감식이 꼭 필요한 건 아니다!
- for를 while처럼 사용할 수도 있다.
- for를 사용하는 경우: 반복처리할 횟수가 명확할 때
- while을 사용하는 경우: 반복처리할 횟수가 명확하지 않을 때(특정 조건이 되어야 반복을 그만두게 할 때)
- 예제1) 숫자를 입력 받고 그 숫자만큼 #자 출력하기
#include <stdio.h>
int main(void){
int num,i;
scanf("%d",&num);
for(i=0;i<num;i++)
printf("#");
return 0;
}
#1 *
#2 **
#3 ***
#4 ****
#include <stdio.h>
int main(void){
int i,j;
for(i=0;i<4;i++){
printf("#%d ",i+1);
for(j=0;j<i;j++)
printf("*");
printf("\n");
}
}
(1)* (2)****
** ***
*** **
**** *
(3)**** (4) *
*** **
** ***
* ****
(5) * (6)*****
*** ***
***** *
*******
(7) * (8)*****
*** ***
***** *
*** ***
* *****
(9) * * (10) *****
** ** ** **
***** * *
** ** ** **
* * *****
(11) 1 1
2 2
3 3
4 4
5
6 6
7 7
8 8
9 9
새싹교실/2012/해보자/과제방
- 예제4) 숫자를 하나 입력 받고 그것을 2진수로 출력하시오.
#include <stdio.h>
int main(void){
int num,tmp,count=0;
int i,j;
scanf("%d",&num);
tmp=num;
while(tmp>=1){
tmp/=2;
count++;
}
for(i=0;i<count-1;i++){
tmp=num;
if(i==0){
for(j=0;j<count-2;j++)
tmp/=2;
printf("%d%d",tmp/2,tmp%2);
continue;
}
for(j=0;j<count-2-i;j++)
tmp/=2;
printf("%d",tmp%2);
}
return 0;
}
강재곤 : for 구문을 어떻게 사용해야하는지 알았고 직접 실습을 해봤다. 자신감이 생기는거같다
5일차
| 이름
|
참여여부
|
| 신기호
|
O
|
| 강재곤
|
O
|
| 윤상현
|
O
|
주요 수업 내용
- switch문의 사용 방법: case by case로 분류
- if문으로도 switch를 똑같이 구현할 수 있다.
- switch 문에서 break를 주지 않는 경우, 각 case를 전부 처리할 수도 있다.(if문과 다른 점)
- getch(): 입력 버퍼 stdin에 값을 넣는다. 얘는 이 처리만 하고 명령이 끝난다!
- putch(): 입력 버퍼에 있는 값을 화면에 출력한다. 얘도 마찬가지로 이 처리만 하고 끝난다.
예제1) getch()와 putch()를 이용하여 누른 키를 화면에 출력하게 하시오.
#include <stdio.h>
#include <conio.h>
int main(void){
char ch;
ch=getch();
switch(ch){
case 'a':
printf("누른 키는 a 입니다.");
break;
case 'b':
printf("누른 키는 b 입니다.");
break;
default:
printf("누른 키는 ");
putch();
printf("입니다.");
}
return 0;
}
- 함수는? 수학에서의 함수와 동일한 개념. 매개변수를 넘겨주면 결과값이 나온다!
- 매개변수: func(int a,int b)에서 a와 b의 역할
- 결과값: 함수의 자료형, 즉 반환형
- 함수의 반환형은 변수의 자료형과 같이 쓰면 된다.
- void형은 반환하는 값이 없는 함수다.
- int main()함수에서 return 0를 하는 이유: 메인 함수는 0을 반환하면 프로그램이 끝났다는 것을 알린다.
- void main()은 메인 함수가 아니다!
- 함수의 선언: 컴파일러에게 '이런 이런 함수를 쓸것이다'라고 알리는 것.
- 함수의 정의: 컴파일러에게 '이런 이런 함수는 이런 이런 일을 한다'라고 알리는 것.
- 함수의 호출: 함수에게 매개변수 등을 넘겨주어 결과값을 기다리는 것.
- printf("%d",add(1,3));에서 add(1,3)의 자리엔 4의 값이 들어간다.
- 예제2) 숫자 2개를 입력 받아 평균을 구하는 프로그램 만들기.
#include <stdio.h>
int mean(int a,int b);
int main(void){
int num1,num2;
scanf("%d",&num1);
scanf("%d",&num2);
printf("%d",mean(num1,num2));
return 0;
}
int mean(int a,int b){
int count=2//여기서 count 변수까지 동원하는 데에는 이유가 있습니다. 나중에 배열 배울 때 다시 알려드립니다.
return (a+b)/count;
}
새싹교실/2012