U E D R , A S I H C RSS

새싹교실/2015/반의반 (rev. 1.7)

새싹교실/2015/반의반

설명

  • 2015년도 새싹교실 반입니다.
  • 장르는 C 프로그래밍 기초
  • 진도를 나가기 보다는 수업을 보조해 주는 방식으로 진행합니다.
  • 매주 목요일 오후 7시
  • 왜 팀 이름이 이러냐면...
    • 나중에 알랴드림

멤버

진행

3월 17일

  • 오리엔테이션
  • 팀명/시간 조정

3월 26일

  • Hello, World 살펴보기
    • # 이 무엇을 하나요?
    • int main() {} 이 뭐죠?
    • puts printf 는 무슨 차이가 있어요?
    • 기타 등등...


4월 2일

  • 자료형들
    • short, int, long
    • float, double
  • 컴퓨터에서는 숫자를 어떻게 저장할까?
  • 왜 다양한 자료형들이 있을까?
  • 산술/논리 연산자들
  • (중첩) if/else
    • 점수에 따른 성적 출력하는 실습
    • 숫자 입력에 따른 출력 실습 (양수? 음수? 양수면 짝수? 홀수?)

4월 9일

  • 실습 시간
    • 쉬프트 암호화
    • 4개의 좌표를 입력받아 넓이 출력
  • 그 외에 짬짬한 내용들
    • stdio.h 외에도 math.h 와 같은 헤더 파일들이 있으며, 각각의 헤더 파일은 특정 작업과 관련된 함수들을 가지고 있음.
    • 연산 후, 비교하고, 대입한다.
    • 1 <= x <= 9 이런 코드는 노노.
    • http://www.asciitable.com/ 아스키 값은 여기서 확인.
    • 정수끼리 나눌 경우 값이 정수임을 유의.
      • (float) (double)과 같은 캐스팅을 하거나, 3.0 같은 꼼수(?)를 쓰자

5월 7일

긴 공백기를 깨고...
  • 함수
    • 왜 함수를 쓰는가, 함수의 구성, 프로토타입
  • 포인터
    • 왜 포인터를 쓰는가, 포인터 관련 문법, 포인터 동작 원리, swap example
  • 배열
    • 왜 배열을 쓰는가, 배열과 포인터와의 관계


#include <stdio.h>
#pragma warning(disable:4996)

void getNumbers(int* ary, int len);

int main() {
	int pause;

	int a[5];
	int i;

	getNumbers(a, 5);

	for (i = 0; i < 5; i++) {
		printf("%d ", *(a + 4 - i));
	}

	scanf("%c", &pause);
	scanf("%c", &pause);
	return 0;
}

void getNumbers(int[] ary, int len) {
	int i;

	for (i = 0; i < len; i++) {
		scanf("%d", ary + i);
	}
}

---

#include <stdio.h>
#pragma warning(disable:4996)

int main() {
	int pause;

	int a[5];
	int i;

	for (i = 0; i < 5; i++) {
		scanf("%d", &a[i]);
	}

	for (i = 0; i < 5; i++) {
		printf("%d ", a[4 - i]);
	}

	scanf("%c", &pause);
	scanf("%c", &pause);
	return 0;
}


---

#include <stdio.h>
#pragma warning(disable:4996)

void printNumbers(int, int);
void swap(int*, int*);
int add1(int toAdd);

int main() {
	int pause;

	int a = 1;
	int b = 2;

	b = toAdd(b);
	printf("%d %d\n", &a, &b);
	printNumbers(a, b);

	swap(&a, &b);

	printNumbers(a, b);

	scanf("%c", &pause);
	return 0;
}

void swap(int* swapA, int* swapB) {
	int temp = *swapA;

	*swapA = *swapB; // a=2;
	*swapB = temp;
}

int add1(int toAdd) {
	return toAdd + 1;
}

void printNumbers(int printA, int printB) {
	printf("a= %d, b= %d\n", printA, printB);
}


5월 14일

  • 쉬어가는 시간 - rand/srand/time

#include <stdlib.h> // rand, srand
#include <time.h> // time

time(NULL); // 1970년 1월 1일 0시 0분 0초부터 지난 시간 리턴
srand(unsigned int) // random의 시드값 설정
rand() // 난수 리턴

seed?

return (i + j + 123) ^ 100000 % 1000 이라는 가상의 rand 함수가 있다고 가정 하자. j는 0으로 시작해서 호출 시 마다 1씩 증가한다. 이러면 호출시마다 다른 값이 출력되지만, 프로그램을 실행시키면 항상 같은 순서로 같은 값이 나온다. 이를 위해 프로그램 실행시마다 i값을 다르게 설정하면 프로그램을 실행시킬 때 마다 다른 임의의 숫자가 나올 것이다. 이 때 i값을 seed값이라고 한다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:55
Processing time 0.0446 sec