대학교 98

데이터구조 - (5) 스택, 큐

스택 LIFO 구조로 마지막에 넣은 것이 처음으로 나가는 구조이다. 예시로 쌓여있는 식판이 있다. 출처 : 쉽게 배우는 자료구조 with 파이썬 기본적으로 push는 append의 동작을 수행하고, pop은 top 값을 제거한다. 원하는 값을 삭제하기 위해서는 따로 지정이 필요하다. ​ 출처 : 쉽게 배우는 자료구조 with 파이썬 정적 영역은 컴파일 직후 상대적인 위치를 정할 수 있는 정보가 있고, 동적 영역은 수행을 시작한 후에야 알 수 있다. 즉 정적은 프로그램 수행 코드와 프로그램이 끝날 때까지 존재하는 데이터가 있고, 동적은 프로그램 수행 중 할당받는 메모리(힙)와 다른 함수 호출할 때 정보를 저장하는 스택이 있다. 리스트를 이용한 스택 리스트를 이용하여 스택을 구현하면 삽입은 append(값)..

대학교 2023.11.05

자바 - (7) 인스턴스 멤버와 정적 멤버

인스턴스 멤버 클래스에는 필드, 메소드와 같은 멤버가 필요하다. 하지만 클래스 멤버를 객체마다 가지게 되면 엄청난 낭비가 될 수 있다. 물론 객체의 필드값이 다르면 다른 객체를 가져야 하지만 같다면 서로 같은 멤버를 가져도 된다. 이를 자바에서 구분하기 위해 인스턴스와 정적 멤버로 나눈다. ​ 인스턴스 멤버란 객체를 생성한 후 사용할 수 있는 필드와 메소드를 말하는데, 이들을 각각 인스턴스 필드와 메소드로 부른다. 이전에 작성했던 것들은 모두 인스턴스 멤버이다. 출처 : 혼자 공부하는 자바 객체 내부에서 인스턴스 멤버에 접근하기 위해 this를 사용한다. 생성자와 메소드의 매개 변수 이름이 필드와 같을 경우, 필드 임을 지정하기 위해 주로 사용한다. 출처 : 혼자 공부하는 자바 정적 멤버 정적 멤버는 클..

대학교 2023.11.01

마이크로프로세서 - (7) 아날로그-디지털 변환

아날로그-디지털 변환 주변의 데이터는 아날로그이기에 마이크로컨트롤러에서 처리할 수 있는 디지털 데이터로 변환이 필요하다. ADC(아날로그-디지털 변환기) : 10비트 해상도, 8개 채널 제공 출처 : ATmega128로 배우는 마이크로컨트롤러 프로그래밍 ADMUX -> ADCSRA -> ADC 순서대로 진행된다. 우선 ADMUX에서 기준전압을 5V, 0V, 2.56V에서 정한 후 입력 채널을 선택한다. 이후 ADCSRA에서 변환, 활성화, 모드, 분주율 등을 설정한다. 최종적으로 ADC에서 변환값을 10비트에 저장한다. ​ 단일 입력은 1개의 입려과 GND를 사용하고, 차동 입력은 2개의 입력 차이와 GND를 사용한다. 여기서 입력되는 아날로그 신호 크기가 작은 경우 증폭 기능을 사용할 수 있다. 이를 ..

대학교 2023.10.18

파이썬 - (4) 튜플, 함수

튜플 다른 타입의 객체를 포함하는 객체 연속적으로 나열된 객체를 표현한다. EX) A=(1,2,3) A=1,2,3 A=(1,2,True) 튜플 활용 from cs1media import * yellow = (255, 255, 0) img = load_picture("./cs101_students.jpg") img.show() img.set(29, 30, yellow) img.set(30, 30, yellow) img.set(31, 30, yellow) img.set(30, 29, yellow) img.set(30, 31, yellow) w, h = img.size() for i in range(w): img.set(i, h/5, yellow) img.set(i, h/5-1, yellow) img.set(..

대학교 2023.10.15

자바 - (6) 객체 지향 프로그래밍

객체 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지며 식별 가능한 것 출처 : 혼자 공부하는 자바 객체들은 서로 상호작용할 때 메소드를 사용한다. 아래와 같이 .를 사용해서 메소드를 호출해 서로 상호작용 후 값을 리턴하기도 한다. 출처 : 혼자 공부하는 자바 ​ ​ 출처 : 혼자 공부하는 자바 객체는 개별 사용이 가능하지만, 보통 다른 객체와 관계를 맺으며 사용한다. 집합 관계는 부품과 완성품의 관계이고, 사용 관계는 서로 상호작용하는 것을 말하며, 상속 관계는 부모 객체를 기반으로 자식 객체를 생성하는 관계이다. ​ 여기서 객체 지향 프로그래밍은 집합/사용 관계에 있는 객체를 하나씩 설계 후 조립하여 프로그램을 개발하는 것을 말한다. ​ 클래스 클래스는 자바에서 설계도를..

대학교 2023.10.14

한국 근현대사 - (4) 대한제국

대한제국 선포(1897년) 1897년 대한제국을 선포하며 국내외에 자주독립 국가임을 선포한다. 환구단에서 황제 즉위식을 거행하며 독자적 연호인 광무를 사용했다. 1899년에는 대한국국제를 반포하며 전제 군주제임을 알렸다. ​ 고종은 광무개혁으로 자주적 근대화를 위해 노력했다. 황제권 강화, 행정제도 정비, 군제개편, 토지조사 사업, 성공업 진흥, 실업, 기술 교육기관 설립, 유학생 파견, 근대 시설 도입을 시도했다. 하지만 인력과 재정 부족으로 실효를 거두지 못했다. (갑신정변으로 인한 인력 감소) 러-일 전쟁(1904~1905년) 당시 1894년 청일 전쟁을 일본이 승리했고, 1902년에 영-일 동맹을 맺었다. 이는 러시아와 새 유럽 세력을 견제하기 위해서이다. 러시아는 이 때 시베리아 횡단철도 공사를..

대학교 2023.10.11

한국 근현대사 - (3) 조선 - 2

거문도 점령 고종이 중국을 견제하기 위해 러시아와 미국에 보호 요청을 했다. 1884년 조선은 러시아와 통상 조약 체결과 국교 수립을 했다. 영국과 러시아는 패권 다툼을 하고 있었기에 1885년~1887년 영국이 거문도를 점령했다. 이는 결국 다시 중국(청)이 중개 역할을 맡으며 더욱 조선의 내정에 대한 간섭을 강화하게 된다. 출처 : 영국의 거문도 불법 점령 사건 : 네이버 블로그 (naver.com) (이 때쯤인 1889년에 일본은 헌법을 공포했다.) 미국 선교사 이전 병인박해 등 기독교에 적대적이었으나 갑신정변 때 다친 민영익을 알렌이 치료해주며 인식이 바뀌기 시작했다. 그렇게 1884년 알렌이 의료 선교사로 조선에 입국했다. 1885년에는 아펜젤러, 언더우드, 스크랜트 모자, 헤론 등이 입국했다...

대학교 2023.10.11

마이크로프로세서 - (6) UART 시리얼 통신

시리얼 통신 마이크로컨트롤러는 비트 단위의 데이터를 핀 단위로 전송한다. 출처 : Atmega128로 배우는 마이크로컨트롤러 프로그래밍 병렬과 직렬이 있는데 이번에 다룰 UART 통신은 시리얼/직렬 통신의 한 종류이다. UART 통신 출처 : Atmega128로 배우는 마이크로컨트롤러 프로그래밍 UART통신은 비동기식 통신이다. 즉 별도의 클록을 사용하지 않고 약속된 속도로 송수신을 진행해야 한다. 통신 단위로는 보율을 사용한다. ​ 출처 : Atmega128로 배우는 마이크로컨트롤러 프로그래밍 보율은 변조 속도, 즉 위에서는 총 4번 변화가 있었기에 보율이 4이다. bps의 경우 2비트씩 4번이기에 8이다. ​ 출처 : Atmega128로 배우는 마이크로컨트롤러 프로그래밍 아무 통신이 없을 때 기본적으..

대학교 2023.10.07

마이크로프로세서 - (5) 데이터 입력

저항 풀업 : 버튼이 눌러지지 않은 경우 입력 핀에 5V가 가해짐 풀다운 : 버튼이 눌러지지 않은 경우 입력 핀에 GND가 가해짐 출처 : ATmega128로 배우는 마이크로컨트롤러 프로그래밍 ​ 푸쉬 버튼의 경우 4개의 핀을 가지며 1,3 혹은 2,4 쌍을 사용한다. 출처 : ATmega128로 배우는 마이크로컨트롤러 프로그래밍 레지스터 DDR 레지스터 : 핀의 입출력 방향 선택 출처 : ATmega128로 배우는 마이크로컨트롤러 프로그래밍 ​ PIN 레지스터 : 입력받은 데이터 저장 출처 : ATmega128로 배우는 마이크로컨트롤러 프로그래밍 ​ 출처 : ATmega128로 배우는 마이크로컨트롤러 프로그래밍 PORT 레지스터는 출력할 때 사용하고, PIN 레지스터는 입력할 때 사용한다. 예제 출처 ..

대학교 2023.10.07

파이썬 - (3) 객체와 메서드

객체, 메서드 정수, 소수, 문자열, 행렬 등 파이썬의 모든 데이터는 특정 타입의 객체이다. 객체의 타입은 객체를 생성한 클래스에 따라 다르다. 예시로 int, float, complex, bool 등이 있다. 각 객체는 타입과 별개로, 이름을 가질 수 있다. 또한 새로운 객체를 지정하면 기존에 지정 되어있던 객체는 사라진다. ​ 메서드는 "객체이름.메서드이름()" 형태로 사용한다. 특정 행위를 포함하고 있다. ​ 실습 문제 1번 정답 코드 : from cs1robots import* import time load_world("./worlds/harvest4.wld") hubo = Robot() hubo.move() cnt=0 number=0 def turn_right(): hubo.turn_left()..

대학교 2023.10.07