쉽게 풀어쓴 C 프로그래밍

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

PowerPoint Presentation

chap 5: Trees

PowerPoint Presentation

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

10장 리스트

슬라이드 1

8장 문자열

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

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

PowerPoint Template

Chapter 4. LISTS

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

02장.배열과 클래스

17장 클래스와 메소드

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

Microsoft PowerPoint 웹 연동 기술.pptx

Chapter 4. LISTS

슬라이드 1

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

Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구

2002년 2학기 자료구조

Microsoft PowerPoint 세션.ppt

PowerPoint 프레젠테이션

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

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

중간고사

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

Java ...

MySQL-.. 1

A Review of C Programming

슬라이드 1

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - Java7.pptx

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

Index

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

Tcl의 문법

중간고사 (자료 구조)

adfasdfasfdasfasfadf

설계란 무엇인가?

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

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

원형연결리스트에대한설명중틀린것은 모든노드들이연결되어있다 마지막에삽입하기가간단한다 헤더노드를가질수있다 최종노드포인터가 NULL이다 리스트의 번째요소를가장빠르게찾을수있는구현방법은무엇인가 배열 단순연결리스트 원형연결리스트 이중연결리스트 단순연결리스트의노드포인터 가마지막노드를

쉽게

PowerPoint 프레젠테이션

Chapter 4. LISTS

06장.리스트

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint Presentation

Microsoft PowerPoint - chap05-제어문.pptx

PowerPoint 프레젠테이션

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

쉽게 풀어쓴 C 프로그래밍

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

강의 개요

Microsoft PowerPoint - chap06-1Array.ppt

UI TASK & KEY EVENT

Microsoft PowerPoint - C++ 5 .pptx

chap x: G입력

EBS직탐컴퓨터일반-06-OK


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

gnu-lee-oop-kor-lec11-1-chap15

Microsoft PowerPoint - chap04-연산자.pptx

컴파일러

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

슬라이드 1

PowerPoint 프레젠테이션

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

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

Microsoft PowerPoint - gnu-w10-c-chap12


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

03_queue

untitled

Microsoft Word - SAS_Data Manipulate.docx

슬라이드 1

Microsoft PowerPoint - 27.pptx

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

Microsoft Word _mentor_conf_output5.docx

Lab 5. 실습문제 (Double linked list)-1_해답.hwp

< 고급 C 프로그래밍및실습 > 11 장구조체실습문제 문제에대한안내 - 특별한언급이없으면문제의조건에맞지않는입력은입력되지않는다고가정하라. - 특별한언급이없으면, 각줄의맨앞과맨뒤에는공백을출력하지않는다. - 출력예시에서 는각줄의맨앞과맨뒤에출력되는공백을의미한다. - 입출력예시

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

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

Let G = (V, E) be a connected, undirected graph with a real-valued weight function w defined on E. Let A be a set of E, possibly empty, that is includ

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

03장.스택

Chap 6: Graphs

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - chap-11.pptx

PowerPoint 프레젠테이션

Transcription:

리스트 (list) 는여러개의데이터가저장되어있는장소이다. scores = [ 32, 56, 64, 72, 12, 37, 98, 77, 59, 69]

scores = [ ] for i in range(10): scores.append(int(input(" 성적을입력하시오 :"))) print(scores)

scores = [ 32, 56, 64, 72, 12, 37, 98, 77, 59, 69] scores[0] = 80; scores[1] = scores[0]; scores[i] = 10; // i는정수변수 scores[i+2] = 20; // 수식이인덱스가된다. if i >= 0 and i < len(scores) : scores[i] = number

scores = [ 32, 56, 64, 72, 12, 37, 98, 77, 59, 69] for element in scores: print(element)

list1 = list() list2 = list("hello") list3 = list(range(0, 5)) # 공백리스트생성 # 문자 H, e, l, l, o를요소로가지는리스트생성 # 0, 1, 2, 3, 4를요소가가지는리스트생성 list1 = [ ] list2 = [ "H", "e", "l", "l", "o" ] list3 = [ 0, 1, 2, 3, 4 ] # 공백리스트생성 # 문자 H, e, l, l, o를요소로가지는리스트 # 0, 1, 2, 3, 4를요소가가지는리스트생성

list1 = [12, "dog", 180.14] list2 = [["Seoul", 10], ["Paris", 12], ["London", 50]] list3 = ["aaa", ["bbb", ["ccc", ["ddd", "eee", 45]]]] # 혼합자료형 # 내장리스트 # 내장리스트

학생들의성적을처리하는프로그램을완성시켜보자. 사용자로부터성적을입력받아서리스트에저장한다. 성적의평균을구하고 80 점이상성적을받은학생의숫자를계산하여출력해보자. 성적을입력하시요 : 10 성적을입력하시요 : 20 성적을입력하시요 : 60 성적을입력하시요 : 70 성적을입력하시요 : 80 성적평균은 48.0 입니다. 80 점이상성적을받은학생은 1 명입니다.

STUDENTS = 5 scores = [] scoresum = 0 for i in range(students): value = int(input(" 성적을입력하시요 : ")) scores.append(value) scoresum += value scoreavg = scoresum / len(scores) highscorestudents = 0 for i in range(len(scores)): if scores[i] >= 80: highscorestudents += 1 print(" 성적평균은 ", scoreavg, " 입니다.") print("80 점이상성적을받은학생은 ", highscorestudents, " 명입니다.")

리스트는문자열도저장할수있다. 강아지를많이키우는사람을가정하자. 강아지들의이름을저장하였다가출력하는프로그램을작성해보자. 강아지의이름을입력히시오 ( 종료시에는엔터키 ) 미나강아지의이름을입력히시오 ( 종료시에는엔터키 ) 초롱이강아지의이름을입력히시오 ( 종료시에는엔터키 ) 써니강아지의이름을입력히시오 ( 종료시에는엔터키 ) 팅커벨강아지의이름을입력히시오 ( 종료시에는엔터키 ) 강아지들의이름 : 미나, 초롱이, 써니, 팅커벨,

dognames = [] while True: name = input(' 강아지의이름을입력히시오 ( 종료시에는엔터키 ) ') if name == '': break dognames.append(name) print(' 강아지들의이름 :') for name in dognames: print(name, end=", ")

시퀀스 : 순서를가진요소들의집합 문자열 바이트시퀀스 바이트배열 리스트 튜플 range 객체

text = "Will is power." print(text[0], text[3], text[-1]) flist = ["apple", "banana", "tomato", "peach", "pear" ] print(flist[0], flist[3], flist[-1]) W l. apple peach pear

인덱싱 (indexing) 이란리스트에서하나의요소를인덱스연산자를통하여참조 ( 접근 ) 하는것을의미한다. >>> shopping_list = [ " 두부 ", " 양배추 ", " 딸기 ", " 사과 ", " 토마토 " ] >>> shopping_list[0] ' 두부 '

슬라이싱 (slicing) 은리스트안에서범위를지정하여서원하는요소들을선택하는연산이다. >>> squares = [0, 1, 4, 9, 16, 25, 36, 49] >>> squares[3:6] # 슬라이싱은새로운리스트를반환한다. [9, 16, 25]

>>> squares = [0, 1, 4, 9, 16, 25, 36, 48] # 잘못된부분이있음! >>> 7 ** 2 # 7 의제곱은 49 임! 49 >>> squares[7] = 49 # 잘못된값을변경한다. >>> squares [0, 1, 4, 9, 16, 25, 36, 49]

두개의리스트를합칠때는연결연산자인 + 연산자를사용할수있다. >>> marvel_heroes = [ " 스파이더맨 ", " 헐크 ", " 아이언맨 " ] >>> dc_heroes = [ " 슈퍼맨 ", " 배트맨 ", " 원더우먼 " ] >>> heroes = marvel_heroes + dc_heroes >>> heroes [' 스파이더맨 ', ' 헐크 ', ' 아이언맨 ', ' 슈퍼맨 ', ' 배트맨 ', ' 원더우먼 '] >>> values = [ 1, 2, 3 ] * 3 >>> values [1, 2, 3, 1, 2, 3, 1, 2, 3]

len() 연산은리스트의길이를계산하여반환한다. >>> letters = ['a', 'b', 'c', 'd'] >>> len(letters) 4

append() 를사용하여서리스트의끝에새로운항목을추가할수있다. >>> shopping_list = [ ] >>> shopping_list.append(" 두부 ") >>> shopping_list.append(" 양배추 ") >>> shopping_list.append(" 딸기 ") >>> shopping_list [' 두부 ', ' 양배추 ', ' 딸기 ']

어떤요소가리스트에있는지없는지만알려면 in 연산자를사용하면된다. heroes = [ " 스파이더맨 ", " 슈퍼맨 ", " 헐크 ", " 아이언맨 ", " 배트맨 " ] if " 배트맨 " in heroes : print(" 배트맨은영웅입니다. ")

어떤요소의리스트안에서의위치를알려면 index() 을사용한다. heroes = [ " 스파이더맨 ", " 슈퍼맨 ", " 헐크 ", " 아이언맨 ", " 배트맨 " ] index = heroes.index(" 슈퍼맨 ") # index 는 1 이된다.

pop() 메소드는특정한위치에있는항목을삭제한다. >>> heroes = [ " 스파이더맨 ", " 슈퍼맨 ", " 헐크 ", " 아이언맨 ", " 배트맨 " ] >>> heroes.pop(1) ' 슈퍼맨 ' >>> heroes [' 스파이더맨 ', ' 헐크 ', ' 아이언맨 ', ' 배트맨 '] >>> heroes = [ " 스파이더맨 ", " 슈퍼맨 ", " 헐크 ", " 아이언맨 ", " 배트맨 ", " 조커 " ] >>> heroes.remove(" 조커 ") >>> heroes [' 스파이더맨 ', ' 슈퍼맨 ', ' 헐크 ', ' 아이언맨 ', ' 배트맨 ']

우리는비교연산자 ==,!=, >, < 를사용하여서 2 개의리스트를비교할수있다. >>> list1 = [ 1, 2, 3 ] >>> list2 = [ 1, 2, 3 ] >>> list1 == list2 True

리스트안에서최소값과최대값을찾으려면내장메소드인 max() 와 min() 을사용하면된다. >>> values = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] >>> min(values) 1 >>> max(values) 10

1. 리스트객체의 sort() 메소드를사용하는방법 2. sorted() 내장함수를사용하는방법 >>> a = [ 3, 2, 1, 5, 4 ] >>> a.sort() >>> a [1, 2, 3, 4, 5] >>> a = [ 3, 2, 1, 5, 4 ] >>> b = sorted(a) >>> b [1, 2, 3, 4, 5]

scores = [ 10, 20, 30, 40, 50 ] values = scores

>>> scores = [ 10, 20, 30, 40, 50 ] >>> values = list(scores) >>> values[2]=99 >>> scores [10, 20, 30, 40, 50] >>> values [10, 20, 99, 40, 50]

리스트는 참조로호출하기 가적용된다. def func2(list): list[0] = 99 values = [0, 1, 1, 2, 3, 5, 8] print(values) func2(values) print(values) [0, 1, 1, 2, 3, 5, 8] [99, 1, 1, 2, 3, 5, 8]

리스트를수학자들이집합을정의하는것과유사하게생성하는것

list1 = [3, 4, 5] list2 = [x*2 for x in list1] print(list2) [6, 8, 10]

[0, 2, 4, 6, 8]

타고라스의정리를만족하는삼각형들을모두찾아보자. 삼각형한변의길이는 1 부터 30 이하이다. [(3, 4, 5), (5, 12, 13), (6, 8, 10), (7, 24, 25), (8, 15, 17), (9, 12, 15), (10, 24, 26), (12, 16, 20), (15, 20, 25), (20, 21, 29)]

new_list = [(x,y,z) for x in range(1,30) for y in range(x,30) for z in range(y,30) if x**2 + y**2 == z**2] print(new_list) new_list = [] for x in range(1, 30): for y in range(x, 30): for z in range(y, 30): if x**2+y**2==z**2: new_list.append((x, y, z)) print(new_list)

파이썬을이용하여연락처를관리하는프로그램을작성하여보자. 연락처관리프로그램은다음과같은메뉴를가져야한다. -------------------- 1. 친구리스트출력 2. 친구추가 3. 친구삭제 4. 이름변경 9. 종료메뉴를선택하시오 : 2 이름을입력하시오 : 홍길동 -------------------- 1. 친구리스트출력 2. 친구추가 3. 친구삭제 4. 이름변경 9. 종료메뉴를선택하시오 : 1 [' 홍길동 '] --------------------...

menu = 0 friends = [] while menu!= 9: print("--------------------") print("1. 친구리스트출력 ") print("2. 친구추가 ") print("3. 친구삭제 ") print("4. 이름변경 ") print("9. 종료 ") menu = int(input(" 메뉴를선택하시오 : ")) if menu == 1: print(friends) elif menu== 2: name = input(" 이름을입력하시오 : ") friends.append(name)

elif menu == 3: del_name = input(" 삭제하고싶은이름을입력하시오 : ") if del_name in friends: friends.remove(del_name) else: print(" 이름이발견되지않았음 ") elif menu == 4: old_name = input(" 변경하고싶은이름을입력하시오 : ") if old_name in friends: index = friend.index(old_name) new_name = input(" 새로운이름을입력하시오 : ") friends[index] = new_name else: print(" 이름이발견되지않았음 ")

2 차원테이블표시 # 2 차원리스트를생성한다. s = [ [ 1, 2, 3, 4, 5 ], [ 6, 7, 8, 9, 10 ], [11, 12, 13, 14, 15 ] ] print(s) [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]

# 동적으로 2 차원리스트를생성한다. rows = 3 cols = 5 s = [ ] for row in range(rows): s += [[0]*cols] print("s =", s) s = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

s = [ ] [ 1, 2, 3, 4, 5 ], [ 6, 7, 8, 9, 10 ], [11, 12, 13, 14, 15 ] # 행과열의개수를구한다. rows = len(a) cols = len(a[0]) for r in range(rows): for c in range(cols): print(s[r][c], end=",") print() 1,2,3,4,5, 6,7,8,9,10, 11,12,13,14,15,

2 개의주사위를굴리면다음표와같이 36 가지의결과가나온다. 이것을 6 6 크기의 2 차원리스트로생성하여보자. [[2, 3, 4, 5, 6, 7], [3, 4, 5, 6, 7, 8], [4, 5, 6, 7, 8, 9], [5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10, 11], [7, 8, 9, 10, 11, 12]]

rows = 6 cols = 6 table = [ ] # 2 차원리스트를생성한다. for row in range(rows): table += [[0]*cols] # 2 차원리스트의각요소에 rows 와 cols 값을더하여저장한다. for row in range(rows): for col in range(cols): table[row][col] = (row+1+col+1) print(table)

다음과같이텍스트모드에서컴퓨터와사람이 Tic- Tac-Toe 게임을할수있는프로그램을작성하여보자. --- --- --- --- --- --- 다음수의 x 좌표를입력하시오 : 0 다음수의 y 좌표를입력하시오 : 0 X O --- --- --- --- --- --- 다음수의 x 좌표를입력하시오 : 1 다음수의 y 좌표를입력하시오 : 1 X O O --- --- --- X --- --- ---...

board= [[' ' for x in range (3)] for y in range(3)] while True: # 게임보드를그린다. for r in range(3): print(" " + board[r][0] + " " + board[r][1] + " " + board[r][2]) if (r!= 2): print("--- --- ---") # 사용자로부터좌표를입력받는다. x = int(input(" 다음수의 x 좌표를입력하시오 : ")) y = int(input(" 다음수의 y 좌표를입력하시오 : "))

# 사용자가입력한좌표를검사한다. if board[x][y]!= ' ': print(" 잘못된위치입니다. ") continue else: board[x][y] = 'X' # 컴퓨터가놓을위치를결정한다. 첫번째로발견하는비어있는칸에놓는다. done =False for i in range(3): for j in range(3): if board[i][j] == ' ' and not done: board[i][j] = 'O'; done=true break;

리스트는많은데이터를저장할수있는자료구조이다. 리스트에요소를추가할때는 append() 를사용한다. 리스트의길이는 len() 로계산할수있고리스트의요소들을정렬하려면 sort() 를호출한다. 리스트도 2 차원으로만들수있가. 2 차원리스트는 1 차원리스트의모임으로구성된다.