728x90
반응형

프로그래밍 72

반복 가능한 Iterable 객체와 반복자 Iterator 객체

2023.1.6. 최초 작성 파이썬에서 반복이 가능한 객체를 iterable 객체라고 한다. iterable 객체는 매직 메소드(특수한 역할를 하는 메소드)인 __iter__ 에 의해 반복자인 iterator 객체를 만든다. iterator 객체는 __next__ 매직 메소드에 의해 반복하며 값을 차례로 꺼내게 된다. for 문은 iterable 과 iterator 객체를 사용하여 반복 구조를 만드는데 아래 예제 코드는 __iter__ 와 __next__ 메소드를 직접 사용한 것이다. s = 'hello' for ss in s: print(ss) if '__iter__' in dir(s): print("__iter__ 존재함") else: print("__iter__ 없음") a = s.__iter__(..

파이썬 for문 응용 (range, enumerate를 이용한 번지 접근)

2023.1.6 최초 작성 파이썬에서 for문을 이용한 반복 구조의 기본적인 형태는 아래의 코드와 같다. string = 'abcdefg' for s in string: print(s) [실행 결과] a b c d e f g 만약 for 문에서 번지를 확인하고자 한다면 위의 코드에서는 확인이 안 되므로 구조를 바꾸어야 한다. 첫 번째는 range를 이용해 0부터 시작하는 번지를 만드는 방법이다. string = 'abcdefg' for i in range(len(string)): print(i, string[i]) [실행 결과] 0 a 1 b 2 c 3 d 4 e 5 f 6 g 두 번째는 enumerate를 이용하여 0부터 시작하는 열거형 상수를 만드는 방법이다. string = 'abcdefg' for..

외부 변수(extern)와 헤더파일 만들기

2023.1.5. 최초 작성 여러 개의 소스 코드를 만들어 사용하고 다른 파일에서 선언한 전역변수를 써야 할 때가 있다. 여러 명이 같은 프로젝트를 진행할 때, 편한 유지보수를 위해 소스 코드를 여러 개로 분리할 때이다. 외부의 다른 c 소스 파일에 전역변수를 사용해도 되고 별도로 헤더파일을 만들어 사용해도 된다. 헤더파일을 만들어 사용하려면 #include 해야 한다. 사용자가 만든 헤더파일을 #include 할 때는 쌍따옴표(“ ”)를 사용한다. 아래 코드는 c 소스 코드이다. #include #include "extern_file.h" void main() { extern int a; extern int b; b = 30; printf("%d + %d = %d\n", a, b, a + b); } 아..

프로그래밍/C 2023.01.05

레지스터 변수

2023.1.5. 최초 작성 CPU에는 주기억장치인 메모리보다 훨씬 빠른 기억공간인 레지스터(register)가 있다. 일반 변수는 주기억장치를 할당받는데 레지스터 변수는 CPU 내에 레지스터를 할당받는다. 특정 변수가 굉장히 자주 사용하는 것이라면 속도 증가를 위해 레지스터 변수로 선언하는 것이 유리하다. 단, 레지스터 변수로 선언해도 무조건 레지스터를 할당받지는 못한다. 실행될 때 남는 레지스터가 있어야 한다. 만약 없다면 일반 변수처럼 주기억장치를 할당받는다. 아래 코드는 구구단 출력에서 레지스터 변수를 사용하였다. #include void main() { register int i, j; for (i = 2; i

프로그래밍/C 2023.01.05

정수(int)의 크기가 넘치는 경우(정수 오버플로우)

2023.1.5. 최초 작성 C언어에서 int는 4byte 기준으로 생각하면 저장할 수 있는 정수의 범위는 –2147483648 ~ 2147483647이다. 그렇다면 아래 코드에서 int 변수에 양수의 가장 큰 값인 2147483647을 넣고 1을 증가하면 어떻게 되는지 확인해보았다. #include void main() { int n = 2147483647; printf("%d\n", n); n++; printf("%d\n", n); } [실행 결과] 2147483647 -2147483648 이렇게 정수의 표현범위를 넘친 것이 정수 오버플로우이다. 이런 일이 일어나는 이유는 컴퓨터가 뺄셈을 위해 음수를 표현하는 방식 때문이다. signed int는 양수뿐 아니라 음수 정보도 필요하다. 컴퓨터가 음수를 ..

프로그래밍/C 2023.01.05

C언어 전역변수와 지역변수의 블록 범위

2023.1.5. 최초 작성 함수 안에서 선언된 변수를 지역변수라고 하여 해당 함수 안에서만 사용하고, 함수 밖에 선언하여 함수의 범위에 상관없이 사용하는 변수를 전역변수라고 한다. 아래 코드는 전역변수와 지역변수를 사용한 예제이다. 지역변수 3번처럼 for 문의 초기식에 변수를 초기화하는 것은 C언어 컴파일 환경에 따라 허용하지 않을 때도 있다. #include int a = 10; // 전역변수 선언 위치 void main() { // 중괄호{ } 안의 변수는 모두 지역변수 // 지역 변수는 자신이 선언된 중괄호{ } 범위 안에서 사용한다. int a = 20; // 지역변수 1번 printf("main함수 안의 a : %d\n", a); { int a = 30; // 지역변수 2번 printf("빈..

프로그래밍/C 2023.01.05

C언어 반복문 흐름제어(break, continue, return)

2023.1.5. 최초 작성 프로그램의 코드를 작성하다 보면 반복 구조를 잘 제어하는 것이 굉장히 중요하다. 특히 중첩된 구조의 반복문은 흐름을 제어하다가 실수할 확률이 높다. 반복문 안에 조건문을 활용해 반복 구조의 흐름을 제어할 수 있는데 이때 활용할 명령어 중 첫 번째는 break이다. 아래 코드는 if 조건문에서 i 변수가 5와 같으면 반복문을 멈추게 된다. 실행 결과를 보면 break 는 자신이 포함된 한 개의 반복문을 멈출 수 있다. 다중 반복 구조일 경우 break를 포함하고 있는 반복문만 멈추는 효과를 가진다. #include void main() { int i; for (i = 1; i

프로그래밍/C 2023.01.05

교육용 코딩 프로그램 - 플레이봇

코딩 공부를 하기위해 교육용으로 만들어진 시스템이다. 텍스트 기반의 코딩을 지원하고 플레이봇 캐릭터가 명령어대로 움직이며 미션을 수행하여 게임하듯이 공부할 수 있다. 개인 프로젝트로 진행하는 게임기반 코딩학습 시스템의 방향성이고 참고 모델이다. http://playbot.spaceii.com/portal/portal_main.php PlayBot Portal "플레이봇은 문제 해결 경험을 제공합니다." 스토리 속에서 해결해야 하는 문제를 찾고, 해결 방법을 고민한 후 프로그래밍으로 문제를 해결합니다. * PlayBot은 학생 교육을 목적으로 만들어졌으 playbot.spaceii.com

프로그래밍 2023.01.03

프로그래밍 훈련 문제 사이트 소개

2023.1.3. 최초 작성 1. 정올 기본적인 문법을 활용하는 연습용 문제부터 알고리즘 연습용 문제와 각종 대회 문제를 포함하고 있다. http://www.jungol.co.kr/ JUNGOL www.jungol.co.kr 2. 코드업 기본적인 문법을 활용하는 연습용 문제부터 알고리즘 연습용 문제와 각종 대회 문제를 포함하고 있다. https://codeup.kr/ CodeUp ☆ 파이썬 다운로드 : 파이썬3 ☆ 무료 C언어 IDE : Code::blocks DEV C++ ☆ 추천 온라인 IDE : C C++11 Python3 Java ☆ 채점 가능 언어 : C, C++, JAVA, Python 3.5 ★ C++로 제출시 void main()을 사용하면 codeup.kr 3. 백준 정올, 코드업과 비슷..

프로그래밍 2023.01.03

C언어 반복문(while, do-while, for)

2023.1.3. 최초 작성 컴퓨터 프로그램에서 반복 구조는 조건문과 함께 가장 기본적인 문법이면서 알고리즘을 구현할 때 아주 활용도가 높다. C언어는 세 가지 반복문을 지원한다. 첫 번째는 while 문인데 if 문과 아주 유사하다. if 문은 조건식이 참이면 중괄호 안의 내용을 실행한다. while 문도 마찬가지이다. 조건식이 참이면 괄호 안의 내용을 실행하는데 반복해서 실행한다. 조건식이 참이면 계속 반복되고 조건식이 거짓이 되면 반복이 멈추기 때문에 조건식의 구조와 조건식에서 사용한 변수의 변화가 중요하다. #include void main() { int n = 10; puts("카운트 다운 시작.."); while (n >= 0) { printf("%d\n", n--); } puts("발사!!!..

프로그래밍/C 2023.01.03
728x90
반응형