220818 C언어#2, 앱인벤터#3

김혜진·2022년 8월 18일
0

C언어

목록 보기
2/13

C언어 #2

헤더 파일에 대한 간략한 이해

#include<stdilo.h>

  • #include
    포함한다는 의미를 갖는다.
    #이 붙으면 전처리기를 나타낸다.

전처리기
프로그램을 컴파일할 때 컴파일 직전에 실행되는 별도의 프로그램
#이 붙어있음

  • <stdio.h>
    .h가 붙어있는 파일을 헤더 파일이라 부른다.
    stdio.h를 포함하겠다는 의미이다.
    stdio.h를 포함하지 않으면 printf 함수를 사용할 수 없다.

  • 라이브러리
    도서관처럼 필요한 기능들을 찾아서 쓸 수 있도록 플랫폼이 제공해주는 것

C언어의 기본구조

C언어의 기본 구성 요소는 함수이다

  • 수학에서의 함수 형태
    y = f(x)
    y = 2x

  • C언어에서의 함수 형태

int main(void)
{

}

f: main x: void y: int
함수의 영역은 { 와 } 사이에 함수의 정의를 한다.
하나의 프로젝트 안에는 2개의 main은 존재할 수 없다.

문장의 끝 세미콜론

  • C언어의 문장들은 마칠 때 반드시 세미콜론(;)을 찍어주어야 한다.
    컴파일러가 해석 할 때 세미콜론을 기준으로 하여 한 문장으로 해석한다.
  • 전처리기는 예외이다.

리턴값에 관하여

  • 0을 리턴하는 이유
    리턴값 0자체의 의미는 없다.
    함수의 수행이 끝남을 의미한다.
    종료의 의미

주석문을 사용하자

  • 주석문을 사용하는 이유
    어떤 단어나 문장에 대한 구체적인 부연 설명
    프로그래밍에서 주석은 필수이다.

  • 짧은 문장의 주석문 처리
    주석문이 짧은 문장일 경우 // 기호를 사용
    // Hello World 문자열을 출력한다.

  • 긴 문장의 주석문 처리

/*
주석문
*/

● 이름 주소 번호 출력하기

int main()
{
	printf("김혜진\n인천광역시 서구 가좌동\n010-2144-6422");
	return 0;
}

\n (역슬래시n) : 개행을 나타냄


변수와 자료형

변수란?

C언어에서 변수는 '변경이 가능한 수'를 의미한다.
변수에는 어떠한 값이 들어갈 지 예측할 수 없다.

왜 변수를 사용할까?

메모리 상에 올라가있는 수많은 데이터를 어떻게 구분할 것인가?
메모리 주소 값을 사람이 일일이 다 기억할 수 있을까?
주소값을 기억하기보다는 의미있는 이름을 기억하는 것이 쉽다.

디스크에 저장되어있는 파일을 실행시켰을 때 메모리(RAM)에 올라가고(프로세스), CPU(연산장치)는 메모리에 올라가있는 프로그램만 인식한다.
CPU는 디스크에 있는 파일은 알 수 없다.

집 주소가 없는 집이 없는 것처럼, 메모리마다 주소값이 할당되어있다.
7이라는 값이 4바이트 메모리에 저장이 되어있고, 내가 이 값에 접근하려면 이 주소값에 접근해야한다.
이 주소값을 일일이 기억할 수 없으니 메모리에 별명을 붙여주는 것이다.
그 별명을 통해서 메모리에 접근할 수 있다.

변수의 종류

변수에 값을 대입하더라도 그 값이 메모리를 얼마나 차지하는지 알아야한다.

  • 기본적으로 기본형과 유도형으로 나누어진다.
    • 기본형: 정수형(short,int,long), 실수형(float,double), 문자형(char)
    • 유도형: 배열형([]), 포인터형(*), 구조체형(struct, 추상데이터)

변수 선언 방법

  • 변수 선언의 기본 형태
    자료형 변수명;
    int value;
    변수명을 지어주어야 하는데, 쓰임새를 생각해서 맞는 이름을 지어주는 것이 좋다.
    변수 앞에는 변수를 설명할 수 있는 타입(자료형)이 온다.
    int value : 정수형(4바이트 메모리가 필요한) value(이름)

  • 변수 선언 후 값을 대입하는 경우
    int value;
    value = 100;
    value라는 변수에 100이라는 값이 대입이 된다.

  • 변수 선언과 동시에 초기화하는 경우
    int num = 5;

int value;
value = 100;
int value = 100;

두 선언 방법에는 미세한 차이가 있다.
컴파일러가 1번 첫째줄을 해석할 때 선언된 value 안에는 쓰레기값(알 수 없는 값)이 들어가 있는 불안정한 상태이며 좋은 코드가 아니다. (선호하지 않는 방법)
2번처럼 변수와 값을 한번에 선언하는 것을 초기화라고 한다.

초기화되지 않은 변수를 출력하면 오류가 뜬다.

출력함수 printf

  • 변수 출력
#include<stdio.h>

int main() {
	int value = 0;
	int num = 5;
	value = 100;

	printf("%d %d\n", value, num);

	return 0;
}

%d : decimal (10진수)
정수의 경우 %d라는 서식문자를 통해 출력

출력결과 100 5

char

1바이트
문자을 나타날 때는 " " 사용
문자 하나를 나타낼 때는 ' ' 사용

char 타입을 %d로 출력했을 때의 결과 67
엄밀히 따지면 char타입도 정수이다.

● 이름 나이 성적 출력하기

#include<stdio.h>

int main() {
	int age = 26;
	char grade = 'A';
	
	printf("이름 : 김혜진\n");
	printf("나이 : %d세\n", age);
	printf("성적 : %c\n", grade);

	return 0;
}

변수 선언 시 유의사항

  • 변수 이름의 규칙
    변수의 이름은 알파벳, 숫자, 언더바(_)로 구성, 특수문자 불가
    변수 이름의 첫 글자는 숫자로 시작 불가
    변수 이름 중간에 공백 삽입 안됨
    대소문자 구분

자료형

정수형 사용하기

정수란 0을 포함한 부호(양수와 음수)가 있는 수이다. 소수점은 표현하지 못한다.

#include<stdio.h>

int main() {
	int width = 10;
	int height = 20;
	printf("사각형의 넓이는 %d이다.\n", width * height);
    
	return 0;
}

출력결과 사각형의 넓이는 200이다.

실수형 사용하기

실수란 소수점 이하를 가지는 수를 말한다. 대표적으로 float와 double형이 있다.

#include<stdio.h>

int main() {
	double area;
	double radius = 5;
	area = radius * radius * 3.14;

	printf("원의 넓이는 %f이다.\n", area);
	return 0;
}

출력결과 원의 넓이는 78.500000이다.
소수점 둘째자리까지 출력을 원한다면 %.2f 로 적는다.

  • float(부동소수점)
    floationg point , 떠돌이 소수점

문자형 사용하기

숫자만 인식하는 컴퓨터는 문자를 표현하기 위해 특정 숫자와 특정 문자를 대응시키는 방법을 사용한다.
아스키 코드라는 표준에 의거한다.
컴퓨터가 키보드에 있는 문자의 아스키 코드를 인식해 처리한 후 화면에 출력하게 되는 것.

  • 문자형 char
    'A'는 아스키 코드표로 65
    'b'는 아스키 코드표로 98
    '1'은 아스키 코드표로 49
#include<stdio.h>

int main() {
	char ch1 = 'A';
	printf("%d, %c\n", ch1, ch1);

	return 0;
}

출력결과 65, A

상수에 관하여

상수란 무엇인가?

상수는 변하지 않는 수를 의미한다.
메모리 공간에 수가 존재하지만 그 값을 변경할 수 없다.

const 기호

변수 선언에 const 기호를 붙여주면 상수화 된다.
단, 주의할 점은 선언과 동시에 초기화 해야 한다.

const int Ten = 10;

다음은 오류의 형태이다.

const int TEN;
TEN = 10;

TEN의 값을 지정해주지 않아 TEN 안에 들어가있는 쓰레기 값이 상수화가 되어버리기 때문에 10을 대입해도 값이 변하지 않는다.

왜 const를 쓸까?
1. 시스템 규모가 커지면서 코드가 복잡해짐
=> 엄격한 문법이 필요해짐에 따라 const를 사용하게 됨
2. 값이 바뀌지 않아야 할 때
=> 중간에 실수로 값을 바꾸는 코드를 넣는 상황을 방지하기 위함. 코드가 많을수록 찾기 힘들어진다.


모던 자바스크립트에서는 const를 권장
javascript의 const와 C언어의 const는 미묘한 차이가 있음


앱인벤터 #3

목소리 인식, 변환하기

  • 디자인

  • 블록

실로폰 만들기

  • 디자인

  • 블록

profile
알고 쓰자!

0개의 댓글