본문 바로가기

Programming/Codeup.kr기초100제 && 컴퓨터 이야기

[기초-입출력] 년월일 입력받아 형태 바꿔 출력하기 && 프로그래밍 언어 종류

마치 언어 처럼 프로그래밍언어는 수 천개 정도 있다. 그 중에서 몇가지만 소개해 보려고 한다.

Ada:

귀족을 뜻하는 독일어에서 따왔으며, 미국 국방부에서 사용했었다. 어떤 프로그램이라도 만들 수 있게 했기 때문에 사양이 대규모이다. 요즘에는 전문가외에는 잘 안쓰인다.

●ABAP:

SAP용 프로그램 개발에 쓰이는 언어이다. Cobol에 영향을 받아 영어문장 쓰듯이 쓸 수 있다. 자체로 SQL이 내장되어있다.

●ActionScript(액션스크립트):

초창기엔 단순히 애니메이션을 조작하는 간단한 언어였다. 헌데, 점차 발전을 거듬해 3.0버전은 어도비 사가 매크로 미디어를 인수하고 개량하여 세상에 나왔다. JavaScript와 비슷하며, 객체지향 언어로 바뀌었다.

●ALGOL(알골):

ALGOrithemic Language의 준말이다. 알고리즘의 연구개발을 위해 개발되었다. 파스칼, C언어 등 수많은 언어에 영향을 끼쳤다. 당시로선 지나치게 복잡하여 실무에 거의 안쓰이고 교육용으로 쓰이다가, 현재는 거의 사장되었다. 그러나 프로그래밍 언어 역사의 한획을 그은 중요한 언어이다.

●BASIC(베이직):

Beginner's All-purpose Symbolic Instruction Code (초보자용 다목적 기호명령 코드) 이다. 간단한 영어의 어구를 기반으로 제작했기에 쉽게 배울 수 있다. 이 때문에 교육용으로 사용하기도 한다.

●C:

어셈블리에 맞먹는 하드웨어 제어에 고급언어라 '중급언어'라는 카테고리를 새로만들어 들어갈 정도이다. 오래되었지만 여전히 강력한언어

●C++:

C언어에서 파생되었으며 객체지향언어가 추가되었다. 추가로 ++는 변수에 1을 더해서 저장하라는 것이다.

●C#:

마이크로소프트에서 개발한 객체지향 언어이다. C++와 JAVA에 큰 영향을 받았다. 이름 유래역시 음계에서 #인 반음을 올렸다는 뜻과 ++++를 #으로 배열했다는 뜻으로 두가지가 있다.

●COBOL(코볼):

COmmon Business-Oriented Language의 약자이다. 여러번 규격이 개정되어 현재는 객체 지향도 지원한다. 미 해군이 개발에 참여하는 등 일반 어무에서 사용할 목적으로 만들어졌고, 실제로 미국 겆ㅇ부에서 사용하였다. 보고서 작성이나 히계 계등을 잘 지원한다.

●CoffeScript:

JavaScript를 간단히 하여서 만든 언어이다.

●D:

원래 이름은 Mars였는데 제작자중 한명이 계속 D라고 불러서 D로 이름 붙여졌다. C++의 복잡성을 줄이고 현대적인 언어 개념을 포함한 언어를 만들고자 하여 만든 언어이다.

●Erlang:

스웨덴의 에릭슨에서 개발한 함수형 병행성 프로그래밍 언어이다. 오늘날 가장 많이 쓰이는 병행성 프로그래밍 언어이다. 따라서 가벼운 프로세스를 아주 빠르게 생성한다.

●Forth:

임베디드,실시간 처리를 위한 언어이다.

●Fortran(포트란):

FORmular TRANslator의 약자로 고대의 프로그래밍 언어이다. 최고의 고급 언어들 중 하나이다. 과학 계산용으로 주로 사용되는 매우 간결하고 엄격한 구문 형식을 가지고 있는 프로그래밍 언어이다.

●Go:

구글에서 만든 언어이다. 컴파일 언어이지만 컴파일 속도가 매우 빨라 인터프리터 언어 처럼 쓸 수 있다. 간결하게 코드를 작성할 수 있으면서도 풍부한 라이브러리 덕분에 막강한 기능을 쉽게 구현할 수 있는게 특징이다.

●Haskell(하스켈,해스켈):

순수 함수형 프로그램 언어이다. 표현력이 좋고, 코드가 간결하며, 알고리즘의 구현이 직관적이고, 부수효과가 없고, 동시성이 보장된다. 하지만, 함수형 언어라는게 일반적인 프로그래밍 언어랑 너무 달라서 쉽게 익숙해지기도 어렵고 현실적으로 사용하기 어려운 점이 많다.

●IDL:

데이터 해석에 주로 사용되는 언어이다. 천문학이나 영상의학분야에서 많이 사용된다.

●Java(자바):

선마이크로시스템즈에서 개발한 객체 지향 프로그래밍 언이다. 2010년에 오라클에게 인수되어 현재 저작권자는 오라클이다. 플랫폼에 독립적인 언어라 바이트 코드인 클래스 파일(.class)를 생성후 애뮬레이터인 JVM이 해석하여 실행한다. 수 많은 개발자와 레퍼런스를 보유해 인기가 매우 높다. 생산성도 좋고 기기 호환성이 좋아서, Windows버전 MAC버전따로 안만들어도 그냥 하나만 만들면 끝이다. 하지만 예외처리가 불편하고 소스코드길이가 무척 길다.

●JavaScript(자바스크립트):

스크립트 언어에 해당되며 거의 모든 웹브라우저에 인터프린터가 내장되어있다. Java와는 상관이 없다.

●Julia(줄리아):

MIT에서 개발한 동적 프로그래밍 언어이다. 공학 분야에서 빠른 계산 성능을 내기 위해 개발되었다. C보단 느리지만 Python보단 빠르다. 자체적으로 수학 라이브러리를 탑재하고있다.

●LISP:

LISt Processor의 준말로 함수형 언어이다. 포트란 다음으로 오래된 고급언어이다. Clojure(JVM에서 실행되는 LISP의 방언),Racket,Scheme등 여러개로 나뉜다.

●Lua(루아):

달을 의미하는 포트루갈 단어에서 유래했다. 스크립트 언어를 하나의 목적으로 가지고있기에 굉장히 작고 가벼운 인터프린터형 언어이다.

●Objective-C(오브젝티브씨):

C언어에서 파생된 객체 지향 프로그래밍 언어이다. 국내에선 '옵씨','오브젝씨'라고 불리는 경우도 있다. 애플의 거의 모든 제품은 이 언어의 기반이다.

●Paskal(파스칼):

고급 프로그래밍 언어이다. 스위스의 니클라우스 비르트가 개발했다. 문법설계가 깔끔하여 구조적 프로그래밍의 개념을 구현하고 설명하기에 알맞아 교육용 언어로 분류된다. 참고로 필자는 Phaskal이다.

●Perl(펄):

Practical Extraction and Reporting Language(실용적인 데이터 취득 및 리포트 작성 언어)의 약자라고 한다. 제작자가 성서에서 아무 단어나 따와서 붙이고 약자는 나중에 가져다 붙였다. 언어자체의 자유도가 높고 표연력도 뛰어나며 코딩도 쉽다. 특히 텍스트를 처리하는 기능이 최강점으로 꼽힌다. 하지만 C보다 처리속도가 느리고 가독성이 매우 낮다. Write Once Read Never언어중의 하나이며, 펄로 짜놓으면 일자리가 보장된다는 농담반 진담반이 있다.(아무도 그 코드를 해석 못해서 자리를 대체할 수 없다는 말)

●PHP:

본래 Personal Home Page tools라는 약자였으나 지금은 PHP: Hypertext Preprocessor이라는 약자를 사용한다. 대표적인 서버사이드 스크립트 언어이다. 전 세계 수많은 웹 시스템의 기반이 되었다. C언어와 유사한 문법을 사용하고 소규모 웹페이지 제작시 쉽고 빠르다는 장점이있다. 보안적 취약성으로 인해 다른 언어를 쓰고있는 추세이다.

●Processing:

미디어아트 및 교육용 언어 지향의 오픈소스 프로그래밍 언어. MIT미디어 연구소 소속의 Casey Reas 와 Ben Fry가 개발했다. 간단한 명령 몇줄로 시각적으로 표현이 가능한게 장점이나 그 사용이 저조하다.

●R:

뉴질랜드 오클랜드 대학에서 개발한 통계 및 그래프 작업을 위한 인터프린터 언어이다. 뮤료이며 통계 관련 패키지가 많아서 내가 사용하고 싶은 모든 통계기법이 이미 어딘가에 패키지 형태로 구현되어있다고 봐도 무방하다. 웹브라우저에 내장할 수 없는 단점이 있다.

●RPG:

Repor Program Generator의 약자로 업무용 보고서나 파일, 데이터를 처리하는 프로그램을 쉽게 작성하도록 개발했다. 배우기 쉽고 일반적 업무용 보고서를 쉽게 만들 수 있다. 헌데 알고리즘 처리가 상대적으로 제한적이다.

●Ruby(루비):

객체 지향 프로그램언어이다. 파이썬과 지금도 서로 영향을 주고 있는 라이벌 관계이다. 언어의 문법이 쉽고 확장이 편해 복잡한 작업을 쉽게 할 수 있다는 점이 매력적이다. 일본에서 만들ㅇㅆ고 다방면에 절찬리 쓰이고 있다.

●Scala(스칼라):

SCAlable LAnguage의 약자이다.다중패러다임 프로그래밍 언어로, 객체지향 언어의 특성과 함수형 언어의 특성을 함께 가진다. 자바의 여러가지 단점들을 근본적으로 수정하였다.

●Smalltalk:

1970년대 초 미국 제록스 사의 팰러 앨토 연구센터에서 개발한 최초의 객체 지향 프로그래밍 언어이다. 수 많은 언어의 영향을 주었으며 GUI를 제공한 최초의 언어이기도 하다. 현재는 Java같은 강력한 객체 지향 프로그래밍 언어가 있어서 사용자가 극 소수이다.

●Swift:

기존 Objective-C의 단점을 보완하며, 같은 런타임을 사용하는 애플의 신규 언어체계이다. Objective-C에 없었던 현대 프로그래밍언어가 갖고있는 기능을 많이 포함시켰다.

●TypeScript:

CoffeeScript처럼 결과물로 JavaScript가 나온다. JavaScript를 개선한 언어이다.

●씨앗:

최초의 한글 프로그래밍 언어이다. 윈도우 95가 출시되고 한글 환경인 태극이 큰 위력을 발휘하지 못하게 되었으며 기술도 더이상 지원을 하지않는 동시에 소스코드 공개도 거부하면서 역사의 뒷길로 사라졌다.

●약속:

Python3를 기반으로한 한글을 이용하여 보다 쉬운 프로그래밍을 배울 수 있도록 만들어진 언어다.

●창조:

코딩은 C언어처럼 하지만 명령어와 함수등이 한글이다. 문법이 델파이와 비슷하다. 무료이지만 공식사이트가 망했다. 커뮤니티 사이트가 살아있으니 거기서 창조를 다운로드 할 수 있다.

문제 설명

년월일을 출력하는 방법은 나라마다, 형식마다 조금씩 다르다.

날짜를 년월일(yyyy.mm.dd)의 형태로 입력받아,

일월년(dd-mm-yyyy)의 형태로 출력하는 프로그램을 작성해보자.

(단, 한 자리 일/월은 0을 붙여 두 자리로, 년도는 0을 붙여 네 자리로 출력한다.)

입력

년월일이 '.'(닷)으로 구분되어 입력된다.

출력

년월일을

일월년으로 바꾸어 '-'(대쉬, 마이너스)로 구분해 출력한다.

입력 예시

2014.07.15

출력 예시

15-07-2014

도움말

출력하는 자리수를 지정하기 위해 %4d와 같은 형식을 사용할 수 있는데,
빈칸을 0으로 출력하기 위해서는 %04d와 같은 형식을 사용하면 된다.

[예시]
printf("%02d-%02d-%04d", d, m, y);


이전에 설명했듯 Python에선 zfill을 사용해주면 된다.