책 내용 질문하기
2018 시나공 총정리 컴퓨터활용능력 1급 필기 페이지 : 195 42번문제
도서
2018 시나공 총정리 컴퓨터활용능력 1급 필기
페이지
195
조회수
585
작성일
2018-05-30
작성자
탈퇴*원
첨부파일
지난번 답변감사합니다 제가 설명이 모자랐네요 42번 오른편에 표가 있지않습니까? 실행횟수 4,8,16,20에서 어떻게 sum값이 4,12,40,60이 나오는지 알고싶습니다 또한 답이 60이라는데 sum이면 실행횟수 20까지나온수를 다 더하는거 아닙니까? 즉 sum값을 구하는법을 알고싶습니다
답변
2018-05-31 10:04:13

안녕하세요.

해당 표는 코드에 값을 직접 입력하여 계산할 경우 각각의 변수가 어떻게 변화되는지를 보여주는 표입니다. 직접 코드에 값을 입력해 보겠습니다.

sum= 0 : sum에 0을 넣습니다.

for i=1 to 20 : i가 1에서 20이 될때까지 for~next 부분을 반복합니다. 첫번째 실행하므로 현재 i는 1입니다.

select case (i Mod 4) : i를 4로 나눈 나머지를 이용하여 case문을 수행합니다. 현재 i는 1로, 1을 4로 나눈 나머지는 1입니다.

case 0 : 나머지가 0일 경우 다음 문장을 실행합니다.

sum= sum+i

case 1, 2, 3 : 나머지가 1, 2, 3인 경우 아무것도 실행하지 않고 end select를 만나 select문을 끝냅니다.현재 나머지가 1이므로 다음으로 이동합니다.

next : 다시 for문으로 이용합니다.

for i=1 to 20 : 다시 for 문을 만났으므로 i가 2가 됩니다.

select case (i Mod 4) : 현재 i가 2이므로, 2를 4로 나눈 나머지는 2입니다.

case 0

sum= sum+i

case 1, 2, 3 : 나머지가 2이므로 for문으로 이동합니다.

for i=1 to 20 : 다시 for 문을 만났으므로 i가 3이 됩니다.

select case (i Mod 4) : 현재 i가 3이므로, 3을 4로 나눈 나머지는 3입니다.

case 0

sum= sum+i

case 1, 2, 3 : 나머지가 3이므로 for문으로 이동합니다.

for i=1 to 20 : 다시 for 문을 만났으므로 i가 4가 됩니다.

select case (i Mod 4) : 현재 i가 4이므로, 4를 4로 나눈 나머지는 0입니다.

case 0 나머지가 1이므로 다음 문장을 실행합니다.

sum= sum+i : sum은 맨 앞에 0을 넣었으므로 0이고, i는 현재 4이므로 0+4=4를 sum에 저장합니다.

case 1, 2, 3

next : 다시 for문으로 이동합니다.

for i=1 to 20 : 다시 for 문을 만났으므로 i가 5가 됩니다.

select case (i Mod 4) : 현재 i가 5이므로, 5를 4로 나눈 나머지는 1입니다.

case 0

sum= sum+i

case 1, 2, 3 : 나머지가 1이므로 for문으로 이동합니다.

~~

이런식으로 if가 20이 될때까지 실행을 하면, sum 값이 처음에는 4이고, sum=sum+i는 기존에 들어 있는 sum에 i를 더해 다시 sum에 저장하라는 의미로 4+8=12를 sum에 저장하면 sum은 12가 됩니다. 다시 sum에 들어 있는 12에 16를 더해 그 값을 sum에 저장하는 것입니다. 이런식으로 하면 각 코드를 실행하면서 sum 값을 누적했으므로 가장 마지막에 sum을 더할 필요가 없는 것입니다. 즉, 가장 마지막 값이 sum 값을 모두 더한 값입니다.

즐거운 하루 되세요.

  • *
    2018-05-31 10:04:13

    안녕하세요.

    해당 표는 코드에 값을 직접 입력하여 계산할 경우 각각의 변수가 어떻게 변화되는지를 보여주는 표입니다. 직접 코드에 값을 입력해 보겠습니다.

    sum= 0 : sum에 0을 넣습니다.

    for i=1 to 20 : i가 1에서 20이 될때까지 for~next 부분을 반복합니다. 첫번째 실행하므로 현재 i는 1입니다.

    select case (i Mod 4) : i를 4로 나눈 나머지를 이용하여 case문을 수행합니다. 현재 i는 1로, 1을 4로 나눈 나머지는 1입니다.

    case 0 : 나머지가 0일 경우 다음 문장을 실행합니다.

    sum= sum+i

    case 1, 2, 3 : 나머지가 1, 2, 3인 경우 아무것도 실행하지 않고 end select를 만나 select문을 끝냅니다.현재 나머지가 1이므로 다음으로 이동합니다.

    next : 다시 for문으로 이용합니다.

    for i=1 to 20 : 다시 for 문을 만났으므로 i가 2가 됩니다.

    select case (i Mod 4) : 현재 i가 2이므로, 2를 4로 나눈 나머지는 2입니다.

    case 0

    sum= sum+i

    case 1, 2, 3 : 나머지가 2이므로 for문으로 이동합니다.

    for i=1 to 20 : 다시 for 문을 만났으므로 i가 3이 됩니다.

    select case (i Mod 4) : 현재 i가 3이므로, 3을 4로 나눈 나머지는 3입니다.

    case 0

    sum= sum+i

    case 1, 2, 3 : 나머지가 3이므로 for문으로 이동합니다.

    for i=1 to 20 : 다시 for 문을 만났으므로 i가 4가 됩니다.

    select case (i Mod 4) : 현재 i가 4이므로, 4를 4로 나눈 나머지는 0입니다.

    case 0 나머지가 1이므로 다음 문장을 실행합니다.

    sum= sum+i : sum은 맨 앞에 0을 넣었으므로 0이고, i는 현재 4이므로 0+4=4를 sum에 저장합니다.

    case 1, 2, 3

    next : 다시 for문으로 이동합니다.

    for i=1 to 20 : 다시 for 문을 만났으므로 i가 5가 됩니다.

    select case (i Mod 4) : 현재 i가 5이므로, 5를 4로 나눈 나머지는 1입니다.

    case 0

    sum= sum+i

    case 1, 2, 3 : 나머지가 1이므로 for문으로 이동합니다.

    ~~

    이런식으로 if가 20이 될때까지 실행을 하면, sum 값이 처음에는 4이고, sum=sum+i는 기존에 들어 있는 sum에 i를 더해 다시 sum에 저장하라는 의미로 4+8=12를 sum에 저장하면 sum은 12가 됩니다. 다시 sum에 들어 있는 12에 16를 더해 그 값을 sum에 저장하는 것입니다. 이런식으로 하면 각 코드를 실행하면서 sum 값을 누적했으므로 가장 마지막에 sum을 더할 필요가 없는 것입니다. 즉, 가장 마지막 값이 sum 값을 모두 더한 값입니다.

    즐거운 하루 되세요.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.