C언어 1주차

코드깎는 노인·2020년 9월 20일
0


1. 기계어와 고급언어에 대해 조사하고, 초등학생이 알아들을 수 있도록 50자 이내로 요약해보세요 (0.5시간 소요)

가. 기계어 :

컴퓨터가 알아들을 수 있는 유일한 프로그래밍언어 cpu는 전류가 흐르는 상태인 1과 흐르지 않는 상태인 0으로 나타내는 2진수만을 인식할 수 있었는데 이는 사람이 알 수 있는 형식과는 거리가 있어 문자적으로 표현한 것이 어셈블리 언어이다.어셈블리언어는 기게어화 1대1매칭되기에 속도가 빠르다.기계어는 제조사마다 cpu버전마다 달라진다.​

나. 고급언어 :

프로그래머가 특정 형식의 컴퓨터와 무관하게 프로그램을 작성할 수 있는 언어즉,cpu아키텍쳐 간 이식성이 있는 언어이며 c,자바등이 속한다.이 언어들은 기계어보다 인간의 언어와 가깝기 떄문에 고급언어라 불린다.반대로 어셈블리어는 기계어에 보다 가깝기에 저급언어로 불린다.고급언어는 기계어나 저급언어보다 프로그래밍이나 유지보수가 쉽지만 컴파일이나 인터프리터등을 거쳐야 하기에 속도가 느리다는 단점이 있다.하지만 기계어로 프로그래밍 할 경우 과정이 매우 힘들기에 컴파일에 시간이 걸린다 하더라도 기계어 프로그래밍과정이 더 길어 고급언어로 프로그래밍하는것이 시간적으로 생산성이 높다.이 중에 C는 사람이 이해하기는 편하지만 기계어 명령구조와 유사한 문법을 가지고 있어 중급언어라 불리기도 한다.​

다. 요약설명 :

기계어는 2진수로 이루어진 컴퓨터가 직접 이해할 수 있는언어.고급언어는 문자로 이루어져 있으며 이를 기계어로 바꾸기 위해 컴파일러나 인터프리터가 필요함.​

  1. 빌드와 빌드과정에 대해 조사하고, 초등학생이 알아들을 수 있도록 50자 이내로 요약해보세요 (1.5시간 소요)

가. 빌드란? :

소스코드 파일을 실행 가능한 독립 소프트웨어 형태로 가공하는 과정이나 결과물

빌드과정은 전처리=>컴파일=>어셈블리=>링크=>로드

이다.

나. 전처리란? :

컴파일전 전처리 구문을 해석하여 주석부를 없애고 전처리 구문을 처리한 파일을 생성한다.

-자주쓰는 전처리 구문

#include:외부파일을 포함 시키는것

#include<파일>:파일의 위치를 지정한 디렉토리에 있는 파일만 찾음

#include”파일”:현재 디렉토리에 있는 파일을 찾고 없으면 -I로 설정되 디렉토리나 표준 헤더파일을 찾음

#define:프로그램 내에서 자주 사용되는 코드를 간결하게 정의하거나 상수를 한번에 바꿀때 사용

다. 컴파일이란? :

전처리가 끝난 코드를 기반으로 어셈블러 코드생성.어샘블러는 cpu제조 회사에 맞게 작성된다.어셈블러 소스를 바탕으로 목적파일을 생성하는데 목적파일은 기계어 코드로 작성됨​

라. 링크란? :

오브젝트 파일은 직접 실행할 수 없는 파일이라 링크작업이 필요하다.c언어는 하나의 파일이 아닌 분할 컴파일이 가능한데 링크를 통하여 분할된 오브젝트 파일을 하나로 합쳐 하나의 실행파일을 만드는것을 링크라​ 한다

마. 로드란? :

로더는 프로그램을 실행시키기 위해 보조 기억장치로부터 컴퓨터 주기억장치에 프로그램을 적재하는 시스템소프트웨어 로더는 할당->연결->재배치->적재의 순서로 실행. 할당이란 프로그램을 실행시키기 위해 기억장치 내에 옮겨 놓을 공간을 확보하는 기능. 연결은 프로그램을 할당된 주소로 연결하는 기능.재배치는 디스크 등의 보조 기억장치에 저장된 프로그램이 사용 하는 주소들을 할당된 기억 장소에 실제로 배치시키는 기능을 의미. 적재란 프로그램을 할당된 기억 공간에 실제로 옮기는 기능​

바. 요약설명 :

고급언어를 작성하면 컴퓨터가 알아 들을 수 있는 기계어로 번역하는 컴파일이라는 과정이 필요하다.과정은 전처리라 코드를 재정리하는 과정후 2진수의 기계어로 변환하는 어셈블리 과정을 거친다.어셈블리 후 여러파일을 합치는 링크라는 과정을 거치면 컴퓨터가 알아들을 수 있는 프로그램이 생성된다.​

  1. IDE란 무엇인지 조사하고, 초등학생이 알아들을 수 있도록 50자 이내로 요약해보세요 (1시간 소요)

가. IDE란? :

소스코드를 편집할 수 있는 유용한 기능과 빌드,디버깅등을 제공하는 통합개발 환경 툴이다.​

나. 비주얼스튜디오란? :

마이크로 소프트에서 제공하는 IDE.윈도우 진영의 데스크톱 어플,웹어플등을 개발할 수 있다.​

다. 에디터플러스란? :

대한민국에서 개발한 윈도우용 텍스트 에디터.프로그래밍언어나 html태그등을 색상으로 표시해주는 기능을 지원한다.​

라. 이클립스란? :

자바에서 주로 사용되는 통합개발 환경.​

마. 요약설명 :

IDE란 소스 코드를 편집할 수 있고 빌드,디버깅등 프로그래밍에 필요한 기능들이 모두 들어있는 통합개발환경이다.윈도우 프로그램을 개발할때 주로 비주얼 스튜디오를 사용하며 자바개발에는 이클립스가 주로 사용됨.

  1. 비주얼 스튜디오를 설치하시오. 본 게시판의 201,204,205번 참조하세요 (1시간 소요)

(※ 본인의 취향에 따라, 비주얼 스튜디오 이외의 IDE를 설치하여도 무방함)

가. 다운로드 받는 장소 URL :https://developer.apple.com/xcode/​​

나. 설치결과 스크린샷 :

%
5. 구글 및 검색, 또는 본 게시판의 공지에 있는 교재를 찾아보고 기본 프로젝트를 생성해 보세요 (1시간 소요)

가. 비주얼스튜디오에서 C 콘솔 프로젝트를 만드는 과정을 1줄로 쓰시오 (주의 : C++콘솔이 아니라 C임) :

새프로젝트 생성후 .c로 파일 생성

나. 전처리기 stdio 를 include 하는 방법을 1줄로 쓰시오 :

#inlucde<stdio.h>

다. '나. 항목을 왜 하는지 쓰시오 :

stdio.h의 표준입출력 함수들을 사용하기위해 헤더파일 불러옴

라. 다음의 기본 코드를 작성 및 암기하시오. 앞으로 모든 프로그램은 아래 2줄을 기본으로 작성하여 진행됨.

int main()

{ return 0; }

마. 기본코드에 자신의 닉네임을 출력하는 프로그램 1줄을 적어보시오. printf를 이용하시오.

printf("Hello I'm 콜리")

바. '마' 항의 실행결과 스크린샷을 올리고, 작성한 소스코드를 업로드하시오. 소스코드는 텍스트로 올리시오.


#include <stdio.h>

int main(void)

{

printf("Hello I'm 콜리");

return 0;

}

심화과제 제출 양식

  1. 2020년 3월 달력을 출력하는 프로그램을 짜고, 결과물 스크린샷및 소스코드를 올리세요. 소스코드는 텍스트로 올리세요. 'ㅂ+한자' 를 눌러 나오는 특수문자를 이용하여 표를 구현하고 표 안에 월화수목금토일 및 일자를 적어 보세요.


#include <stdio.h>
#include <string.h>

int main(void)
{
    int date;
    unsigned char dateLength;
    printf("       2020년 3월       \n");
    printf("│일  월  화  수  목  금  토  │\n");
    printf("│────────────────────────│\n");
    for(date=1;date<32;date++){
        char s1[10];
        sprintf(s1,"%d",date);
        dateLength=strlen(s1);
        if(date%7==1&&dateLength==1){
            printf("│  %d",date);
        }
        else if(date%7==1&&dateLength==2){
            printf("│ %d",date);
        }
        else if(date%7==0&&dateLength==1){
            printf("  %d   │\n",date);
        }
        else if(date%7==0&&dateLength==2){
            printf("  %d  │\n",date);
        }
        else if(dateLength==1){
            printf("  %d",date);
        }
        else if(dateLength==2){
            printf(" %d",date);
        }
        
    }
    printf("               │\n└────────────────────────┘");
    return 0;
}

profile
내가 볼려고 만든 블로그

0개의 댓글