디시인사이드 갤러리

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

갤러리 본문 영역

Ada: 명령형 언어 – If/Then/Else

*루비*갤로그로 이동합니다. 2025.04.14 10:21:43
조회 36 추천 0 댓글 0

명령형 언어 – If/Then/Else


이 섹션은 에이다(Ada)의 if 문(statement)을 설명하고, 정수 입출력(Integer I/O), 데이터 선언, 서브프로그램 파라미터(매개변수) 모드 등 여러 다른 기본적인 언어 기능들을 소개합니다.

에이다의 if 문의 형태와 기능은 꽤 예상대로입니다:

with Ada.Text_IO;         use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

procedure Check_Positive is
   N : Integer;
begin
   --  문자열 출력하기
   Put ("Enter an integer value: ");

   --  정수 값 입력받기
   Get (N);

   if N > 0 then
      --  정수 출력하기
      Put (N);
      Put_Line (" is a positive number");
   end if;
end Check_Positive;

if 문은 최소한 예약어 if, 불리언(Boolean) 값이어야 하는 조건식, 예약어 then, 그리고 하나 이상의 문장들(then 부분)로 구성되는데, 이 부분은 조건식이 True로 평가될 경우 실행됩니다. 그리고 마지막으로 종료를 나타내는 end if가 옵니다.

이 예제는 정수 변수 N을 선언하고, 사용자에게 정수 입력을 요청한 다음, 입력된 값이 양수인지 확인합니다. 만약 양수이면, 해당 정수 값과 그 뒤에 " is a positive number" 문자열을 출력합니다. 값이 양수가 아니라면, 이 프로시저는 아무런 출력도 하지 않습니다.

Integer 타입은 미리 정의된 부호 있는 타입이며, 그 범위는 컴퓨터 아키텍처에 따라 다릅니다. 일반적인 최신 프로세서에서 Integer는 32비트 부호 있는 정수입니다.

이 예제는 정수 입출력의 몇 가지 기본적인 기능을 보여줍니다. 관련된 서브프로그램들은 미리 정의된 Ada.Integer_Text_IO 패키지에 포함되어 있으며, 키보드로부터 숫자를 읽어 들이는 Get 프로시저와 정수 값을 출력하는 Put 프로시저 등이 있습니다.

다음은 else 부분을 포함하는 if 문을 보여주는 약간 변형된 예제입니다:

with Ada.Text_IO;         use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

procedure Check_Positive is
   N : Integer;
begin
   --  문자열 출력하기
   Put ("Enter an integer value: ");

   --  정수 값 입력받기
   Get (N);

   --  정수 출력하기
   Put (N);

   if N > 0 then
      Put_Line (" is a positive number");
   else
      Put_Line (" is not a positive number");
   end if;
end Check_Positive;

이 예제에서는 입력 값이 양수가 아닐 경우, 프로그램은 해당 값과 그 뒤에 " is not a positive number" 문자열을 출력합니다.

마지막 변형 예제는 elsif 부분을 포함하는 if 문을 보여줍니다:

with Ada.Text_IO;         use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

procedure Check_Direction is
   N : Integer;
begin
   Put ("Enter an integer value: ");
   Get (N);
   Put (N);

   if N = 0 or N = 360 then
      Put_Line (" is due north");
   elsif N in 1 .. 89 then
      Put_Line (" is in the northeast quadrant");
   elsif N = 90 then
      Put_Line (" is due east");
   elsif N in 91 .. 179 then
      Put_Line (" is in the southeast quadrant");
   elsif N = 180 then
      Put_Line (" is due south");
   elsif N in 181 .. 269 then
      Put_Line (" is in the southwest quadrant");
   elsif N = 270 then
      Put_Line (" is due west");
   elsif N in 271 .. 359 then
      Put_Line (" is in the northwest quadrant");
   else
      Put_Line (" is not in the range 0..360");
   end if;
end Check_Direction;

이 예제는 사용자에게 0과 360 사이(경계값 포함)의 정수를 입력하도록 기대하며, 해당 값이 어느 사분면 또는 축에 해당하는지를 출력합니다. 에이다(Ada)의 in 연산자는 스칼라 값이 지정된 범위 내에 있는지 검사하고 불리언(Boolean) 결과를 반환합니다. 프로그램의 동작은 자명할 것입니다. 나중에 case 문을 통해 동일한 효과를 달성하는 대안적이고 더 효율적인 스타일을 살펴볼 것입니다.

에이다의 elsif 키워드는 중첩된 else .. if 블록을 대신 사용하는 C나 C++와 다릅니다. 또 다른 차이점은 에이다에 end if가 존재한다는 것인데, 이는 “댕글링 else(dangling else)”로 알려진 문제를 피하게 해줍니다.

추천 비추천

0

고정닉 0

0

댓글 영역

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

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 술 마시면 실수가 많을 것 같은 스타는? 운영자 25/04/14 - -
공지 프로그래밍 갤러리 이용 안내 [88] 운영자 20.09.28 43280 65
2845286 파워 500W a120 얼마 정도면 중고로 판매가 가능할까요? 넥도리아(175.196) 22:53 5 0
2845285 닷컴 버블붕괴 직후 수준으로 채용줄어들거 같애 피치피(183.101) 22:52 8 0
2845284 세상을 단순화해서 보는게 나쁜건 아님 [1] ㅆㅇㅆ(124.216) 22:51 12 0
2845282 내일 면접 취소 문자 보내야겠다 [1] 프갤러(121.190) 22:42 21 0
2845281 충격.. [1] ♥냥덩소프트♥갤로그로 이동합니다. 22:41 21 0
2845280 프갤 극우들이 자꾸 틀튜브 쳐올리는 이유 [6] ㅆㅇㅆ(124.216) 22:37 37 1
2845279 가끔 재귀호출에 관한 글들보면 [19] 슈퍼막코더(126.34) 22:34 46 0
2845278 개쩔게 러스트 웹 서버랑 오픈 api 연동했다 프갤러(110.8) 22:34 17 0
2845276 전철에서 여자가 옷에 카메라 달고 있던데요 ㅈㅁ(211.227) 22:30 26 0
2845274 아스카는 오늘도 갓생을 살았어요 [2] 아스카영원히사랑해갤로그로 이동합니다. 22:24 25 0
2845273 안철수 백준 티어 어디 예상함 [1] ㅇㅇ(116.122) 22:15 16 0
2845271 밖에서 동영상 찍으면 타인 시선 어떄요? ㅈㅁ(211.227) 22:10 13 0
2845270 서탈할거같애서탈할거같애서탈할거같애서탈할거같애서탈할거같애서탈할거같애서탈할거 프갤러(1.242) 22:07 12 0
2845269 ❤✨☀⭐나님 시작합니당⭐☀✨❤ ♥냥덩소프트♥갤로그로 이동합니다. 22:07 9 0
2845268 결국 관심사에따라서 비슷한 말하는듯 ㅆㅇㅆ찡갤로그로 이동합니다. 22:05 13 0
2845267 C++ 감수성을 되찾아야겠어 ㅇㅇ(59.15) 22:04 16 0
2845266 프롬프트 입력 저거해봤는데 대부분 비슷한 결론 나오는듯 [1] ㅆㅇㅆ찡갤로그로 이동합니다. 22:03 21 0
2845265 14년차 보안개발자 [4] ...(125.191) 22:02 55 0
2845264 대만 전쟁에 한국 끌려들어간다? 日 "한반도도 전장에 넣자" 제안 발명도둑잡기갤로그로 이동합니다. 21:58 12 0
2845263 공부는 열심히 해야하는거지?? 재밌게 하는게 아닌거지?? [2] ㅇㅇ(223.38) 21:57 16 0
2845260 나님 근 1년?만에? 강남 교보문고 구경 갔다오시다 [2] 딱님갤로그로 이동합니다. 21:47 39 0
2845258 유튭에 재미있어 보이는 프롬프트 해 봤는데 [2] 프갤러(61.108) 21:41 27 0
2845257 32스레드, 64스레드 필요한 곳 많지 ㅋㅋ [8] *루비*갤로그로 이동합니다. 21:35 56 0
2845256 이책 제목 말투가 마음에 듬 [1] 딱님갤로그로 이동합니다. 21:34 33 0
2845255 개발자는 인공지능/LLM한테도 대우받는구나 ㅎㅎ 세상이 불공평해 ㅎㅎ *루비*갤로그로 이동합니다. 21:29 40 0
2845254 경찰, 윤석열 친필 표지석 '내란' 글씨 수사중... 노동계 반발 발명도둑잡기갤로그로 이동합니다. 21:21 14 0
2845253 '명태균'만 나오면 급발진 홍준표, 오마이뉴스 기자에게 삿대질 발명도둑잡기갤로그로 이동합니다. 21:19 11 0
2845252 웹 프론트앤드 하는애들은 C 아예 몰?루여도 잘 먹고 잘 살더라 ㅇㅅㅇ [5] 강유현갤로그로 이동합니다. 21:16 60 0
2845251 짱깨 멸망의길 ㅋㅅㅋ ♥냥덩소프트♥갤로그로 이동합니다. 21:15 11 0
2845250 씨언어 공부안하길 잘한듯하다 이기 [7] 슈퍼막코더(126.34) 21:11 54 0
2845249 나님 강남 교보문고에서 자바 내공 쌓는 중~ [1] 딱님갤로그로 이동합니다. 21:09 32 0
2845248 준스기햄 이제보니까 컴퓨터 전공이였노 류도그담당(114.202) 21:07 36 0
2845247 저도 멀티코어 프로세싱 함 ㅇㅅㅇ [16] 강유현갤로그로 이동합니다. 21:06 89 0
2845246 대체 32쓰레드를 써서 부족할 일이 뭐가 있을까 [5] ㅆㅇㅆ(124.216) 21:01 53 0
2845245 황흐프 해라 이기 [2] 슈퍼막코더(126.34) 21:00 25 0
2845244 겜알못인데 겜학과 가봤자 [5] 슈퍼막코더(126.34) 20:58 41 0
2845243 내일 강서구 간다. 내 앞에서 국민의힘 내란의힘. 넥도리아(119.195) 20:56 13 0
2845242 - 정부의 국민 통제/감시 시스템 CBDC, 곧 시행된다 .(180.64) 20:55 26 0
2845241 이준석의 가장 큰 문제점은 정책의 일관성이 없음 ㅆㅇㅆ(124.216) 20:55 24 0
2845240 준스기햄 멀티코어 프로세싱 빡고수냐 ㅇㅅㅇ? [7] 강유현갤로그로 이동합니다. 20:54 65 0
2845239 안철수=v3가 성능이 어쩌고해도 명확한 결과물이 있음. [2] ㅆㅇㅆ(124.216) 20:52 38 0
2845237 컴공일수록 이준석을 뽑으면 안되는거 아님? 난 ㄹㅇ 그렇게 생각함 [5] ㅆㅇㅆ(124.216) 20:50 51 2
2845236 컴공 애들중에 자바 안 써본애들 있음 ㅇㅅㅇ? [8] 강유현갤로그로 이동합니다. 20:48 69 0
2845235 나님 대통령 투표 이준석으로 정했다 [5] 헬마스터갤로그로 이동합니다. 20:46 32 0
2845234 차 움직이는건 얼추 끝났는데 차에 이펙트 붙이는건 나중에하고 [2] ㅆㅇㅆ(124.216) 20:41 25 0
2845232 게임학과는 드가서 유니티배우나 ㅇㅅㅇ [3] 강유현갤로그로 이동합니다. 20:38 28 0
2845231 ❤✨☀⭐나님 시작합니당⭐☀✨❤ ♥냥덩소프트♥갤로그로 이동합니다. 20:36 12 0
2845230 실시간 반응 난리난 썰 ㅇㅇㅇㅇ(121.126) 20:26 24 0
2845229 감정의 사회성 발명도둑잡기갤로그로 이동합니다. 20:25 18 0
뉴스 기은세, 감각적인 라이프스타일 공개…드레스룸부터 요리 실력까지 ‘완성형 인플루언서’ 디시트렌드 14:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2