Spring, 2019 School of CSE Pusan National University

Slides:



Advertisements
Similar presentations
Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
Advertisements

Chapter 2. Text Patterns 2.1 ~ 2.3 서울시립대 전자전기컴퓨터공학과 데이터마이닝 연구실 G 노준호.
2014 가을학기 계산 입문 연습 #4 지도교수 : 박성우 조교 : 이다훈. Python 을 설치합시다.
변수와 조건문 빛나리 36 호 박승운. 파이썬 쉽게 사용하기 Python IDLE 사용 FILE - New File 로 파일 만들기 Run – Run Module 로 실행하기.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
Add Your Text 5. 지수함수와 로그함수 1. 지수함수 2. 로그함수 · 지수함수와 그 그래프 · 지수방정식과 지수부등식 · 로그 함수와 그 그래프 · 로그방정식과 로그부등식.
출석수업 과제 – 총 5문제, 10월 25일 제출 정보통계학과 장영재 교수.
이진 나무 구조 강윤섭 2008년 5월 23일.
4장 배열과 함수 한빛미디어(주).
재료수치해석 HW # 박재혁.
Cary UV 분석 매뉴얼 1. 바탕화면의 Cary WinUV 클릭 정량분석 다 파장 동시분석 단 파장 분석
제 7 장 함수 사용을 통해 엑셀 정복하기.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
B4-1.
(Numerical Analysis of Nonlinear Equation)
Excel 일차 강사 : 박영민.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
6장 그룹 함수.
Communication and Information Systems Lab. 황재철
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
DSP Lab. Week 3 My image Doug Young Suh Media Lab. Rm401
6장. printf와 scanf 함수에 대한 고찰
Tail-recursive Function, High-order Function
Chapter 07. 기본 함수 익히기.
일차방정식의 풀이 일차방정식의 풀이 순서 ① 괄호가 있으면 괄호를 먼저 푼다.
Ⅲ. 이 차 방 정 식 1. 이차방정식과 그 풀이 2. 근 의 공 식.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
어서와 C언어는 처음이지 제15장.
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
Ⅰ. 전기와 자기 전압.
LIT-GenAppSetup ※ Texting+ 클라이언트 프로그램은 제품 인증을 받은 제품입니다.
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
문자열 컴퓨터시뮬레이션학과 2015년 봄학기 담당교수 : 이형원 E304호,
Files and Exceptions Byoungjun Kim
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
C언어 응용 제1주 실습 해보기.
과제 1 4bit x 4 SRAM이 있다 아래 (1), (2) 두 입력에 대한 출력값 [3:0] Dout을 나타내시오 (1)
수학10-나 1학년 2학기 Ⅳ.삼각함수 3. 삼각함수의 그래프(7/12) 삼각함수 수업계획 수업활동.
수학10-나 1학년 2학기 Ⅳ.삼각함수 4. 삼각방정식과 삼각부등식(9/12) 삼각함수 수업계획 수업활동.
지도교수 : 안미정 교수님 사이버 경찰학과 김영훈
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
Excel 일차 강사 : 박영민.
PHP 웹 프로그래밍 (PHP Web Programming) 미리 정의된 함수 문양세 강원대학교 IT대학 컴퓨터과학전공.
Excel 일차 강사 : 박영민.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
Flow Diagram IV While.
7주차: Functions and Arrays
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
함수, 모듈.
상관계수.
문장제 쉽게 풀기 -최소공배수 응용 문제.
프로그래밍 개론 Ⅰ-실습 2장 데이터와 식①.
Spring, 2019 School of CSE Pusan National University
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
Spring, 2019 School of CSE Pusan National University
어서와 C언어는 처음이지 제21장.
수학10-나 1학년 2학기 Ⅱ.부등식의 영역 3. 부등식의 영역에서 최대, 최소(5/5) 부등식 영역 수업계획 수업활동.
Spring, 2019 School of CSE Pusan National University
Report #2 (기한: 3/16) 데이터 구조 과목의 수강생이 50명이라고 가정한다. 이 학생(학번은 2016????으로 표현됨)들의 중간 시험(0~100), 기말 시험(0~100) 성적을 성적 파일에 작성하라(프로그램을 통해서 또는 수작업으로). 성적 파일을 읽어들여서.
SPL-Duino 블록 편집기 이용하기 전류센서 블록 만들기 SPL-Duino 블록 편집기를 실행합니다.
Ch 4. 선택 위젯의 사용과 커스텀뷰 만들기 Assignment #1 04 – 1, 2) 08학번 정보과학과 유재윤
제 10 강 문자 입출력.
Presentation transcript:

Spring, 2019 School of CSE Pusan National University 간단한 통계처리 프로그램 만들기 Spring, 2019 School of CSE Pusan National University http://cfile5.uf.tistory.com/image/2178384951789FFF080F11

학습목표 합계와 평균 구하기를 배운다. 나눌 때는 0으로 나누지 않도록 한다. 종이나 연필만으로 풀고자 하면? (컴퓨터나 프로그램은 생각하지 말고) 최대값과 최소값을 구해본다. 파일에 있는 수를 읽어서 처리하기

합계(sum)와 평균(average) 구하기 배열에 들어있는 정수의 합계와 평균 max_num_stu = 10 # const jeomsu = [0 for i in range(0, max_num_stu + 1)] for i in range(1, max_num_stu + 1): jeomsu[i] = i * 10

합계(sum)와 평균(average) 구하기 # end for i sum = 0 for i in range(1, max_num_stu + 1): sum = sum + jeomsu[i] if (max_num_stu != 0): # 나누기 0 조심 avg = float (sum) / max_num_stu else: avg = 0.0 # end if print ("합계 = ", sum, "평균 = ", avg)

합계(sum)와 평균(average) 구하기 프로그램을 실행하다가 0으로 나누게 되며, 프로그램은 error message를 찍고, 비정상적으로 끝나버린다. ZeroDivisionError: float division by zero

합계(sum)와 평균(average) 구하기 1 에서 10(상수)까지의 합계. 그리고 평균 //종이와 연필만으로 풀고자 하면? (컴퓨터나 프로그램은 생각하지 말고 ...) sum = 0 for i in range(1, 10 + 1): sum = sum + i i = i + 1 avg1 = sum / 10 # 정수 결과: 5 avg2 = float(sum) / 10 # 실수 결과: 5.5 Print ("sum=",sum," 평균=",avg1,avg2)

합계(sum)와 평균(average) 구하기 1 에서 n까지의 합계 구하기 (n 의 값은 파일에서 읽어 들인다: readline() file1 = open("sum-in12.txt", "r") line = file1.readline () n = int (line) file1.close() sum = 0 for i in range(1, n+1): sum = sum + i print ("1에서", n, "까지합계=", sum)

합계(sum)와 평균(average) 구하기 n이 0 이나 음수일 때도 제대로 되나? 파일에서 n을 읽지 못 했을 때에는? -> 이 때는 sum와 평균이 모두 0 이 되도록 line = file1.readline() if (len(line) != 0): n = int (line) else: n = 0

합계(sum)와 평균(average) 구하기 if (n <= 0): avg = 0.0 else: avg = float(sum) / n print ("평균=“, avg)

합계(sum)와 평균(average) 구하기 n1에서 n2까지의 합계와 평균 (n1과 n2는 파일에서 읽어들인다) file1 = open("sum-in21.txt", "r") line = file1.readline() list1 = line.split() If (len(list1) >= 1): n1 = int(list1 [0]) else: n1 = 0 print ("n1(= 부터)의 값이 주어지지 않았음...“) If (len(list1) >= 2): n2 = int(list1 [1])

합계(sum)와 평균(average) 구하기 else: n2 = 0 print ("n2 (= 까지)의 값이 주어지지 않았음...“) file1.close() sum = 0 for i in range(n1, n2 + 1): sum = sum + i If (n1 <= n2): avg = sum / (n2 - n1 + 1) avg = 0.0 print ("평균=“, avg)

합계(sum)와 평균(average) 구하기 n1 에서 n2 까지의 합계와 평균 n2가 n1 보다 작을 때 합계를, 그 전에는 0 으로 보았는데, 이제 여기에서는 n2 + (n2+1) + (n2+2) + ... + (n1) 를 합계로 본다. if (n1 < n2) : from_val = n1 to_val = n2 else: # 부터 >= 까지 from_val = n2 to_val = n1

합계(sum)와 평균(average) 구하기 파일에 있는 모든 수의 합계와 평균을 구한다. count = 0; sum = 0 # ; 한 줄에 문장 여럿 file1 = open("sum-in31x-empty.txt", "r") for line in file1: num_read = int(line) count = count + 1 sum = sum + num_read file1.close() if (count == 0): avg = 0.0 else: avg = float (sum) / count print ("합계=“, sum, " 평균=“, avg)

합계(sum)와 평균(average) 구하기 파일에서 값을 읽어서 배열 (array)에 넣는다. iarr = [0 for i in range(0, 100 + 1)] file1 = open("while-sort-in11.txt", "r") i = 0 for line in file1: i = i + 1 iarr [i] = int(line) print ("i=", i, ": ", iarr[i]) numints = i print (numints, " 개의 수를 읽었습니다“)

최대 값(max)과 최소 값(min) 구하기 파일에 있는 모든 수 가운데 최대인 수 찾기. 파일에 있는 수가 모두 양수라고 가정 //종이와 연필만으로 풀고자 하면?

최대 값(max)과 최소 값(min) 구하기 count = 0 # 파일에 수가 1개 이상 있다고 가정 max_val = -1 # 파일에 있는 수가 양이라 가정 file1 = open("max-in12.txt" , "r") for line in file1: num_read = int(line) count = count + 1 if (num_read > max_val): max_val = num_read file1.close() print ("주어진 수", count, "개 중 최대", max_val)

최대 값(max)과 최소 값(min) 구하기 파일에 있는 모든 수 가운데 최대인 수를 찾되, 파일에 있는 수가 양이라고 가정하지 않는다 // 종이와 연필만으로 풀고자 하면? 파일에 수가 없을 때에는 최대값 찾지 못 함. file1 = open("max-in13.txt" , "r") line = file1.readline() # read the first line if len(line) != 0: # NOT EQUAL: != num_read = int(line) count = 1 max_val = num_read

최대 값(max)과 최소 값(min) 구하기 for line in file1: # line is a string var. num_read = int(line) count = count + 1 if (num_read > max_val): max_val = num_read file1.close() if (count == 0): print ("주어진 수가 없어 최대값 찾을 수 없음“) else: print ("주어진 수 ", count, " 개 가운데 최대인 수 = ", max_val)

최대 값(max)과 최소 값(min) 구하기 파일에 있는 모든 수 가운데 최대인 수를 찾되, read를 한 군데에서만 한다 (두 군데가 아님) count = 0 file1 = open("max-in14.txt" , "r") for line in file1: # line is a string var. num_read = int(line) count = count + 1 if (count == 1): #처음에 읽은 값을 최대값으로 max_val = num_read

최대 값(max)과 최소 값(min) 구하기 둘째 값부터는 그 전까지의 최대값과 견주어서, 최대값이 바뀔지 확인. elif (num_read > max_val): max_val = num_read else: pass # 할 일이 없음 file1.close()

최대 값(max)과 최소 값(min) 구하기 위의 프로그램에서 최대 값이 몇 번 나왔는지도 찍어낼 수 있도록 고친다. // 종이와 연필만으로 풀고자 하면? # num_read: 읽은 수 # count: 읽은 수의 개수 # max_val: 최대 값 # num_occ_max_val: 최대 값이 나온 회수 count = 0 num_occ_max_val = 0

최대 값(max)과 최소 값(min) 구하기 file1 = open ("max-in15.txt" , "r") for line in file1: # line is a string var. num_read = int(line) count = count + 1 if (count == 1): max_val = num_read num_occ_max_val = 1 # 둘째 값부터는 그 전까지의 최대값과 견주어서, 최대값이 바뀔지 확인. elif (num_read > max_val):

최대 값(max)과 최소 값(min) 구하기 max_val = num_read num_occ_max_val = 1 elif (num_read == max_val): # 회수 1 올라감 # max_val = num_read 안 바뀜 num_occ_max_val = num_occ_max_val + 1 else: pass # 할 일이 없음 print ("주어진 수 ", count, " 개 가운데 최대인 수 = ", max_val, "(", num_occ_max_val, " 번 나옴“) file1.close()

최대 값(max)과 최소 값(min) 구하기 최대 값 찾는 프로그램에서 두 수를 견주었을 때, 세 가지 경우(>, =, <)에 할 일을 필요에 따라 알맞게 조금씩 바꾸면, 최소 값 찾는 프로그램으로 바꿀 수 있음.

최대 값(max)과 최소 값(min) 구하기 for line in file1: # line is a string var. num_read = int(line) count = count + 1 if (num_read > max_val): max_val = num_read ==> if (num_read < min_val): min_val = num_read

최대 값(max)과 최소 값(min) 구하기 1 에서 얼마까지 더하면 그 합계가 처음으로 100 이 넘는가? sum1 = 0 num1 = 0 while sum1 <= 100 : num1 = num1 + 1 sum1 = sum1 + num1 print ("1 에서 ", num1, " 까지 더한 합계 ", sum1, ": 처음으로 100 을 넘음“)

파일 입출력 주의사항 파일이 열리지 않을 때, 그 원인은? (여러 가지가 있지만, 가능성 두 가지를 보자) 가) 없는 파일 이름을 open 할 때... file1 = open("file-in14XXX.txt", "r") # a non-existing file 없는 파일

파일 입출력 주의사항 파일 입출력 주의사항 나) 잘못하면, 파일 이름의 extension(확장명)이 두 번 들어가 있어서 파일을 찾지 못 함. - textfile1.txt를 만들려고 하다가 실수로 textfile1.txt.txt 파일을 만들 수 있음. - “알려진 파일 형식의 확장명 숨기기”를 선택하면(아래 그림의 왼쪽), ".txt" 확장명이 안 보이게 되고, 따라서 실수할 가능성이 있음. - “알려진 파일 형식의 확장명 숨기기”를 선택하지 않으면(아래 그림의 오른쪽), ".txt" 확장명이 보여서, 잘못을 곧바로 알 수 있게 됨.

파일 입출력 주의사항 파일 입출력 주의사항 - "textfile1.txt.txt"에서 실수를 바로 알 수 있다.

연습문제 while_max_31_filenames.txt 파일에는 아래와 같이 파일 이름이 여러 개 들어있다: max-in12.txt max-in13.txt max-in14.txt max-in15.txt 위의 보기 경우, 네 개 파일 각각을 읽어서 그 파일 안에 있는 수 가운데 최대 값을 구하되, 그 최대 값이 그 파일에서 몇 번 나왔는지도 말하라.

요약 종이나 연필만으로 푸는 방법을 보았다. 평균을 구할 때, 최대값을 구해본다. (컴퓨터나 프로그램은 생각하지 말고) 평균을 구할 때, 나누는 수가 0인지 확인하여 0으로 나누지 않도록 한다 최대값을 구해본다. 최대값 구하기를 살짝 바꾸어 최소값을 구할 수 있다. 파일이 열리지 않으면 이유를 찾아본다. 파일에 수가 없을 때, 파일에 수가 하나 또는 여러 개 있는 모든 경우를 다룰 수 있어야 한다.