디시인사이드 갤러리

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

갤러리 본문 영역

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

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


_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 - -
2840459 취직하고 싶은데 학점, 자격증, 포트폴리오 뭐가 제일 중요한가요?? [2] ㅇㅇ(223.38) 04.07 33 0
2840456 오늘의 게임 기획 실마리: 대통령 탄핵 시뮬레이숀 게임 발명도둑잡기갤로그로 이동합니다. 04.07 20 0
2840455 보도방들 5~6년차가 가도 이랏시아리마세 아니었냐 ㅇㅅㅇ? [2] 강유현갤로그로 이동합니다. 04.07 68 1
2840454 gpt 이새끼 왜 갑자기 칭찬머신됨 [1] hrin(118.235) 04.07 61 0
2840453 트럼프가 달러 환율을 얼마나 떨구려나 hrin(118.235) 04.07 22 0
2840452 시스템 구현은 생각보다 안 어려운게 많음 근데 그걸 꾸미고 [6] ㅆㅇㅆ(113.192) 04.07 65 0
2840451 전산직 진로고민 프갤러(218.48) 04.07 36 0
2840450 아니 진짜 뭐 이런곳이 있음 [2] 프갤러(117.110) 04.07 75 0
2840449 ❤✨☀⭐나님 시작합니당⭐☀✨❤ ♥냥덩소프트♥갤로그로 이동합니다. 04.07 26 0
2840448 차단 풀렸다 발명도둑잡기갤로그로 이동합니다. 04.07 21 0
2840447 집에서 몰래 사업 준비중이던 아이템이랑 똑같은걸. ㅇ ㅅㅇ) 프갤러(60.196) 04.07 30 0
2840446 아이피 바꿨다. 근데 유니티랑 WPF랑 많이 다름 ㅇㅇ [15] ㅆㅇㅆ(113.192) 04.07 113 0
2840444 유현이 취직 안되는이유 [5] ㅇㅇ갤로그로 이동합니다. 04.07 70 0
2840443 아 시발 회의 그만하고싶다 [2] 프갤러(211.235) 04.07 41 0
2840442 여자들아 84년생 이불공장했던 부천.대구 김대희 조심해라  멀쩡한 외모 ㅇㅇ(39.7) 04.07 48 0
2840441 슬슬 취직 몬할까바 걱정댄다 ㅇㅅㅇ [10] 강유현갤로그로 이동합니다. 04.07 98 0
2840440 html + css 다 까먹었는데 [3] 아스카영원히사랑해갤로그로 이동합니다. 04.07 64 0
2840439 흠.. ♥냥덩소프트♥갤로그로 이동합니다. 04.07 20 0
2840437 요즘 일없긴함 아예 건설현장쪽은 일없는데 인력소장이 아는 사람이라 [3] ㅆㅇㅆ(124.216) 04.07 57 0
2840436 내일 야간은 몸이 편한 일 하러감. 건물 청소하러 간다. [4] ㅆㅇㅆ(124.216) 04.07 52 0
2840435 그냥 씨발 오전내내 인터넷이 안되고 아오 힘들다 [2] ㅆㅇㅆ(124.216) 04.07 36 0
2840433 대학교때 c언어랑 plc 전혀 흥미없었으면 [4] 프갤러(121.175) 04.07 78 0
2840432 ❤✨☀⭐나님 시작합니당⭐☀✨❤ ♥냥덩소프트♥갤로그로 이동합니다. 04.07 24 0
2840431 SPARK 프로그래밍 [1] *루비*갤로그로 이동합니다. 04.07 42 0
2840430 님들 저 졸작 주제 추천좀요 ㅠㅠㅠㅠㅠㅠㅠㅠㅠ [18] 공기역학갤로그로 이동합니다. 04.07 89 0
2840429 좆소다니다 중견으로 이직했는데 너무 좋다 [3] ㅇㅇ갤로그로 이동합니다. 04.07 58 0
2840428 간만에 fp in scala 정독 마렵구나 [4] 딱님갤로그로 이동합니다. 04.07 39 0
2840426 개발자 필수 스킬2 프갤러(121.138) 04.07 52 0
2840425 개발자 필수 스킬 [2] 프갤러(121.138) 04.07 78 0
2840424 개발자로 일할거면 개인 공부가 필수긴함 프갤러(211.58) 04.07 76 0
2840423 평범한 사람과 개발자의 관점 차이 ㅇㅅㅇ [11] 강유현갤로그로 이동합니다. 04.07 87 0
2840422 일반인들한테는 개발자 인식이 좀 다르네 [3] 프갤러(211.58) 04.07 66 0
2840421 오늘예 반프리 한 일 추가 ㅇㅅㅇ [8] 강유현갤로그로 이동합니다. 04.07 64 0
2840420 ❤✨☀⭐나님 시작합니당⭐☀✨❤ ♥냥덩소프트♥갤로그로 이동합니다. 04.07 26 0
2840419 누가 더 유명함 팝스타 축구선수 디바(59.28) 04.07 15 0
2840418 국비충 CRUD만 계속 파고드는중 [2] 배급견주솜솜이갤로그로 이동합니다. 04.07 63 0
2840417 si에서 벗어나는 게 어렵나? [4] 프갤러(223.38) 04.07 70 0
2840415 따당이 월요일 행복연차 즐기는즁 ㅇㅅㅇㅋ [4] 익명의따당이갤로그로 이동합니다. 04.07 46 0
2840414 매국단체 프갤러(121.172) 04.07 21 0
2840413 친중내란탄핵 때문에 한국인 인신매매 대놓고 시작된듯.. [1] ♥냥덩소프트♥갤로그로 이동합니다. 04.07 32 0
2840412 환율 올라가는 속도 보니 - 망하는 거 아님? [1] 프갤러(121.172) 04.07 57 0
2840411 o1 pro 고장남? 나만 고장남? [1] 프갤러(223.194) 04.07 34 0
2840410 GPT새끼 좀 치네 ㅇㅅㅇ ㅋㅋ 강유현갤로그로 이동합니다. 04.07 48 1
2840409 백엔드는 자바 스프링이다 [3] ㅇㅇ(211.234) 04.07 54 0
2840408 플랫폼 및 게시판 형태 프갤러(121.172) 04.07 18 0
2840407 나님 New 아이디어템 장착 ♥냥덩소프트♥갤로그로 이동합니다. 04.07 22 0
2840406 게시판이나 하나 만들어야겠다- 프갤러(121.172) 04.07 31 0
2840405 여성단체가 반국가 단체네 [3] 프갤러(121.172) 04.07 47 0
2840402 갓샵 개발자 팔아요 ㅇㅅㅇ [5] 강유현갤로그로 이동합니다. 04.07 53 0
2840401 애초에 네카라쿠배도 유지보수임 ㅇㅇ(211.234) 04.07 40 0
뉴스 ‘맑눈광’ 김아영, 근황 전하며 눈물 “괜찮지 않다…불안하고 두려워” 디시트렌드 04.07
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2