-
Notifications
You must be signed in to change notification settings - Fork 0
/
menu3.html
116 lines (109 loc) · 8.71 KB
/
menu3.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<!DOCTYPE html>
<html>
<head>
<title>Programming Project</title>
<meta charset="UTF-8">
<style type="text/css">
h1 {text-align: center;}
h1:after {content: " with Python"; font-size: medium;}
article {margin-left: 200px; margin-right: 200px;}
ol li {font-size: 13pt; font-weight: bold;}
img {width: 685px}
.detail {width: 500px}
div {background-color: #FFE0F7; padding: 30px;}
</style>
</head>
<body>
<h1> Programming Project</h1>
<pre>
</pre>
<article>
<ol>
<button onclick="changeColor('first', '#E3CEF6');">Purple</button>
<button onclick="changeColor('first', '#CEE3F6');">Skyblue</button>
<button onclick="changeColor('first', '#FFE0F7');">Pink</button>
<div id="first">
<li> 텍스트 파일을 읽어 각 단어들이 등장한 횟수를 알아낸 후 그래프를 그리는 프로그램</li>
<p> </p>
<ul>
<li> 실행화면</li>
<br><img src="http://mm.sookmyung.ac.kr/~it2013716/images/c1.PNG" alt="이미지를 불러올 수 없습니다.">
<p> </p>
<li> 코드 설명</li>
<br> 텍스트 파일을 입력받아 파일 전체 내용을 문자열로 만들어서 공백을 단위로 잘라내어 리스트로 먼저 만들었다.
그리고 set함수로 중복되는 단어를 제거하여 단어의 종류가 담긴 리스트를 만들고, 단어의 등장 횟수가 담긴 리스트도
초기값을 모두 0으로 하여 만들었다. 같은 단어가 등장할 떄마다 해당 단어의 등장 횟수가 증가해야 하기 때문에
단어의 종류가 담긴 리스트와 횟수가 담긴 리스트의 인덱스를 동일하게 설정하였다. 그리하여 for문에서 텍스트 파일에서
나오는 전체 단어들을 하나씩 돌면서 단어의 등장 횟수가 담긴 리스트를 완성시켰다.
<br> 리스트를 완성시킨 후 이에 따라 그래픽 창에서 막대그래프를 그릴 수 있도록 코딩하였다.
</ul>
</div>
<p> </p>
<button onclick="changeColor('second', '#E3CEF6');">Purple</button>
<button onclick="changeColor('second', '#CEE3F6');">Skyblue</button>
<button onclick="changeColor('second', '#FFE0F7');">Pink</button>
<div id="second">
<li> 사용자로부터 입력받은 문자로 자기의 이름을 출력하는 프로그램</li>
<p> </p>
<ul>
<li> 실행화면</li>
<br><img src="http://mm.sookmyung.ac.kr/~it2013716/images/c6.PNG" alt="이미지를 불러올 수 없습니다.">
<p> </p>
<li> 코드 설명</li>
<br> 손, 민, 재 각각의 글자에 관한 16*16 모양의 2차원 리스트를 만드는데, 이때 공백에는 0, 채워지는 부분에는 1을
할당하였다. 그리고 for문에서 다시 0은 공백으로, 1은 입력받은 문자(char)로 치환하였다. for문에 들어가기 전에
손, 민, 재가 모두 들어간 fullname이라는 리스트를 생성하였다. 따라서 for문을 3중으로 사용하여 총 3번 열어주었다.
그러면 가장 작은 단위인 리스트의 요소에 접근할 수 있게 되는데 이때 치환을 한 것이다. 치환을 완료한 다음에는
(3번째 for문에서) print의 end 옵션을 이용해 리스트의 요소들을 가로로 일자로 출력(요소 16개)하고, 2번째 for문에서
print 그대로를 써서 16개짜리를 세로로 출력(16개짜리 한줄을 세로로 16번)시켰다.
</ul>
</div>
<p> </p>
<button onclick="changeColor('third', '#E3CEF6');">Purple</button>
<button onclick="changeColor('third', '#CEE3F6');">Skyblue</button>
<button onclick="changeColor('third', '#FFE0F7');">Pink</button>
<div id="third">
<li> 사칙연산 연산자 3개와 정수 피연산자 4개로 구성된 수식을 문자열로 입력 받아 연산자 우선순위에 따라 계산한 결과를
출력하는 프로그램</li>
<p> </p>
<ul>
<li> 실행화면</li>
<br><img src="http://mm.sookmyung.ac.kr/~it2013716/images/c7.PNG" alt="이미지를 불러올 수 없습니다.">
<p> </p>
<li> 코드 설명</li>
<br> 문자열로 입력받은 수식에서 피연산자만 추출하여 담은 리스트를 생성하고, 여기에 연산자만 추출한 것을 추가하여
결과적으로 all = [피연산자1,연산자1,피연산자2,연산자2,피연산자3,연산자3,피연산자4] 의 리스트를 생성하였다. <br>
피연산자를 추출하기 위해 입력받은 수식(formula)에서 연산자들을 모두 하나의 문자(.)로 치환하여 그것을 기준으로
split시켰다. 그러면 예를 들어 4*2-100/2를 입력했다고 했을 때 “4.2.100.2”에서 [4,2,100,2]가 생성된다. 연산자들을
추출하기 위해서는 피연산자의 길이를 구한 뒤 입력받은 수식을 슬라이싱해서 피연산자를 제거하는 방법을 썼다.
피연산자 4, 2, 100, 2는 문자열로 입력받은 수식 전체에서 각각 1,1,3,1 만큼의 길이를 차지하므로, 슬라이싱을 이용하면
연산자만 남게 할 수 있다.
<p> </p>
<blockquote>▷ 상세 설명:</blockquote>
<br> 4는 formula2에서 [0:’4의길이’]까지 차지하므로, 첫번째 피연산자 뒤에 나오는 연산자는 formula2에서
[‘4의길이’ : ’4의길이+1’]까지 차지하게 된다. 두번째 피연산자 2는 첫번째 연산자 이후에 나오므로, formula2에서
[‘4의길이+1’ : ‘4의길이+1+2의길이’]까지 차지한다. 두번째 연산자 또한 formula2에서 [‘4의길이+1+2의길이’ :
‘4의길이+1+2의길이+1’]까지 차지하게 된다. 세 번째 피연산자 100을 앞선 방식과 같이 구하면 formula2에서
[‘4의길이+1+2의길이+1’ : ‘4의길이+1+2의길이+1+100의 길이’]까지 차지하는 것을 알 수 있다. 따라서 마지막으로
세번째 연산자를 구하면 formula2에서 [‘4의길이+1+2의길이+1+100의 길이’ : ‘4의길이+1+2의길이+1+100의 길이+1’]까지
차지하는 것을 알 수 있다. 이를 일반화 시키려면 첫번째, 번째, 세번째 피연산자의 길이를 각각 len_a, len_b, len_c라고
두고 대입하면 된다. 첫번째 연산자가 있는 위치는 [len_a : len_a+1], 두번째 연산자가 있는 위치는 len_a+1+len_b :
len_a+1+len_b+1], 마지막으로 세번째 연산자가 있는 위치는 [len_a+1+len_b+1+len_c : len_a+1+len_b+1+len_c+1]이 된다.
이 위치들을 가지고 formula2에서 슬라이싱을 하면 연산자들만 구할 수 있게 된다.
<img src="http://mm.sookmyung.ac.kr/~it2013716/images/c8.PNG" class="detail" alt="이미지를 불러올 수 없습니다.">
<p>그리고 나서는 입력받을 수 있는 모든 경우의 수에 대해 하나하나 if 혹은 elif문으로 만들어서 계산한 결과값을
마지막에 출력시켰다.</p>
<p> </p>
<blockquote>▷ 모든 경우의 수:</blockquote>
<img src="http://mm.sookmyung.ac.kr/~it2013716/images/c9.PNG" class="detail" alt="이미지를 불러올 수 없습니다.">
</ul>
</div>
</ol>
</article>
<script type="text/javascript">
function changeColor(id, color) { //사용자 정의 함수(객체) changeColor()
document.getElementById(id).style.background = color; //document 객체 사용
}
</script>
</body>
</html>