59점은 이다. >> grade=hakjeom(59) 잘된다. 문제는 100 점이이상이면어떻게할것인지? 입력값이정확히범위안에들어온다는 가정에서프로그래밍할것인지입력값의범위등을사전에필터링할것인지의문제이다. (2) 두번째문제는 입력점수가숫자하나가아닌여러숫자의묶음 ( 벡터,

Similar documents
윈도우즈프로그래밍(1)

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

PowerPoint 프레젠테이션

Infinity(∞) Strategy

Microsoft PowerPoint - Java7.pptx

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - chap06-1Array.ppt

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Java ...

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap05-제어문.pptx

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

Visual Basic 반복문

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

금오공대 컴퓨터공학전공 강의자료

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>


설계란 무엇인가?

OCW_C언어 기초

SW

1 SW

슬라이드 1

Frama-C/JESSIS 사용법 소개

02장.배열과 클래스

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

슬라이드 1

1 경영학을 위한 수학 Final Exam 2015/12/12(토) 13:00-15:00 풀이과정을 모두 명시하시오. 정리를 사용할 경우 명시하시오. 1. (각 6점) 다음 적분을 구하시오 Z 1 4 Z 1 (x + 1) dx (a) 1 (x 1)4 dx 1 Solut

PowerPoint Presentation

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

컴파일러

설계란 무엇인가?

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

중간고사

Vector Differential: 벡터 미분 Yonghee Lee October 17, 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표

강의 개요

PowerPoint Presentation

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap-06.pptx

Microsoft PowerPoint - Computer - chapter04.ppt [호환 모드]

C 언어 프로그래밊 과제 풀이

2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

Microsoft PowerPoint - CSharp-10-예외처리

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

chap 5: Trees

Microsoft PowerPoint - C++ 5 .pptx

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

03_queue

4장.문장

MATLAB HCH switch-case case 문 v switch case 문은 switch 다음의표현식의값에따라여러명령그룹들중에서한그룹을골라실행시킬때사용한다. switch문-case 문은 if 문을사용하여똑같이실행시킬수있지만, switch 문이프로그램을이해하기가더

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

C 프로그램의 기본

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

K&R2 Reference Manual 번역본

Microsoft PowerPoint - chap06-2pointer.ppt

Chapter_06

Columns 8 through while expression {commands} 예제 1.2 (While 반복문의이용 ) >> num=0

설계란 무엇인가?

Chapter ...

가장중요한덕목이다 ( 프로그래밍에서또다른전공에서또인생에서... 인생에도도움말기능이 있으나이를사용하지않는다. 사용할줄도모르고...) 수학함수는프로그램언어마다다르므로사용하기전에꼭확인해보고써야한다. 다음은매틀랩내장함수를구분하여간단한설명을붙인다. 1. 기본수학함수 abs(x)

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

슬라이드 1

<B1E2BCFAB9AEBCAD5FB9DABAB4B1D45F F F64746F72732E687770>

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

C# Programming Guide - Types

슬라이드 1

C 언어와 프로그래밍 개요

PowerPoint Template

슬라이드 1

Microsoft Word - PLC제어응용-2차시.doc

PowerPoint 프레젠테이션

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

adfasdfasfdasfasfadf

Microsoft PowerPoint - e pptx


Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - ch01.ppt

제 3강 역함수의 미분과 로피탈의 정리

Microsoft PowerPoint - 5장 조건문 pptx

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

PowerPoint 프레젠테이션

게시판 스팸 실시간 차단 시스템

17장 클래스와 메소드


<B3EDB9AEC0DBBCBAB9FD2E687770>

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint Predicates and Quantifiers.ppt

PowerPoint 프레젠테이션

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");


Transcription:

매틀랩입문 7 차시 논리구조 ( 조건문, 반복문, 논리함수 ) 프로그램실행순서를변경하는, 결정하는중요한문장, 명령문이바로조건문 / 선택문과반복문이다. 일반적인순서에따른명령문실행방식에서벗어나조건, 환경, 경우에맞게다른처리방식 / 과정을거치게하는일이냐말로프로그램밍에서가장중요한일이요정말프로그래밍을가능하게하는일이다. 이를논리구조라한다. 명령문처리흐름을말한다. 1. 조건문 / 선택문 이를연습하려면가장많이쓰는방법은점수에맞는학점을부여하는프로그래밍이다. if 문과 switch case 문을연습하고그차이를보여준다. 하여튼설명, 정의이런것보다는실질적인연습이더필요하고중요하다고생각하고실천하기를바라기에우린바로따라해보기, 연습해보기로들어간다. 1-1. for 문 (1) 점수가주어지면이에맞는학점을출력하는함수를만들자. function grade=hakjeom(a) if a>=90, grade='a'; elseif a>=80, grade='b'; elseif a>=70, grade='c'; elseif a>=60, grade='d'; else, grade=''; 실행해보기함수이름을부르고입력인자을 ( ) 안에넣으면된다. 92점이면 A 학점이나와야한다. >> grade=hakjeom(92) A 잘됐고, 69점은 D 학점 >> grade=hakjeom(69) D

59점은 이다. >> grade=hakjeom(59) 잘된다. 문제는 100 점이이상이면어떻게할것인지? 입력값이정확히범위안에들어온다는 가정에서프로그래밍할것인지입력값의범위등을사전에필터링할것인지의문제이다. (2) 두번째문제는 입력점수가숫자하나가아닌여러숫자의묶음 ( 벡터, 행렬 ) 로들어온다면 어찌되겠는가 이다. 매틀랩은대단위자료를처리하기위한행렬기반수학처리 S/W 이면벡터화 가중요하다고강조해왔다. >> grade=hakjeom([59,60,90,100]) 여러자료를넣어도단하나의값만처리하여반환 (return) 한다. 이러한숫자묶음 ( 벡터, 행렬 ) 을처리하려면논리함수 (find) 를사용해야한다. 뒤에서살펴보도록한다. 1-2. switch, case 문 이제 switch, case문을사용해보자. 다중분기문 으로는 if, elseif, elseif else 보다는 switch, case 문제보기편하고생각하기편하다. 이는범위지정이되지않고정확히일치하는 (==) 조건이어야한다. 이를위해 10으로나누고소수값을버림으로써 a=[6 7 8 9] 의정수값만나오도록처리하였다. (1) 첫번째시도 function grade=hakjeom2(a) a=floor(a/10); switch a case 9, grade='a'; case 8, grade='b'; case 7, grade='c'; case 6, grade='d'; otherwise, grade=''; >> grade=hakjeom2(89)

B 잘되는데 100 점이면 가된다. >> grade=hakjeom2(100) 100 점이면 10 으로변환되는데위의조건이아니므로 (6, 7, 8, 9) otherwise 즉위조건이아니면에 걸려만점을맞고도 가될수밖에없다. 제대로처리하려면 case 10 을넣든지다른방법을생 각해야한다. (2) 두번째시도 function grade=hakjeom2(a) a=floor(a/10); switch a case 10, grade='a'; case 9, grade='a'; case 8, grade='b'; case 7, grade='c'; case 6, grade='d'; otherwise, grade=''; >> grade=hakjeom2(100) A >> grade=hakjeom2(110) >> grade=hakjeom2(108) A >> grade=hakjeom2(118) 100 점은잘되는데 108 점이면 A. 뭐 100 점이상도나오면모두 A 로한다 (?). 그런데 118 점이면 또이상해진다. 할수없이입력값을필터링 ( 확인하여오류처리하는것 ) 해야한다.

if a>100 a<0, error( Input value should be between 0 and 100! ), 여기서처리할점수를여러개넣어보면 >> grade=hakjeom2([80, 90, 77, 118]) SWITCH 표현식은스칼라또는문자열상수여야합니다. 오류발생 : hakjeom2 (line 3) switch a 아예입력값은스칼라 ( 단일숫자 ) 여야한다고나온다. 2. 논리함수, find() 이제논리함수를써서복수의자료를처리하도록해보자. 매틀랩정신에맞게 function grade=hakjeom3(a) e1=find(a>=90); grade(e1)='a'; e2=find(a<90 & a>=80); grade(e2)='b'; e3=find(a<80 & a>=70); grade(e3)='c'; e4=find(a<70 & a>=60); grade(e4)='d'; e5=find(a<60); grade(e5)=''; 조건에맞는인덱스번호를추출하여이번호에해당되는것만처리한다.. if 문은 위의조건이 아니면서또다른조건에맞으면 (elseif) 식으로사용할수있지만 find() 문에서는범위를모두지 정해야한다. 그래서아예 100 점보다크거나 0 점보다작은점수입력을막는것은쉽다. 일단숫자하나를처리해도잘된다. >> grade=hakjeom3(80) B 여러숫자를입력해도잘된다. >> grade=hakjeom3([80, 90, 77, 118]) BACA function grade=hakjeom3(a) e1=find(a<100 & a>=90); grade(e1)='a';

e2=find(a<90 & a>=80); grade(e2)='b'; e3=find(a<80 & a>=70); grade(e3)='c'; e4=find(a<70 & a>=60); grade(e4)='d'; e5=find(a<60 & a>=0); grade(e5)=''; 범위를넘는자료를넣으면 >> grade=hakjeom3([100,102, 88, 95]) A BA 다소의문제가있지만하여튼처리하였다. 3. 반복문 (1) 구구단연습 어떤프로그램 ( 밍 ) 언어에도반복문연습에항상구구단이나온다. 우리도구구단을연습해보자. % gugudan for k=2:9 for kk=1:9 fprintf('%d x %d = %d \n', k, kk, k*kk) 2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 2 x 5 = 10 2 x 6 = 12 2 x 7 = 14 2 x 8 = 16 2 x 9 = 18 3 x 1 = 3 3 x 2 = 6 3 x 3 = 9 ( 이하생략 )

2 단, 3 단마다몇단입니다. 라고쓰고단끼리분리하려면 for k=2:9 다음에출력문을넣는다. % gugudan for k=2:9 disp(' ') disp([num2str(k) ' 단입니다 ]) for kk=1:9 fprintf('%d x %d = %d \n', k, kk, k*kk) disp() 와 fprinft() 연습하려고둘을모두넣었다. >> gugudan 2 단입니다 2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 2 x 5 = 10 2 x 6 = 12 2 x 7 = 14 2 x 8 = 16 2 x 9 = 18 3 단입니다 3 x 1 = 3 3 x 2 = 6 3 x 3 = 9 ( 이하생략 ) (2) 학점처리함수연습이제학점처리프로그램에반복문을넣어서다시연습해본다. 논리함수로복수자료를처리하는매틀랩과같은 S/W가아닌범용프로그램언어에서는반복문을써서자료하나하나를불러처리해야한다. function grade=hakjeom4(a)

n=length(a); for k=1:n if a(k)>=90, grade(k)='a'; elseif a(k)>=80, grade(k)='b'; elseif a(k)>=70, grade(k)='c'; elseif a(k)>=60, grade(k)='d'; else, grade(k)=''; 이제서야자료묶음을처리할수있게되었다. 그러나한번에하나씩 >> g=hakjeom4( jeomsu) ACBDBAAB 우리의 find() 함수는한번에처리. 그러니반복문과조건문 / 선택문을하나로융합시킨매틀랩의자 랑이랄까? >> g=hakjeom3( jeomsu) ACBDBAAB (3) 행렬점수처리 이제벡터가아닌행렬자료를처리해보자. >> B=[ 50 60 70 80; 88 99 77 66]; >> g=hakjeom3(b) BDACCBD 행렬의행과열로분리하지않고한자리인덱스로만들어처리하였다. >> g=hakjeom4(b) BDA 이건 1 행밖에처리하지않는다. length(g) 에서열수만반환되어그렇다. 다음과같이하면모두 출력될것이다. %n=length(a);

n=prod(size(a)); >> g=hakjeom4(b) BDACCBD 제대로출력되었다. 물론행렬이아닌벡터로처리되었지만 먼저반복문을사용하는함수에서는행과열로이중으로반복문을사용하면된다. function grade=hakjeom4b(a) [r,c]=size(a); for k=1:r for kk=1:c if a(k,kk)>=90, grade(k,kk)='a'; elseif a(k,kk)>=80, grade(k,kk)='b'; elseif a(k,kk)>=70, grade(k,kk)='c'; elseif a(k,kk)>=60, grade(k,kk)='d'; else, grade(k,kk)=''; >> g=hakjeom4b(b) DCB BACD 4. find() 로행렬자료처리 마지막으로 find() 를써서해보면 function grade=hakjeom3b(a) [e1,f1]=find(a<=100 & a>=90); grade(e1,f1)='a'; [e2,f2]=find(a<90 & a>=80); grade(e2,f2)='b'; [e3,f3]=find(a<80 & a>=70); grade(e3,f3)='c'; [e4,f4]=find(a<70 & a>=60); grade(e4,f4)='d'; [e5,f5]=find(a<60 & a>=0); grade(e5,f5)='';

조건에맞는행렬의인덱스번호를행과열의 2 가지로추출해서사용하면된다. >> g=hakjeom3b(b) DCD BDCD 2015-05-22, 곽노태