디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

3. 나의 첫 번째 SPARK Ada 프로그램

*루비*갤로그로 이동합니다. 2025.04.07 05:02:04
조회 76 추천 0 댓글 0


_3605feef-7e3c-4e16-91fb-61b599f84613

드디어 여러분의 첫 번째 SPARK Ada 프로그램을 작성해 볼 시간입니다! 2장에서 개발 환경을 성공적으로 구축했으니, 이제 실제로 코드를 작성하고 실행하는 경험을 통해 SPARK Ada의 기초를 다져보겠습니다. 이번 장에서는 화면에 간단한 메시지를 출력하는 아주 기본적인 프로그램을 만들면서 코딩의 첫걸음을 내딛어 볼 거예요.

3.1 아주 간단한 프로그램 만들기 (화면에 글자 보여주기)

프로그래밍을 처음 시작할 때 가장 많이 사용하는 예제 중 하나는 화면에 “Hello, World!”라는 문구를 출력하는 프로그램입니다. SPARK Ada에서도 이와 비슷한 간단한 프로그램을 만들어 보면서 기본적인 코드 구조를 익혀볼게요.

다음 코드를 텍스트 편집기를 열어 작성해 보세요.

with Ada.Text_IO; use Ada.Text_IO;

procedure Hello is
begin
   Put_Line ("Hello, World!");
end Hello;

작성한 코드는 hello.adb라는 이름으로 저장해 주세요. .adb는 Ada 언어의 소스 파일 확장자입니다.

이제 이 코드가 어떤 의미를 가지고 있는지 간단히 살펴볼까요?

  • with Ada.Text_IO; use Ada.Text_IO;: 이 부분은 화면에 텍스트를 출력하는 기능을 제공하는 Ada.Text_IO라는 라이브러리를 사용하겠다고 선언하는 것입니다. 마치 요리를 할 때 필요한 도구나 재료를 먼저 준비하는 것과 비슷하다고 생각하면 돼요. use Ada.Text_IO;는 Ada.Text_IO에 있는 기능을 이름 앞에 Ada.를 붙이지 않고 바로 사용할 수 있도록 해줍니다.
  • procedure Hello is: 이것은 Hello라는 이름의 프로그램을 시작하겠다는 선언입니다. procedure는 일련의 동작을 묶어 놓은 코드 블록을 의미하며, 프로그램의 기본적인 단위가 됩니다. is 키워드는 프로그램의 내용이 뒤에 이어진다는 것을 나타냅니다.
  • begin: 이 키워드는 프로그램의 실제 실행 코드가 시작되는 지점을 나타냅니다.
  • Put_Line ("Hello, World!");: 이 부분이 바로 화면에 텍스트를 출력하는 역할을 합니다. Put_Line은 Ada.Text_IO 라이브러리에서 제공하는 기능으로, 큰따옴표 안에 있는 텍스트(Hello, World!)를 화면에 출력하고 줄을 바꿔줍니다.
  • end Hello;: 이 키워드는 Hello라는 프로그램이 끝나는 지점을 나타냅니다. end 뒤에 프로그램 이름을 다시 써주는 것은 프로그램의 끝을 명확하게 표시하는 좋은 습관입니다.

3.2 코드를 쓰고 실행하는 순서 (컴파일과 실행)

우리가 작성한 hello.adb 파일은 사람이 이해할 수 있는 형태의 코드입니다. 컴퓨터가 이 코드를 실행하기 위해서는 컴퓨터가 이해할 수 있는 언어, 즉 기계어로 번역하는 과정이 필요합니다. 이 과정을 컴파일(Compile)이라고 합니다.

FreeBSD 환경에서 SPARK Ada 코드를 컴파일하고 실행하는 순서는 다음과 같습니다.

터미널 열기: 먼저 터미널 애플리케이션을 실행합니다.

소스 파일이 있는 디렉토리로 이동: cd 명령어를 사용하여 hello.adb 파일이 저장된 폴더로 이동합니다. 예를 들어, 파일을 홈 디렉토리에 저장했다면 cd ~ 명령어를 입력하고 Enter 키를 누릅니다.

컴파일하기: 터미널에 다음 명령어를 입력하고 Enter 키를 누릅니다.

gnatmake hello.adb

gnatmake는 Ada 코드를 컴파일하고 실행 가능한 프로그램을 만들어주는 도구입니다. 이 명령어를 실행하면 hello라는 실행 파일이 생성됩니다.

실행하기: 컴파일이 성공적으로 완료되면, 터미널에 다음 명령어를 입력하고 Enter 키를 누릅니다.

./hello

여기서 ./는 현재 디렉토리에 있는 파일임을 나타냅니다. 이 명령어를 실행하면 화면에 “Hello, World!”라는 메시지가 출력될 거예요!

축하합니다! 여러분은 첫 번째 SPARK Ada 프로그램을 성공적으로 작성하고 실행했습니다.

3.3 코드가 어떻게 실행되는지 간단하게 알아보기

우리가 작성한 코드가 컴퓨터에서 실행되기까지에는 몇 가지 단계를 거칩니다. 간단하게 그 과정을 알아볼까요?

  1. 작성: 우리는 텍스트 편집기를 사용하여 hello.adb 파일에 SPARK Ada 코드를 작성했습니다. 이 파일은 사람이 읽고 이해할 수 있는 소스 코드입니다.
  2. 컴파일: gnatmake 명령어를 사용하여 소스 코드를 컴퓨터가 이해할 수 있는 기계어 형태로 번역했습니다. 이 과정에서 컴파일러는 우리가 작성한 코드에 문법적인 오류는 없는지, 의미상 문제가 없는지 등을 확인합니다. 컴파일이 성공하면 실행 가능한 파일(hello)이 만들어집니다.
  3. 실행: ./hello를 입력하여 실행 파일인 hello를 호출합니다. 운영체제는 이 파일을 읽고 중앙 처리 장치(CPU)에 실행 지시를 전달하며, 그 결과로 “Hello, World!”라는 메시지가 화면에 출력됩니다.

이처럼 프로그래밍은 우리가 원하는 동작을 컴퓨터에게 지시하기 위해 특정 규칙(문법)에 맞춰 코드를 작성하고, 이 코드를 컴퓨터가 이해할 수 있는 형태로 변환하여 실행하는 과정이라고 할 수 있습니다.

3.4 에러와 친해지기 (오타는 컴퓨터가 싫어해요!)

프로그래밍을 하다 보면 예상치 못한 에러를 만나는 경우가 많습니다. 특히 처음 코딩을 배우는 단계에서는 오타나 문법 규칙을 잘 몰라서 발생하는 에러가 흔합니다. 에러가 발생하는 것은 때로는 좌절스러울 수 있지만, 에러 메시지를 통해 우리는 코드를 더 잘 이해하고 수정할 수 있으며, 궁극적으로 더 나은 프로그래머가 되도록 도와주는 중요한 배움의 기회이기도 합니다.

예를 들어, hello.adb 파일에서 Put_Line을 PUt_Line과 같이 대소문자를 틀리게 입력하거나, 큰따옴표(")를 빼먹고 컴파일을 시도해 보세요.

with Ada.Text_IO; use Ada.Text_IO;

procedure Hello is
begin
   PUt_Line ("Hello, World!); -- 'u'가 대문자, 마지막 따옴표 빠짐
end Hello;

이 코드를 저장하고 다시 gnatmake hello.adb 명령어를 실행하면, 컴파일러는 에러 메시지를 출력하면서 컴파일에 실패할 것입니다. 에러 메시지는 어떤 줄에서 어떤 종류의 오류가 발생했는지 알려주므로, 이 정보를 바탕으로 코드를 수정할 수 있습니다.

컴퓨터는 우리가 작성한 코드를 아주 정확하게 이해하려고 합니다. 따라서 오타나 문법적인 실수는 컴퓨터에게 혼란을 줄 수밖에 없습니다. 처음에는 에러 메시지가 어렵게 느껴질 수 있지만, 차근차근 에러 메시지를 읽고 이해하려고 노력하는 것이 중요합니다. 에러를 두려워하지 말고, 에러를 통해 배우는 즐거움을 느껴보세요!

이제 여러분은 SPARK Ada 프로그램을 작성하고 실행하는 기본적인 방법을 알게 되었습니다. 다음 장에서는 더 다양한 종류의 프로그램과 SPARK Ada의 강력한 기능들을 함께 살펴보겠습니다.

https://nimfsoft.com/2025/04/07/my-first-spark-ada-program/

 




추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 잘못하면 바로 인정하고 사과할 것 같은 스타는? 운영자 25/04/07 - -
공지 프로그래밍 갤러리 이용 안내 [88] 운영자 20.09.28 43037 64
2841198 토익 700정도면 이력서 유의미함? [1] 프갤러(175.119) 13:16 2 0
2841197 웹 기술은 어떤 브라우저 지원되는지 체크하려면 [1] ㅆㅇㅆ찡갤로그로 이동합니다. 13:15 7 0
2841196 제이쿼리의 유행은 다른게 아니라 슈퍼막코더(126.233) 13:14 6 0
2841195 제이 쿼리가 인기였던건 브라우저 문제때문 ㅆㅇㅆ찡갤로그로 이동합니다. 13:11 13 0
2841194 잠시 자리를 비웠더니 [4] 슈퍼막코더(126.233) 13:07 20 0
2841193 워드프레스 → 드루팔 → 워드프레스 [3] *루비*갤로그로 이동합니다. 13:04 10 0
2841192 통통한 애들이 개발자하나봄 [1] ㅇㅇ갤로그로 이동합니다. 13:03 16 0
2841191 브갤 왜케 노잼임 [2] ㅇㅇ갤로그로 이동합니다. 13:01 15 0
2841190 제이쿼리가 각광받았던 이유가뭐임? [2] 프갤러(211.234) 12:59 14 0
2841189 비주얼 스튜디오에 러스트 통합 안 할려나 ㅇㅅㅇ [2] 강유현갤로그로 이동합니다. 12:57 9 0
2841188 민주주의 좇까고 그냥 인생은 뒷통수한방타이밍임 인간 뒷통수한방(1.213) 12:51 10 0
2841187 좆같은 버거킹 알바 새끼 죽이고 싶은 ㅋㅋㅋㅋ 프갤러(223.63) 12:47 11 0
2841186 나는 수정 민주주의라는게 있었음 좋겠음 ㅆㅇㅆ찡갤로그로 이동합니다. 12:47 20 0
2841185 오라클 클라우드 가상머신 무료도 너무 넉넉한ㅋㅋㅋㅋ [2] 프갤러(223.63) 12:45 19 0
2841184 김문수가 임金체불부터 해결하자던데 공감은 되는데 [1] 넥도리아(112.170) 12:27 13 0
2841182 나님.. 넥도리아가 괴롭혀서 탈갤합니당.. [12] ♥냥덩소프트♥갤로그로 이동합니다. 12:24 31 1
2841181 오늘예 반프리 한 일 ㅇㅅㅇ [2] 강유현갤로그로 이동합니다. 12:23 32 0
2841180 좆바충들은 기강 함 잡아야됨 ㅇㅅㅇ [11] 강유현갤로그로 이동합니다. 12:18 65 0
2841179 팀장으로 이직했는데 [6] ㅇㅇ(211.234) 12:14 43 0
2841178 냥덩이좀 없애봐 관심도 주지마. 넥도비디오(112.170) 12:12 19 0
2841176 불과5년전만해도 전부 구글 쓰고 그랬는데 요즘은 절대아님 ㅋㅋㅋ 뒷통수한방(1.213) 11:56 25 0
2841175 구글하고 좇센은 매우 유사함 뒷통수한방(1.213) 11:53 24 0
2841174 20대 백수들이 나랏돈 나온다는건 무슨논리임?? 뒷통수한방(1.213) 11:51 25 0
2841173 아 쥐포새끼들 다 뒤졌으면 좋겠다 병신 내수원툴 애미디진새끼들 ㅉㅉ 프갤러(218.146) 11:49 18 0
2841172 코에이 도스 게임 배경음악 씨디로 듣기 발명도둑잡기갤로그로 이동합니다. 11:44 11 0
2841171 김문수는 어떤 사람인가 발명도둑잡기갤로그로 이동합니다. 11:35 17 0
2841170 김건희의 윤석열 평가 발명도둑잡기갤로그로 이동합니다. 11:31 23 0
2841169 php가 병신들이나 쓰는 언어이지만 상속 없는건 흠이 못된다. [3] 프갤러(121.138) 11:25 52 0
2841168 오늘도 새벽1시까지 일한다 [8] ㅆㅇㅆ찡갤로그로 이동합니다. 11:18 68 0
2841167 김문수 반기업 운운. "친시장, 친기업, 친경영인 서로 다른 개념" 발명도둑잡기갤로그로 이동합니다. 11:18 13 0
2841166 문제는 트럼프 끝나고 3년일듯. 버핏도 현금관망임 [3] ㅆㅇㅆ찡갤로그로 이동합니다. 11:15 38 0
2841165 문서 쓰기 정말 싫다 [3] 프갤러(14.52) 11:14 29 0
2841164 객체 지향이 참 오묘하고 어려워 [1] 프갤러(210.104) 11:14 28 0
2841163 근데 이제 역대급 하락만 예상된다는데 [5] ㅆㅇㅆ찡갤로그로 이동합니다. 11:12 43 0
2841162 아스카 주식 계좌 보고 가라 [7] 아스카영원히사랑해갤로그로 이동합니다. 11:06 56 0
2841161 머임 php도 함수가 객체냐 ㅇㅅㅇ? [2] 강유현갤로그로 이동합니다. 11:05 36 0
2841160 PHP쓰는 틀딱새끼들 특) 상속 그딴거 모름 ㅋㅋ [2] 강유현갤로그로 이동합니다. 11:02 28 0
2841159 "국민의힘 갤러리에 대선 이야기 하면 30일 차단 중" 발명도둑잡기갤로그로 이동합니다. 10:56 15 0
2841158 백: 러스트. 프론트:js. 웹디:html css. 이게 진리인듯 [2] 프갤러(121.138) 10:54 37 0
2841157 패턴매칭 이렇게 쓰니까 깔끔하네 ㅇㅅㅇ [7] 강유현갤로그로 이동합니다. 10:51 53 0
2841156 음기 충전 발명도둑잡기갤로그로 이동합니다. 10:50 18 0
2841155 따뚯하구낭☀+ ♥냥덩소프트♥갤로그로 이동합니다. 10:50 24 1
2841154 프론트엔드가 왜필요한지 모르겠다 [1] ㅇㅇ갤로그로 이동합니다. 10:48 34 0
2841153 청년이 희망인 나라 발명도둑잡기갤로그로 이동합니다. 10:46 13 0
2841152 러스트가 또 해냈다. hyperlight wasm [5] 프갤러(121.138) 10:45 37 0
2841151 비추누르지마세요 [1] Meow갤로그로 이동합니다. 10:42 40 5
2841150 매크로 프로그램 만들어 볼려고 공부중인 쌩초짜인데 [1] ㅇㅇ(115.143) 10:39 20 0
2841149 프붕이들 버티컬 마우스 씀 ㅇㅅㅇ? 강유현갤로그로 이동합니다. 10:39 15 0
2841148 DMZ 이남은 미군영토지 한국 영토가 아니다 발명도둑잡기갤로그로 이동합니다. 10:37 13 0
뉴스 백수아파트, 경수진·고규필의 현실 공감 미스터리 코믹극 디시트렌드 04.08
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2