Download presentation
Presentation is loading. Please wait.
1
프로그래밍 원리 Chapter 06 순차논리 신한대학교 IT융합공학부 박 호 균
2
이번 장에서는 무엇을 다룰까요? 순차논리
3
강의 주제 및 목차 강의 주제 순차논리 1 논리구조 목 차 2 순차논리 3 제출문제
4
1. 논리구조
5
논리구조 논리구조 프로그램 논리 : 문제를 해결하기 위해 컴퓨터 프로그램으로 표현하는 논리 구조
논리구조 : 순차논리, 선택논리, 반복논리
6
2. 순차논리
7
순차논리 순차논리 폰 노이만 컴퓨터 구조는 실행 프로그램을 메인 메모리에 로딩하여 명령을 순차적으로 수행하는 구조이므로 순차논리는 모든 논리의 기본이 된다 위에서 아래로 순차적으로 명령문을 수행하는 구조 프로그램을 작성할 때 어느 명령문이 먼저 또는 나중에 실행되는지를 고려하여 문장을 작성하여야 한다. 명령문1; 명령문2; 명령문3;
8
순차논리 예제) 국어 91점, 영어 80점, 수학 89점의 총점과 평균을 구하는 프로그램을 작성하시오
예제) 국어 91점, 영어 80점, 수학 89점의 총점과 평균을 구하는 프로그램을 작성하시오 var kor, eng, mat, tot, ave; kor = 91; eng = 80; mat = 89; ave = tot / 3; tot = kor + eng + mat; document.write("총점 : " +tot +"<br>"); document.write("평균 : " +ave +"<br>"); var kor, eng, mat, tot, ave; kor = 91; eng = 80; mat = 89; tot = kor + eng + mat; ave = tot / 3; document.write("총점 : " +tot +"<br>"); document.write("평균 : " +ave +"<br>"); (명령문의 순서가 잘못된 예) (명령문의 순서가 정상적인 예) 평균을 구하는 계산식은 총점을 3으로 나누어야 한다. 따라서 오른쪽 프로그램과 같이 평균을 연산하려면 총점을 구하는 문장이 평균을 구하는 문장 보다 앞에 위치해야 한다.
9
순차논리 실습 6-1) 가로가 30이고, 세로가 20인 직사각형의 면적을 구하는 프로그램을 작성하시오 ① 입력 자료와 변수 설정 ② 연산 처리 ③ 출력 형식과 변수 입력자료 변수명 값 가로 width 30 세로 height 20 처리자료 변수명 식 면적 area width * height 출력자료 출력형식 변수명 면적 “면적 = “ area
10
순차논리 순서도와 소스 프로그램 var width, height, area; width = 30; height = 20;
document.write("가로 = " +width +"<br>"); document.write("세로 = " +height +"<br>"); document.write("면적 = " +area +"<br>");
11
순차논리 만약 앞의 문제에서, 가로와 세로의 초기값이 정의되지 않은 상태에서 직사각형의 면적을 먼저 계산하는 명령문이 온다면 논리적 오류가 발생할 것이다. var width, height, area; area = width * height; width = 30; height = 20; document.write("가로 = " +width +"<br>"); document.write("세로 = " +height +"<br>"); document.write("면적 = " +area +"<br>"); 즉, 가로(width)와 세로(height)의 초기값을 배정해 주는 명령문이 면적(area)을 연산하는 명령문 보다 앞에 위치해야 하는데 명령문의 순서가 잘못되어 있다. 따라서, 가로(width)와 세로(height)의 값은 정상적으로 출력되나 면적(area)의 값은 NaN(Not A Number)라 출력된다.
12
순차논리 실습 6-2) 변수 a에는 정수 10이 저장되어 있으며 변수 b에는 정수 20이 저장되어 있다. 두 변수에 저장된 값이 서로 교환하여(바뀌어 저장되는) 프로그램을 작성하시오. 왼쪽과 같이 프로그램을 작성한다면 변수 a와 변수 b 모두 10이 저장되어 우리가 원하지 않은 값을 출력할 것이다.
13
순차논리 temp = a; a = b; b = temp;
현실에서 이 문제를 해결하려면 임시로 도와줄 또 다른 빈 컵이 있어야 한다. 이 컵을 TEMP라 가정하자. 먼저 컵A를 컵TEMP에 옮겨 담고, 컵B를 컵A에 붓는다. 그런 다음 컵TEMP에 담겨있는 물을 컵B에 옮겨 담으면 된다. 이 부분을 그대로 명령문으로 작성한다면 다음과 같다. temp = a; a = b; b = temp;
14
순차논리 순서도와 소스 프로그램 var a, b, temp; a = 10; b = 20;
document.write("<h4>교환 전 : </h4>") document.write("a = " +a +"<br>"); document.write("b = " +b); temp = a; a = b; b = temp; document.write("<h4>교환 후 : </h4>")
15
순차논리 실습 6-3) 신장(Cm)과 체중(Kg)을 정수 값으로 입력 받아 표준체중(Kg)과 비만도(%)를 구하는 프로그램을 작성하시오. 표준체중(Kg)과 비만도(%)를 구하는 공식은 아래와 같다 표준체중 = (신장 – 100) * 0.9 비만도 = [(체중 – 표준체중) / 표준체중] * 100 ① 입력 자료와 변수 설정 ② 연산 처리 입력자료 변수명 식 신장 height parseInt(prompt(“당신의 신장(Cm)은? “)); 체중 weight parseInt(prompt(“당신의 체중(Kg)은? “)); 처리자료 변수명 식 표준체중 std_Weight (height – 100) * 0.9 비만도 bmi ((weight – std_Weight) / std_Weight) * 100
16
순차논리 ③ 출력 형식과 변수 소수점 반올림 함수 : toFixed(n) toFixed(n) : 소수점 n+1의 자리에서 반올림한 후 소수점 n자리까지 표시하여 문자열 데이터로 반환 출력자료 출력형식 변수명 표준체중 “표준체중(Kg) : “ std_Weight 비만도 “비만도(%) : “ bmi var num = ; document.write(num.toFixed(2)); // 42.99 document.write(″<BR>″); document.write(num.toFixed(3)); // document.write(″<BR>″); document.write(num.toFixed(0)); // 43
17
순차논리 소스 프로그램 var height, weight, std_Weight, bmi;
height = parseInt(prompt("당신의 신장(Cm)은? ")); //신장입력 weight = parseInt(prompt("당신의 체중(Kg)은? ")); //체중입력 std_Weight = (height - 100) * 0.9; //표준체중 계산 bmi = ((weight - std_Weight) / std_Weight) * 100; //비만도 계산 document.write("신장 : " +height +"(Cm)<br>"); document.write("체중 : " +weight +"(Kg)<br>"); document.write(" <br>"); document.write("표준체중 : " +std_Weight +"(Kg)<br>"); document.write("비만도 : " +bmi +"(%)<br>");
18
순차논리 자료 입력과 실행결과 비만도의 값을 소수 둘째 자리만큼 반올림하여 표시 document.write("비만도 : " +bmi.toFixed(2) +"(%)<br>");
19
3. 제출문제
20
제출문제 02 자동차 세금은 자동차세와 지방교육세로 구성되며 1년에 상반기와 하반기 두 차례 균등하게 나누어서 부과된다. 년 자동차세는 배기량(CC)당 80원이 부과되며, 지방교육세는 자동차세의 30%가 부과된다. 배기량이 900CC 자동차의 상반기 부과되는 자동차 세금을 출력하는 프로그램을 작성하시오. ① 입력 자료와 변수 설정 입력자료 변수명 값 배기량 cc 900
21
제출문제 ② 연산처리 ③ 출력 형식과 변수 처리자료 변수명 식 자동차세 car_Tax cc * 80 지방교육세 edu_Tax
년자동차세 tot_tax car_Tax + edu_Tax 출력자료 출력형식 변수명 배기량 “자동차 배기량 : “ cc 자동차세 “자동차세 : “ car_Tax 지방교육세 “지방교육세 : “ edu_Tax 상반기 자동차세금 “상반기 자동차 세금 : “ tot_tax / 2
22
제출문제 소스 프로그램 var cc, car_Tax, edu_Tax, tot_Tax;
car_Tax = cc * 80; // 자동차세 = 배기량 * 80 edu_Tax = car_Tax * 0.3; // 지방교육세 = 자동차세 * 30% tot_Tax = car_Tax + edu_Tax; // 년자동차세금 = 자동차세 + 지방교육세 document.write("자동차 배기량 : " +cc +"CC<BR>"); document.write("자동차세 : " +car_Tax +"원<BR>"); document.write("지방교육세 : " +edu_Tax +"원<BR>"); document.write("<BR>"); document.write("상반기 자동차 세금 : " +(tot_Tax / 2) +"원");
23
제출문제 03 우리회사는 올해 인건비 예산을 지난 해 순이익금의 60%를 산정하기로 하였다. 지난해 결산 총 매출액은 680억이며 총 매출액의 25%가 순이익이었다. 올해 인건비 예산액은 얼마인가? ① 입력 자료와 변수 설정 ② 연산 처리 입력자료 변수명 값 총매출액 amount 680 처리자료 변수명 식 순이익 margin amount * 0.25 인건비 costs margin * 0.6
24
제출문제 ③ 출력 형식과 변수 소스 프로그램 출력자료 출력형식 변수명 인건비 “인건비 예산액 : “ costs
var amount, margin, costs; amount = 680; // 총매출액 = 680억원 margin = amount * 0.25; // 순이익금 = 총매출액 * 25% costs = margin * 0.6; // 인건비 = 순이익금 * 60% document.write("총 매출액 : " +amount +"억원<BR>"); document.write("순이익금 : " +margin +"억원<BR>"); document.write("인건비 예산액 : " +costs +"억원");
25
parseInt(prompt(“판매수량을 입력하시오”));
제출문제 05 원가가 30,000원인 제품을 46,000원에 판매하는 회사가 있다. 판매수량을 키보드로 입력받아 총판매액과 총이익을 출력하는 프로그램을 작성하시오. ① 입력 자료와 변수 설정 ② 연산 처리 총판매액 = 판매가 * 판매수량 총이익 = (판매가 – 원가) * 판매수량 입력자료 변수명 값 원가 cost 30000 판매가 price 46000 판매수량 amount parseInt(prompt(“판매수량을 입력하시오”)); 처리자료 변수명 식 총판매액 sales price * amount 총이익 margin (price – cost) * amount
26
제출문제 ③ 출력 형식과 변수 소스 프로그램 출력자료 출력형식 변수명 총판매액 “총판매액 : “ sales 총이익
“총이익 : “ margin var cost, price, amount, sales, margin; cost = 30000; // 원가 = 30,000원 price = 46000; // 판매가 = 46,000원 amount = parseInt(prompt("판매수량을 입력하시오")); // 판매수량 입력 sales = price * amount; // 총판매액 = 판매가 * 판매수량 margin = (price - cost) * amount; // 총이익 = (판매가-원가)*판매수량 document.write("판매수량 : " +amount +"원<BR>"); document.write("총판매액 : " +sales +"원<BR>"); document.write("총이익 : " +margin +"원<BR>");
27
parseInt(prompt(“분(minute)을 입력하세요”));
제출문제 10 출력예시와 같이 분(minute)을 입력받아 몇 시(hour), 몇 분(minute)인지를 출력하시오. ① 입력 자료와 변수 설정 ② 연산 처리 [출력예시] 입력 값 : 465 465분은 7시간 45분입니다. 입력자료 변수명 값 분 time parseInt(prompt(“분(minute)을 입력하세요”)); 처리자료 변수명 식 시간 hour parseInt(time / 60) 분 min time % 60
28
time +"분은 " +hour +"시간 " + min +"분입니다.”
제출문제 ③ 출력 형식과 변수 소스 프로그램 출력자료 출력형식 입력 값 “입력 값 : “ + time 시간, 분 time +"분은 " +hour +"시간 " + min +"분입니다.” var time, hour, min; time = parseInt(prompt("분(minute)을 입력하세요")); hour = parseInt(time / 60); min = time % 60; document.write("입력 값 : " +time +"<BR>"); document.write(time +"분은 " +hour +"시간 " + min +"분입니다.");
29
토론 및 질문하기 오늘 배운 내용을 옆의 학우와 간단히 이야기를 나누어 보세요!
Similar presentations