디시인사이드 갤러리

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

갤러리 본문 영역

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

*루비*갤로그로 이동합니다. 2025.04.14 10:21:43
조회 42 추천 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 43311 65
2845994 헐 먹는비만약 탄생했다 .. 살찌는약은 왜 없누 피치피(183.101) 16:03 4 0
2845993 라이트노벨 작법 리플릿 공유 프갤러(121.172) 15:50 20 0
2845992 선거는 거의 끝났다고 보이지? 프갤러(121.172) 15:48 17 0
2845991 대한민국에도 흑형이 있다. 프갤러(121.172) 15:46 22 1
2845990 신입일때 존나 힘들었지 조로디(49.142) 15:45 14 0
2845989 ❤✨☀⭐나님 시작합니당⭐☀✨❤ ♥냥덩소프트♥갤로그로 이동합니다. 15:45 6 0
2845988 무엇을 위해 사는건지... 문득 드는 의문에 도저히 답을 못하겠다. ㅇㅇ(223.38) 15:45 8 0
2845987 [애니 뉴스] 사용자가 늘기 시작하면- 프갤러(121.172) 15:44 22 1
2845986 요오! 오랜만! 프갤러(121.172) 15:42 24 0
2845985 취업하고나니깐 프갤 노잼임 조로디(49.142) 15:42 13 0
2845984 개발자도 거품다 빠졌나보다 조로디(49.142) 15:39 20 0
2845983 애드라 안녕 오랜만 조로디(49.142) 15:38 13 0
2845982 죽겠다 조로디(49.142) 15:37 11 0
2845981 객체지향프로그래밍 이거 개귀찮네.. ㅇㅇ갤로그로 이동합니다. 15:27 23 0
2845980 이건 몰랐네,. 토트넘 30대 남자 넥도리아(175.196) 15:26 13 0
2845979 정의감에 불타 목숨까지 던지는 남자. 실제로 Throw 하지 못함. 30대 남자 넥도리아(175.196) 15:14 15 0
2845978 윈도우nt 3.5 코드 1억5천만줄이래 [7] ㅇㅇ(183.101) 15:06 36 0
2845976 제미니한테 .h 주고 구현하라시킨 후 문제점 물어보니... *루비*갤로그로 이동합니다. 14:55 24 0
2845975 N번방사실의 진실! 프갤러(121.172) 14:48 12 0
2845974 극좌 대한민국의 미래 ♥냥덩소프트♥갤로그로 이동합니다. 14:47 17 0
2845973 나님 오늘도 지구 환경을 위해 텀블러에 커피 받으시다. [6] 헬마스터갤로그로 이동합니다. 14:27 31 1
2845972 가끔 코드짜다가 너무 잘짰다고 뿌듯해질때 있는데 [4] ㅆㅇㅆ찡갤로그로 이동합니다. 14:18 56 0
2845971 올해 고과 리뷰 받으면서 그런 생각 안 들었냐? [6] 딱님갤로그로 이동합니다. 14:17 60 0
2845970 Gpt한테 평가받는다라 [1] RyuDOG갤로그로 이동합니다. 14:12 37 0
2845969 김용현 재수사 해야한다. 병장 익사사고 김용현이 감추고 hide 하는거다 30대 남자 넥도리아(175.196) 14:09 19 0
2845968 뉴스에서 왜자꾸 윤석열을 '전대통령' 이라고 부르는거임? [3] 야옹아저씨갤로그로 이동합니다. 14:08 45 1
2845967 GPT 엉님이 나보고 땔감이래 ㅇㅅㅇ [7] 강유현갤로그로 이동합니다. 14:05 69 0
2845966 악당들이 군대에 많다 꼬리에 꼬리를 무는 이야기 30대 남자 넥도리아(175.196) 14:04 12 0
2845965 [애니 뉴스] 라이트노벨 작법 리플릿 프갤러(121.172) 14:02 18 0
2845964 모듈을 너무 나누니까 입력간에 딜레이가 생기네 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 13:57 38 0
2845963 러스트를 빤다는 것이 나를 특별하게 해준다. [5] 프갤러(110.8) 13:53 35 0
2845962 <나님>앞으로 디코 신규 멤버 모집할 때</나님> 딱님갤로그로 이동합니다. 13:50 21 0
2845961 오요안나 아나운서 괴롭힘 살인사건 극좌 mbc가 보도를 막는 이유는? ♥냥덩소프트♥갤로그로 이동합니다. 13:49 11 0
2845960 gpt 한테 말했더니 이렇게 나오는데 ? [5] 피치피(183.101) 13:48 42 0
2845959 리죄명 뒷통수에 세종시 시민들 격분 [1] ♥냥덩소프트♥갤로그로 이동합니다. 13:44 18 0
2845958 35살 프로그래밍 취업시장어때? [3] ㅇㅇ(172.225) 13:43 35 0
2845957 <나님>gpt 분석 보고서</나님> 딱님갤로그로 이동합니다. 13:39 21 0
2845956 난 지피티 이렇게 나옴 [3] 류도그담당(114.202) 13:37 51 0
2845955 Cim API 상세 명세 주니까 제미니가 Ada 로 Cim 만들어주는데? [4] *루비*갤로그로 이동합니다. 13:35 21 0
2845954 확실히 뭘해도 프로그래밍에 관심사 있는 양반들은 비슷하게 나오는갑다 [2] ㅆㅇㅆ(124.216) 13:34 34 0
2845953 디시콘 안되는거 개불편하노 ㅇㅇ갤로그로 이동합니다. 13:30 13 0
2845952 나도 아까 지피티한테 분석해달란거보고 해봤는데 ㅆㅇㅆ(124.216) 13:28 45 0
2845951 흐ㅁ.. 생각보다 일찍 끝낼 수 있겠꿍 ! ♥냥덩소프트♥갤로그로 이동합니다. 13:26 20 0
2845950 <나님> 스벅 주문 완료하시다 </나님> 딱님갤로그로 이동합니다. 13:26 18 0
2845949 어제 저녁 모 프갤러들과 나눈 한끼 식사 [1] 딱님갤로그로 이동합니다. 13:18 31 0
2845948 [ 나님 ] 카페가는 중 딱님갤로그로 이동합니다. 13:17 15 0
2845947 떠먹여주는 국가 포인트 발명도둑잡기갤로그로 이동합니다. 13:09 13 0
2845946 받는만큼 일하고 더 해주지 마라 [2] 프갤러(110.8) 12:48 40 0
2845945 회사, 개인 캘린더 따로 쓰시는분? [1] ㅈㅁ(211.227) 12:42 20 0
뉴스 [TVis] 전현무, ♥열애설 무성한데…김대호 “여자친구 없구나” (전현무계획2) 디시트렌드 10:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2