티스토리 뷰

기계 : 사람이 원하는 작업을 수행하기 위해 동력을 제어하고 관리하는 장치

프로그램 : 사람이 원하는 동작을 기계가 수행할 수 있도록 구체적으로 실행 가능한 명령들을 순서대로 작성한 것

컴퓨터 프로그램 : 컴퓨터를 동작시킬 수 있는 프로그램

-사람이 원하는 작업을 할 수 있도록 명령들을 모아 둔 것


프로그래밍 : 프로그램을 작성하는 작업

코딩 : 컴퓨터가 수행 할 수 있는 암호화 된 코드를 작성하는 것.

프로그램의 좁은 의미와 넓은 의미


좁은 의미

  • 사람이 작업을 수행할 수 있도록 명령어들의 순서를 설계, 작성, 테스트 하는 것.

  • 프로그램 설계, 작성, 테스트

넓은 의미

  • 원하는 작업을 수행하지 못한 경우 오류를 찾는 디버깅, 프로그램 개선, 보완 등의 작업을 포함하는 것.

  • 프로그램 디버깅, 개선 및 보안


언어 : 다른 사람들과 의사소통하기 위한 말과 글

프로그래밍 언어 : 프로그래밍에 사용되는 언어로, 컴퓨터랑 대화하기 위한 언어.

소프트웨어의 정의

  • 어떤 작업을 수행하기 위한 한 개 이상의 프로그램과 데이터들의 집합

  • 일반적으로 프로그램이라고 부르는 것들은 대부분 소프트웨어를 말함.

  • 사람이 원하는 작업을 수행

  • 하드웨어를 동작시킴

  • 다른 소프트웨어에서 사용되는 데이터들을 만들어내는 작업을 수행

소프트웨어의 종류


시스템 소프트웨어

  • 컴퓨터 시스템의 하드웨어를 동작시키기 위한 기본적인 소프트웨어

  • 하드웨어를 운영하는데 필요한 각종 장치 드라이버, 시스템 유틸리티 등

*유틸리티 : 사용자가 컴퓨터 사용을 효율적으로 할 수 있도록 도와주는 sw

응용 소프트웨어

  • 컴퓨터로 다양한 작업을 수행하기 위해 개발 된 소프트웨어

  • 문서 작성, 그림 편집, 웹 검색, 데이터 처리 등의 작업 수행

프로그래밍 소프트웨어 : 컴퓨터 프로그래밍을 위한 소프트웨어로 컴파일러, 디버거, 인터프리터, 링커, 텍스트 에디터 등

통합개발환경(ide) : 프로그래밍 관련 프로그램들을 모두 함께 통합적으로 제공하는 소프트웨어

프로그래밍 언어의 역사

  • 직물제조기를 이용하여 직물의 무늬를 원하는 모양으로 만들기 위해 펀치 카드를 이용

  • 자동 피아노를 연주시키기 위해 건반의 연주 순서가 기록되어 있는 종이 롤 사용

  • 컴퓨터가 만들어진 이후 수많은 프로그래밍 언어가 만들어져 왔으며, 컴퓨터의 계산이나 동작을 기술하기 위한 명령어나 함수 등을 사용하여 편리하게 프로그래밍을 할 수 있게 됨.

  • 현재까지 많이 알려져 있는 프로그래밍 언어는 기계어, 어셈블리어, BASIC,C 등등

프로그래밍의 분류


이해 정도에 따른 분류

  • 저급 언어

    • 기계나 컴퓨터를 통해 바로 실행 시킬 수 있거나 간단히 변환해 실행 시킬 수 있는 프로그래밍 언어

    • 기계어, 어셈블리어

      • 기계어

        • cpu와 같은 하드웨어들을 직접 동작시킬 수 있는 저급의 프로그래밍 언어

        • 2진 코드와 같은 형태의 명령어 사용

        • 하드웨어에 대해 자세히 알지 못하면 사용하기가 매우 어려움


      • 어셈블리어

        • 기계어와 1대1로 대응 되는 언어로 기계어의 사용을 보다 쉽게 하기 위해 만들어짐

        • 어셈블리어로 작성된 프로그램은 어셈블러 라는 번역 프로그램을 이용하여 기계어 프로그램으로 변환하여 실행.

  • 고급언어

    • 사람이 이해하고 사용하기 쉬운 형태로 발전된 다양한 프로그래밍 언어

    • 고급언어로 작성된 프로그램을 기계나 컴퓨터를 통해 실행시키려면 그에 맞는 명령어들로 변형


사용 목적에 따른 분류

  • 시스템 개발용 언어

    • 시스템 소프트웨어를 개발하는데 주로 사용되는 언어들로 컴퓨터 하드웨어를 직접 동작시키고 제어 할 수 있는 프로그램들을 개발 할 때 사용 하는 언어

    • 운영체제와 하드웨어에 대한 지식을 필요로 하며 c등이 있음

  • 응용프로그램 개발용 언어

    • 운영체제가 설치된 시스템에서 동작하는 응용프로그램을 만들기 위해 주로 사용되는 언어

    • 사용자가 원하는 프로그램을 편리하게 만들 수 있다.

  • 웹 개발용 언어

    • 웹페이지의 작성, 운영, 관리 등을 위해 사용하는 언어

    • htmL, CSS, JSP, ASP 등등

  • 게임 개발용 언어

    • 게임 개발을 위해 편리하게 사용 될 수 있는 언어와 게임 설계, 개발, 테스트, 유지 관리 등에 사용

  • 범용 프로그램 언어

    • 다양한 목적을 위해 여러 가지 형태로 사용 될 수 있는 프로그래밍 언어

    • 씨나 자바 등 최신 프로그래밍 언어

  • 교육용 프로그래밍 언어

    • 프로그래밍의 언어의 기초를 교육하기 위한 단어

    • 스크래치, 파이썬, 씨, 자바 등

프로그래밍 방법에 따라 분류

절차적 프로그래밍

  • 컴퓨터가 수행 할 수 있는 명령어, 함수, 프로시저, 서브루틴 등을 이용하여 프로그래밍 하는 방법

  • 대부분의 프로그래밍 언어에서 지원

객체 지향 프로그래밍

  • 클래스를 이용하여 객체를 만들고 객체들을 이용하여 프로그래밍 하는 방법

  • 데이터 추상화, 캡슐화 메시징, 모듈화, 다형성, 상속

  • 씨쁠, 씨#, 자바 등

이벤트 기반 프로그래밍

  • 클릭, 드래그와 같은 이벤트를 이용하여 프로그래밍 하는 방법

  • 비쥬얼 배이직, 비쥬얼 씨쁠

데이터 흐름형 프로그래밍

  • 데이터들의 흐름을 나타내는 선들을 연결하여 프로그래밍 하는 방법

  • 랩뷰




프로그램 설계

  • 프로그램을 개발하기 위한 문제 해결과 계획 과정

  • 목적과 조건들을 체계적으로 기술하고 설계

  • 입출력과 처리 방법 등

프로그램 개발

  • 프로그램의 설계의 따라 실제 프로그램을 개발

  • 프로그램의 입출력과 처리를 프로그래밍 언어를 이용해 실제 구현

  • 만들고자 하는 프로그램의 활용 목적과 프로그램이 운영 될 시스템에 따라 적합한 프로그래밍 언어 선택 중요

프로그램 시험

  • 정확히 동작하는지에 대한 테스트와 수정

  • 정상 동작 여부를 다양한 상황이나 입출력 데이터들을 이용하여 검증

프로그램 유지 보수 및 관리

  • 프로그램 개발 후 새로운 기능을 추가하거나 보완하기 위해 프로그램의 기능을 개선하거나 추가하는 과정

  • 체계적인 유지 보수 및 개선을 위해 버전 관리 및 각종 관련 자료를 문서화함

프로그래밍

-주어진 문제 상황을 파악하고, 문제를 해결 할 수 있는 알고리즘을 생각하여 프로그래밍 언어로 구성하는 문제 해결 과정,

프로그래밍 언어를 활용한 문제 해결과정


  • 정확한 결과가 나오는 프로그램이 작성될 때까지 컴파일 텍스트, 디버깅의 작업이 반복되는 과정

1.알고리즘 설계

2.소스 코드 작성

3.실행 파일 변환

4.프로그램 테스트

5.프로그램 디버깅

6.문제 상황 파악

알고리즘

  • 어떤 목적을 수행하기 위한 단계적인 절차

  • 계산 및 처리를 통해 데이터가 다루어지는 구체적인 과정을 의미

  • 시작 단계에서 입력 내용, 준비 상태부터 수행과정에서의 구체적인 계산과 처리과정, 최종 출력 내용까지 구체적으로 표현한 것

알고리즘 표현 방법

  • 구체적인 계산이나 처리 과정인 알고리즘을 표현하기 위해 일반적인 말과 글인 자연어, 순서도, 의사코드, 프로그래밍 언어 등이 주로 사용

알고리즘의 조건

  • 알고리즘은 입력, 출력, 명확성, 유한성의 조건을 만족해야 한다.

  • 알고리즘은 기계를 통한 자동화를 가능하게 한다.


입력 : 외부에서 입력되는 자료가 0개 이상 존재

출력 : 적어도 1개 이상의 결과가 출력

명확성 : 수행 과정이 명확하고 구체적

유한성 : 유한한 시간 내 수행.

알고리즘의 역할

  • 알고리즘은 프로그래밍 언어를 사용해 바로 프로그램으로 구현

  • 효율적으로 설계된 알고리즘은 짧은 시간에 보다 많은 작업을 더 빠르고 정확하게 수행할 수 있다.


순서도

  • 알고리즘을 구체적으로 표현 할 수 있는 가장 간단한 방법 중 하나

  • 도형들과 처리 순서를 나타내는 흐름선을 사용

알고리즘 작성의 원칙

  • 전체적인 처리 과정을 살펴보기 쉽게

  • 다른 사람들이 알아보기 쉽도록 작성

  • 처리과정 단순화

알고리즘 작성 방법

구조적 설계 방법

  • 알고리즘을 명확하게 표현하고 효과적으로 작성하기 위한 방법

  • 순차, 선택, 반복 의 3가지 방법만을 사용하여 알고리즘을 표현하는 설계 방법

컴파일

  • 작성한 소스코드를 미리 지정된 변환 방법과 규칙에 따라 컴퓨터가 실행 할 수 있는 실행 파일로 변환하기 위해서 변환하는 작업


컴파일러

  • 하나의 프로그램을 만들기 위해 여러 개의 소스 코드를 사용할 수 있음

  • 각각의 소스 코드들은 중간 단계의 기계어 코드 집합인 오브젝트 파일로 변환된 후

  • 링커 프로그램에 합쳐져 프로그램이 만들어짐

버그 : 오류

디버그 : 오류를 찾아내 제거

디버거 프로그램

  • 프로그램을 단계적으로 실행하면서 오류를 찾아내어 수정

  • 디버깅중 논리적 오류는 컴파일러에 의해 실행 가능한 프로그램으로 변환되므로 잘못된 결과가 출력 될 수 있다.

# 전처리기

  • 컴파일을 수행하기 전에 먼저 처리

  • 표준 라이브러리 함수 등의 동작을 따로 정의해 놓은 파일

전처리구문 : 헤더파일이 포함된 문장은 메인함수 앞에 작성

메인 함수

  • 프로그램 실행 시 운영체제에 의해서 맨처음 호출

  • 맨 나중에 종료

  • 씨언어는 메인함수를 반드시 하나 이상 가지고 있다

세미콜론 – 연산을 수행하는 문장의 끝으로 인식

return

  • 두 가지 의미


  1. 함수를 호출한 영역으로 값 반환

  2. 함수 종료


0을 반환 하는 이유 : 프로그램이 실행되면, 운영체제가 제일 먼저 호출하는 함수가 메인함수 인데, 프로그램 종료 시 호출자인 운체에게 o을 반환 한다.

0을통해 정상 종료되었는지 판단함.


Comments