ㅇ 일 자 : 2026년 4월 28일
ㅇ 목 표 : 팀 프로젝트 개발과정에서 팀프로젝트를 이해하고, 오류코드를 수정할 수 있다.
ㅇ 내 용
1. 개발자 학습 가이드 (핵심개념 정리)
1.1. 개발자의 마인드셋 및 필수 역량
- 지속적 학습: 개발은 지식 습득이 멈추지 않는 직종입니다. 독서를 취미로 삼아 기본 개념을 꾸준히 쌓는다
- 효율성 추구 (알고리즘): 불필요한 연산과 전기 소모를 줄이는 최적화된 로직을 구현하는 것이 개발자의 역할
- 도구 활용: 단순 반복 작업은 '바이브코딩' 같은 도구를 활용할수도 있고, 타인의 프로그램을 분석하며 학습할 수도 있다.
- 그러나 결국 개발자 자기것으로 만드는 것과 검증능력을 기르는 것은 개발자의 몫이다.
2. 객체지향 프로그래밍(OOP)과 클래스(Class)
2.1. 클래스의 핵심 구성
- 속성(Attribute): 변수
- 메서드(Method): 함수
- 클래스를 사용하는 이유 : 구조화와 가독성: 데이터와 기능을 하나로 묶어(캡슐화) 복잡성을 낮추고 현실 세계의 개념을 직관적으로 설계
- 재사용성: 하나의 설계도(클래스)로 여러 객체를 생성하여 코드 중복을 방지
- 유지보수: 데이터 구조나 기능 변경 시 관련 클래스만 수정하면 되어 관리가 용이
- 객체지향 기술: * 상속: 부모 클래스의 기능을 이어받아 확장하거나 교체
- 다형성: 같은 명령이라도 객체에 따라 다르게 동작
- 캡슐화: 내부 데이터를 보호하고 필요한 기능만 외부로 노출
3. 데이터 및 변수 관리 규칙
- 이터 타입: 파이썬은 리스트 등을 통해 유연한 데이터 관리를 지원
- 변수 사용: * i, j, k: 반복문에서 통용되는 표준 변수명
- 전역/지역 변수: 프로그램이 복잡해질수록 변수 관리가 중요하며, 전역변수는 주로 DB를 통해 관리. 클래스 내에서는 고유한 변수 명명 규칙을 준수
- 예외 처리: 정해진 절차를 벗어난 상황을 제어하는 다양한 기법을 익혀야 한다
※ 참고할 사항
- 개발자라면?
- 현장은 개발실력은 없는데 개발지식은 많이 쌓여 있다. 개발자는 기본개념을 갖고 있어야 한다.
- 개발자는 공부를 지속할수 밖에 없는 직종이다. 취미는 독서가 되야 한다.
예) AI그래픽카드 : 1장 몇천만원 / 서버 1개 구축시 최소 약 ?억 소요
1) 왜 변수를 사용해야 하는가?
2) 3중 for문 활용하라 : 경우의 수를 찾아 준다
>> for a
for a -
for a - - 표준라이브러리 : 타인이 만들어 놓은것, 가져다 기능들을 사용하되 클래스 개념을 알아야 한다. 라이브러리는 클래스 기반으로 만들어져 있다.
- 알고리즘 : 전기, 연산이 많이 들어가는데 이것을 줄여주는 효과가 있는 것을 만드는 개발자
- 단순반복 작업은 바이브코딩이 다 해 준다. 타인이 만든 프로그램을 분석해 보는 것도 추천
- 클래스를 왜 배워야 하는가? 개발자가 클래스(Class)를 배워야 하는 이유는 현대적인 소프트웨어 개발에서 코드의 조직화, 재사용성, 유지보수성을 극대화하여 효율적이고 안정적인 애플리케이션을 만들기 위해서 배운다
- 클래스는 객체지향 : 프로그래밍(OOP)의 핵심으로, 관련된 데이터와 기능(메서드)을 하나의 단위로 묶어 관리하는 "설계도" 역할을 한다.
- "예외처리"는 정식절차를 벗어난 것을 반복하는 것이다. 예외처리 기법은 많다.
input 를 인트로로 묶어서 사용, 재귀함수는 사용하지 않고 반복문을 사용한다. 단, 파일검색 할때는 재귀함수는 사용 - 클래스 : 객체지향을 잘 설명하는 것이 개발, 객체는 "속성"(=변수), "매소드"(=함수)를 갖음
- list : 하나의 변수에는 한가지 항목만 넣는 것이 원칙이지만, 파이썬은 쓸수 있다.
예) ["가", 1,2,["1"]] - 파이썬은 데이터 분석이나 ai 등은 ""절차 지향""이다.
- 함수의 최소 가능단위
>> 함수---> 클래스(함수의 단위가 모인것) ---> 프로그램(클래스단위가 모인것)
>> def 함수명( ):
변수 : for i, j, k, : 세계적으로 반복문 사용할때 사용하는 변수이다
문장
>> class 선언하기 - 전역변수를 사용하고, 지역변수를 사용하지 않는다. 프로그램이 복잡해 질수록 스크립스 내에서 코드를 생성하는데 개발자들은 DB에 접근해서 필요한 전역변수들은 DB에서 뿌려준다. 클래스 내에서 동일한 변수를 사용할 수 없다. 변수 name 규칙을 정한다.
- 예제문제는 실습을 해보고 클래스 개념을 이해하기 (교재 488~490p 프라이빗 변수와 게터/세터)
- 상속 : 클래스 기반의 객체지향 언어들은 ""상속"" 기능 지원한다. 다른 누군가가 만들어 놓은 기본 형태에 내가 원하는 것만 추가하거나 교체하는 것이 바로 "상속"이다.
- 프로그래밍 언어는 기반이 되는 것을 "부모", 이를 기반으로 생성한 것을 "자식"이라고 함
(예시) 마트 pos기계가 동시에 2명것을 계산 할수 있다. 상품을 추가할 때 먼저의 계산을 중단하고 다른계산을 먼저 할수 있다.
※ 코드 참고할 사항
|
1. 코드의 구조화와 가독성 향상 (모듈화)
2. 코드 재사용성과 유지보수성 (생산성)
3. 객체지향 프로그래밍의 핵심 기술 구현
|
4. 함수와 재귀(Recursion)
- 구조: 함수 → 클래스(함수의 집합) → 프로그램(클래스의 집합)으로 구성
- 재귀 함수: 문제 내부에서 자기 자신을 다시 호출하여 작은 단위로 문제를 해결하는 방식
- 핵심 요소: 종료 조건(Base Case)과 재귀 호출(Recursive Step).
- 주의사항: 파일 검색 등 특수한 경우 외에는 메모리 오버플로우와 성능 문제로 인해 일반적인 반복문(for, while) 사용이 권장
4.1. 재귀 함수란?
4.1.1. 재귀 함수(Recursive Function)
함수 내부에서 자기 자신을 다시 호출하여 문제를 더 작은 단위로 분할하여 해결하는 방식, 수학의 귀납적 정의와 유사하며, 복잡한 문제를 단순하게 정의할 수 있어 팩토리얼( ), 피보나치 수열, 하노이의 탑 등 알고리즘 구현핵심
** 재귀함수의 핵심요소 **
- 종료 조건(Base Case) : 무한 호출에 빠지지 않도록 재귀를 멈추는 가장 작은 문제 단위.
- 재귀 단계(Recursive Step) : 자기 자신을 호출하여 문제를 더 작은 문제로 축소시키는 과정.Factorial) ** 정의 : n! = n × (n-1) × ... ×1 재귀적 정의 : f(n) = n × f(n-1), 단, f(1) = 1.
** 재귀함수의 핵심요소 **
- 종료 조건(Base Case) : 무한 호출에 빠지지 않도록 재귀를 멈추는 가장 작은 문제 단위.
- 재귀 단계(Recursive Step) : 자기 자신을 호출하여 문제를 더 작은 문제로 축소시키는 과정.Factorial) ** 정의 : n! = n × (n-1) × ... ×1 재귀적 정의 : f(n) = n × f(n-1), 단, f(1) = 1.
# 팩토리얼 계산 재귀함수 예제
include <stdio.h> # 표준 입출력 함수 사용을 위한 헤더
# 팩토리얼을 계산하는 재귀 함수
int factorial(int n) {
# 1.예외 처리: 음수는 팩토리얼 정의되지 않음
if (n < 0) {
return -1; # 오류를 의미하는 값 반환
}
# 2.종료 조건 (Base Case)
# n이 0 또는 1이면 결과는 1
if (n == 0 || n == 1) {
return 1;
}
# 3.재귀 호출 (Recursive Call)
// n! = n * (n-1)!
return n * factorial(n - 1);
}
int main() {
int num; # 사용자로부터 입력받을 정수 변수
# 사용자 입력 받기
printf("정수를 입력하세요: ");
scanf("%d", &num);
# 팩토리얼 함수 호출 및 결과 출력
int result = factorial(num);
# 결과가 -1이면 오류 메시지 출력
if (result == -1) {
printf("음수에 대한 팩토리얼은 정의되지 않습니다.\n");
} else {
printf("%d! = %d\n", num, result); # 결과 출력
}
return 0; # 프로그램 정상 종료
}
>> 코드 설명
종료 조건 (if (n <= 1)): n이 1 이하가 되면 1을 반환하며 재귀 호출을 멈춘다
재귀 호출 (n * factorial(n - 1)): factorial(5)는 factorial(4)를 호출하고, 최종적으로 factorial(1)까지 내려가 계산한다
스택 메모리: 재귀 함수는 호출될 때마다 스택(Stack) 메모리에 인자 값이 저장되어 역순으로 처리된다
※ 재귀 함수 구조
종료 조건: n == 0 || n == 1
재귀식: n * factorial(n - 1)
4.1.2. 재귀함수 장·단점
- 장점: 코드가 간결해지고 귀납적 사고방식을 코드로 직접 구현하기 쉬움.
- 단점: 함수 호출이 스택 메모리에 계속 쌓여 메모리 제한이 있는 경우 '스택 오버플로우' 발생 가능성 있고,
반복문(for, While) 에 비해 메모리를 많이 사용하고 성능이 느릴 수 있다.
재귀 함수는 문제를 거꾸로 생각하여 가장 기초적인 상태(Base Case)에서 출발해 문제를 해결하는 방식이다
<<개발자>>
- Python, C+,C# : 개발언어
- 응용s/w : PM (Project Manager), ASP(Active Server Pages 웹개발 기술), NET(네트워크), Windows
- Web : FE(화면), BE(서버로직, back end)
- APP(Application) : 고수준, 각종 웹앱, 데스크탑 프로그램 등
- DB(Data Base) : 고수준, 데이터를 저장 관리하는 시스템, 정보창고, 정리시스템 (회원가입, 로그인, 게시글 등)
- SERVER : 고수준, 데이터 처리, 인증/보안처리, api 제공 등
- AI 개발 : 전공자, TensorFlow, Pytorch
- Big Data : 전공자, Python, SQL, 고객취향분석, 이상징후 탐지, 수요예측 등
| 🔹 DB (Database) 데이터를 저장하고 관리하는 시스템, 사용자 정보, 게시글, 주문 내역 같은 데이터를 체계적으로 저장하고 필요할 때 꺼내 쓰는 곳 🔸 쉽게 말하면 “정보를 쌓아두는 창고 + 정리 시스템” 예시 : 회원가입 → DB에 저장, 로그인 → DB에서 확인, 게시글 → DB에 기록 🔹 웹 구조에서 역할 : FE: 화면에서 데이터 보여줌 BE: DB에 데이터 저장/조회 요청 DB: 실제 데이터 보관 👉 흐름: 사용자 → FE(화면입력) → BE(저장/조회) → DB(보관) → BE(조회) → FE(화면출력) → 사용자 🔹 대표적인 DB 종류 1) 관계형 DB (표 형태) : 엑셀처럼 테이블 구조, 가장 많이 사용됨 예: MySQL, PostgreSQL, Oracle Database, NoSQL DB (유연한 구조) -JSON 같은 형태, 구조가 자유로움 예: MongoDB Redis 🔹 DB를 다루는 언어 : SQL → 데이터 조회, 저장, 수정, 삭제 🔸 DB = 데이터를 저장하고 필요할 때 꺼내 쓰는 핵심 저장소 |
'학습 로그 > Python3' 카테고리의 다른 글
| D+23 [PyCharm PySide6] 실습 및 주석 활용 (0) | 2026.05.11 |
|---|---|
| D+18 [Team Porject] KIOSK (0) | 2026.04.28 |
| D+17 [Team Project] KIOSK 영수증 부분 수정 및 보완 (0) | 2026.04.27 |
| D+15 [Team Project] 팀프로젝트 준비 (0) | 2026.04.27 |
| D+14 [ PyCharm] Module, Package, Library 개념 (0) | 2026.04.21 |