- C Structure
- Python data type
- 예약어
- constants vs vairables
-
storage class
- 기억 클래스 (Storage Class)
- 전역 변수와 지역 변수
- 예시 코드 분석
- 각 기억 클래스의 특성 요약
- 연산자 정리
- 설명과 예제
- Quiz 1: Increment and Decrement Operators
- Quiz 2: Arithmetic Operators
- Quiz 3: Relational Operators
- Quiz 4: Logical Operators
- Quiz 5: Bitwise Operators
- Quiz 6: Shift Operators
- Quiz 7: Conditional Operator
- Quiz 8: Assignment Operators
- How to Read Each Expression in English
- 데이터 입출력 (Input and Output) 설명 및 요약
- 데이터 입출력 표
- 예제 코드
- Quiz 1: Console Input/Output
- Quiz 2: Console Input/Output
- Quiz 3: File Input/Output
- Quiz 4: File Input/Output
- Quiz 5: Network Input/Output
- Answers and Explanations
- 제어문 (Control Statements)
- 요약 표
- 퀴즈
- 반복문 (Loops)
- 요약 표
- 퀴즈
- 배열과 문자열 (Arrays and Strings)
- 요약 표
- 퀴즈
- 포인터 (Pointers)
- 요약 표
- 퀴즈
- Python외 언어등
- 변수 선언
- roadmap
AI summarized youtube contents based on the subtitles.
Playlist for short topics playlist for curriculum according to the book contents.
membox onofftony aiegoo@na
C Structure
C 언어에서 구조체는 여러 변수를 묶어 하나의 사용자 정의 타입을 만드는 방법입니다. 이를 통해 복잡한 데이터를 간편하게 관리할 수 있습니다. 예를 들어, 사람을 표현하는 구조체를 만들어보겠습니다.
#include <stdio.h>
// 사람을 표현하는 구조체 선언
struct Person {
char *name; // 이름을 저장할 문자열 포인터
int age; // 나이를 저장할 정수형 변수
float height; // 키를 저장할 실수형 변수
};
int main() {
// 구조체 변수 선언 및 초기화
struct Person user1;
// 구조체 멤버에 값 할당
user1.name = "Hug";
user1.age = 25;
user1.height = 175.5;
// 구조체 멤버 출력
printf("Name: %s\n", user1.name);
printf("Age: %d\n", user1.age);
printf("Height: %.2f\n", user1.height);
return 0;
}
이 예제에서는 Person
이라는 구조체를 선언하고, name
, age
, height
라는 세 개의 멤버 변수를 포함했습니다. 그런 다음 user1
이라는 구조체 변수를 선언하고, 각 멤버 변수에 값을 할당한 후 출력합니다.
구조체를 포인터와 함께 사용할 때는 ->
연산자를 사용합니다. 이를 통해 구조체의 멤버에 접근할 수 있습니다.
#include <stdio.h>
// 구조체 정의
struct Person {
char *name;
int age;
float height;
};
int main() {
// 구조체 변수 선언
struct Person user1;
struct Person *pUser;
// 포인터 변수에 구조체 변수 주소 할당
pUser = &user1;
// 포인터를 이용한 구조체 멤버 접근 및 값 할당
pUser->name = "Hug";
pUser->age = 25;
pUser->height = 175.5;
// 포인터를 이용한 구조체 멤버 출력
printf("Name: %s\n", pUser->name);
printf("Age: %d\n", pUser->age);
printf("Height: %.2f\n", pUser->height);
return 0;
}
이 예제에서는 Person
구조체에 대한 포인터 pUser
를 선언하고, user1
구조체 변수의 주소를 할당합니다. pUser
포인터를 통해 ->
연산자를 사용하여 user1
의 멤버 변수에 접근하고 값을 할당한 후 출력합니다.
구조체와 포인터를 사용하는 것은 메모리 주소를 직접 다룰 수 있어 유연성과 효율성을 높여줍니다. 하지만 포인터를 사용할 때는 메모리 관리와 관련된 오류를 주의해야 합니다.
Java data tupes
Java에서 사용할 수 있는 데이터 타입에는 크게 문자, 정수, 실수, 논리 이렇게 네 가지 종류로 나눌 수 있습니다.
문자 타입
char:
- 크기: 2바이트 (16비트)
- 표현 범위: 0부터 65535까지 (총 65536가지)
정수 타입
byte:
- 크기: 1바이트 (8비트)
- 표현 범위: -128부터 127까지 (총 256가지, 양수와 음수를 포함하여 절반씩 나누기) short:
- 크기: 2바이트 (16비트)
- 표현 범위: -32768부터 32767까지 (총 65536가지, 양수와 음수를 포함하여 절반씩 나누기) -int:
- 크기: 4바이트 (32비트)
- 표현 범위: 약 -21억 4748만 3648부터 21억 4748만 3647까지 -long:
- 크기: 8바이트 (64비트)
- 표현 범위: 약 -922경 3372조 3685억 4775만 808부터 922경 3372조 3685억 4775만 807까지
실수 타입
-float:
- 크기: 4바이트
- 표현 범위: 단정도 부동 소수점 (IEEE 754 표준) double:
- 크기: 8바이트
- 표현 범위: 배정도 부동 소수점 (IEEE 754 표준)
논리 타입
-boolean:
- 크기: 1바이트
- 표현 값:
true
또는false
요약
자바의 데이터 타입은 크기와 표현할 수 있는 값의 범위에 따라 다양하게 나뉘어져 있으며, 각 타입마다 사용하는 메모리의 크기가 다릅니다. 이러한 타입들은 프로그래밍 시 데이터를 적절히 저장하고 처리하는 데 중요한 역할을 합니다. 특히, C 언어와 비교해보면 몇 가지 타입은 동일하지만, 크기나 표현 범위에서 차이가 나는 경우도 있습니다. 이를 잘 기억하고 각 상황에 맞는 데이터 타입을 사용하는 것이 중요합니다.
Sub-category | Data Type | Size (Bytes) | Size (Bits) | Range |
---|---|---|---|---|
Character | char |
2 | 16 | 0 to 65535 |
Integer | byte |
1 | 8 | -128 to 127 |
short |
2 | 16 | -32768 to 32767 | |
int |
4 | 32 | -2,147,483,648 to 2,147,483,647 | |
long |
8 | 64 | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | |
Floating-point | float |
4 | 32 | Approximately ±3.40282347E+38F (6-7 significant decimal digits) |
double |
8 | 64 | Approximately ±1.79769313486231570E+308 (15 significant decimal digits) | |
Boolean | boolean |
1 | 8 |
true or false
|
This table provides a clear and concise reference for Java data types, their sizes in bytes and bits, and the ranges of values they can represent.
Python data type
Here’s the table summarizing the data types, their sizes, and ranges in Python based on the provided information:
Sub-category | Data Type | Size (Bytes) | Size (Bits) | Range |
---|---|---|---|---|
String | str |
Unlimited | Unlimited | Limited by available memory |
Integer | int |
Unlimited | Unlimited | Limited by available memory |
Floating-point | float |
8 | 64 | Approximately ±1.7976931348623157e+308 |
Complex numbers | complex |
16 | 128 | Real and imaginary parts are both floats |
-
String (
str
): The size and range are only limited by the available memory on the system. -
Integer (
int
): The size and range are also only limited by the available memory. -
Floating-point (
float
): Uses 8 bytes (64 bits) to store a floating-point number. -
Complex numbers (
complex
): Uses 16 bytes (128 bits) to store a complex number, with 8 bytes each for the real and imaginary parts.
예약어
프로그래밍 언어에서 예약어(reserved words)는 특별한 의미를 가지며 특정한 기능을 수행하도록 정해진 단어들입니다. 이러한 예약어들은 변수 이름이나 다른 목적으로 사용할 수 없습니다. 이제 예약어의 종류와 예시를 살펴보겠습니다.
예약어의 종류와 예시
1. 제어문 (Control Statements)
제어문은 프로그램의 흐름을 제어하는 데 사용됩니다.
-
예시:
if
,else
,while
,for
,switch
,case
,break
,continue
,return
2. 자료형 (Data Types)
자료형 예약어는 변수나 함수의 타입을 정의할 때 사용됩니다.
-
예시:
int
,float
,double
,char
,boolean
,void
,long
,short
,byte
3. 기억 클래스 (Storage Classes)
기억 클래스 예약어는 변수나 함수의 범위와 수명을 정의합니다.
-
예시:
static
,extern
,register
,auto
4. 기타 예약어 (Other Keywords)
기타 예약어는 다양한 목적으로 사용됩니다.
-
예시:
class
,public
,private
,protected
,import
,package
,new
,try
,catch
,finally
,throw
,throws
,interface
,extends
,implements
,enum
요약
종류 | 설명 | 예시 |
---|---|---|
제어문 | 프로그램의 흐름 제어 |
if , else , while , for , switch , case , break , continue , return
|
자료형 | 변수나 함수의 타입 정의 |
int , float , double , char , boolean , void , long , short , byte
|
기억 클래스 | 변수나 함수의 범위와 수명 정의 |
static , extern , register , auto
|
기타 예약어 | 다양한 목적 |
class , public , private , protected , import , package , new , try , catch , finally , throw , throws , interface , extends , implements , enum
|
프로그래밍 언어의 예약어는 각각의 언어마다 다를 수 있지만, 그 기능은 대체로 유사합니다. 예약어는 고유한 기능을 수행하도록 미리 정해져 있기 때문에, 이러한 단어들을 변수 이름이나 다른 목적으로 사용할 수 없습니다. 예약어를 이해하고 올바르게 사용하는 것은 프로그래밍의 기본이며, 코드의 가독성과 유지 보수성을 높이는 데 중요합니다.
constants vs vairables
변수를 상수로 만들어 사용하는 방법에 대해 알아보겠습니다. 상수는 한 번 할당되면 변경되지 않는 값을 의미하며, 변수는 프로그램 실행 도중 값이 변할 수 있는 메모리 공간입니다. 상수를 사용하면 코드의 안정성과 가독성을 높일 수 있습니다. 다음은 변수와 상수에 대한 개념 및 사용 방법을 설명한 것입니다.
상수와 변수의 개념
-
변수: 프로그램 실행 도중 값을 저장하고, 그 값이 변경될 수 있는 메모리 공간.
- 예:
int a = 10;
에서a
는 변수이고, 초기값10
은 변할 수 있다.
- 예:
-
상수: 값이 변경되지 않는 메모리 공간.
- 예:
const float PI = 3.14159;
에서PI
는 상수이고, 값3.14159
는 변하지 않는다.
- 예:
상수 선언 방법
예제 1: 상수 선언 (C 언어)
const float PI = 3.14159;
-
const
예약어를 사용하여 상수를 선언합니다. -
PI
는 상수로, 값3.14159
는 변경되지 않습니다.
예제 2: 데이터 타입 후 상수 선언 (C 언어)
float const PI = 3.14159;
- 데이터 타입을 먼저 쓰고,
const
예약어를 사용하여 상수를 선언할 수 있습니다.
상수의 장점
- 안정성: 상수는 변경되지 않으므로 값이 의도치 않게 변하는 것을 방지합니다.
- 가독성: 의미 있는 이름을 사용하여 코드의 가독성을 높입니다.
- 유지보수성: 상수를 사용하면 값을 변경할 때 상수 선언 부분만 수정하면 되므로 유지보수가 용이합니다.
심볼릭 상수 (Symbolic Constants)
심볼릭 상수는 의미 있는 이름을 붙여 사용한 상수입니다. 예를 들어, PI
라는 이름을 사용하여 원주율을 나타내는 상수를 만들 수 있습니다.
변수와 상수의 비교
종류 | 설명 | 예시 |
---|---|---|
변수 | 값이 변경될 수 있는 메모리 공간 | int a = 10; |
상수 | 값이 변경되지 않는 메모리 공간 | const float PI = 3.14159; |
요약
- 변수를 상수로 만들려면
const
예약어를 사용합니다. - 상수는 변경되지 않는 값을 저장하여 코드의 안정성, 가독성, 유지보수성을 높입니다.
- 상수를 선언하는 두 가지 방법이 있습니다:
const
를 앞에 쓰거나 데이터 타입 뒤에 씁니다. - 상수에 의미 있는 이름을 붙여 사용하는 것을 심볼릭 상수라고 합니다.
이러한 개념과 방법을 잘 이해하고 사용하면 프로그래밍에서 더 안정적이고 가독성 높은 코드를 작성할 수 있습니다.
storage class
기억 클래스 (Storage Class)
기억 클래스는 변수가 메모리에서 어떻게 저장되고, 변수의 생명 주기와 범위(scope)가 어떻게 결정되는지를 정의합니다. C 언어에서는 주로 다섯 가지 기억 클래스가 사용됩니다: 자동 변수, 레지스터 변수, 정적 변수 (내부와 외부), 외부 변수입니다.
1. 자동 변수 (Auto Variable)
-
예약어:
auto
(생략 가능) - 저장 위치: 스택(Stack)
- 범위: 해당 블록 또는 함수 내
- 생명 주기: 블록이나 함수가 끝나면 소멸
- 특징: 초기화하지 않으면 쓰레기 값이 저장될 수 있음
2. 레지스터 변수 (Register Variable)
-
예약어:
register
- 저장 위치: CPU 레지스터
- 범위: 해당 블록 또는 함수 내
- 생명 주기: 블록이나 함수가 끝나면 소멸
- 특징: 주소 연산자(&) 사용 불가, 실행 속도 빠름, 제한된 개수만 사용 가능
3. 정적 변수 (Static Variable)
-
예약어:
static
- 저장 위치: 데이터 영역(Data Segment)
- 범위: 내부 정적 변수는 해당 블록 또는 함수 내, 외부 정적 변수는 파일 내
- 생명 주기: 프로그램 종료 시까지 유지
- 특징: 초기화를 하지 않으면 자동으로 0으로 초기화
4. 외부 변수 (Extern Variable)
-
예약어:
extern
- 저장 위치: 데이터 영역(Data Segment)
- 범위: 모든 파일에서 참조 가능
- 생명 주기: 프로그램 종료 시까지 유지
- 특징: 초기화를 하지 않으면 자동으로 0으로 초기화, 다른 파일에서 선언된 변수 참조 가능
전역 변수와 지역 변수
- 전역 변수 (Global Variable): 프로그램 전체에서 접근 가능, 함수 외부에서 선언
- 지역 변수 (Local Variable): 특정 블록 또는 함수 내에서만 접근 가능, 블록 또는 함수 내부에서 선언
예시 코드 분석
#include <stdio.h>
// 전역 변수 선언
int x = 0;
int y = 0;
int main() {
// 자동 변수 선언
int a = 0;
int b = 1;
printf("%d %d\n", a, b); // 출력: 0 1
{
// 새로운 블록 내에서 자동 변수 선언
int a = 2;
int b = 3;
printf("%d %d\n", a, b); // 출력: 2 3
}
// 외부 블록의 자동 변수는 여전히 유효
printf("%d %d\n", a, b); // 출력: 0 1
return 0;
}
각 기억 클래스의 특성 요약
기억 클래스 | 예약어 | 저장 위치 | 범위 | 생명 주기 | 초기화 특징 |
---|---|---|---|---|---|
자동 변수 | auto | 스택 | 블록/함수 내 | 블록/함수 종료 시 소멸 | 초기화하지 않으면 쓰레기 값 |
레지스터 변수 | register | 레지스터 | 블록/함수 내 | 블록/함수 종료 시 소멸 | 주소 연산자 사용 불가 |
정적 변수 (내부) | static | 데이터 영역 | 블록/함수 내 | 프로그램 종료 시까지 | 초기화하지 않으면 0으로 초기화 |
정적 변수 (외부) | static | 데이터 영역 | 파일 내 | 프로그램 종료 시까지 | 초기화하지 않으면 0으로 초기화 |
외부 변수 | extern | 데이터 영역 | 모든 파일에서 참조 가능 | 프로그램 종료 시까지 | 초기화하지 않으면 0으로 초기화 |
각각의 기억 클래스는 특정한 상황에서 적합하게 사용될 수 있으며, 변수의 생명 주기와 범위를 정확하게 이해하고 사용하면 더 효율적이고 안정적인 프로그램을 작성할 수 있습니다.
연산자를 정리한 표와 함께 각 연산자의 설명과 예제를 제공하겠습니다.
연산자 정리
연산자 | 설명 | 예제 |
---|---|---|
증감 연산자 | 변수의 값을 1 증가 또는 감소시킴 |
a++ , --b
|
산술 연산자 | 기본 수학 연산을 수행 |
+ , - , * , / , %
|
시프트 연산자 | 비트 단위로 값을 좌우로 이동 |
<< , >> , >>>
|
관계 연산자 | 두 값을 비교하여 참 또는 거짓을 반환 |
== , != , > , < , >= , <=
|
비트 연산자 | 비트 단위로 논리 연산을 수행 |
& , | , ^ , ~
|
논리 연산자 | 논리 연산을 수행 |
&& , || , !
|
조건 연산자 | 조건에 따라 값을 선택 |
?: (삼항 연산자) |
대입 연산자 | 변수에 값을 할당 |
= , += , -= , *= , /= , %=
|
순서 연산자 | 실행 순서를 제어 | , |
설명과 예제
증감 연산자
- 설명: 변수의 값을 1씩 증가시키거나 감소시킴
-
예제:
int a = 5; a++; // a는 이제 6 --a; // a는 다시 5
산술 연산자
- 설명: 기본적인 수학 연산을 수행
-
예제:
int x = 10; int y = 5; int sum = x + y; // sum은 15 int diff = x - y; // diff는 5 int prod = x * y; // prod는 50 int quotient = x / y; // quotient는 2 int mod = x % y; // mod는 0
시프트 연산자
- 설명: 비트를 좌우로 이동시킴
-
예제:
int a = 8; // 8은 2진수로 1000 int b = a << 2; // b는 32 (100000) int c = a >> 1; // c는 4 (0100)
관계 연산자
- 설명: 두 값을 비교하여 참(True) 또는 거짓(False)을 반환
-
예제:
int a = 5; int b = 10; boolean result1 = (a == b); // false boolean result2 = (a != b); // true boolean result3 = (a > b); // false boolean result4 = (a <= b); // true
비트 연산자
- 설명: 비트 단위로 논리 연산을 수행
-
예제:
int a = 5; // 5는 2진수로 0101 int b = 3; // 3은 2진수로 0011 int c = a & b; // c는 1 (0001) int d = a | b; // d는 7 (0111) int e = a ^ b; // e는 6 (0110) int f = ~a; // f는 -6 (비트 반전)
논리 연산자
- 설명: 논리 연산을 수행
-
예제:
boolean a = true; boolean b = false; boolean result1 = a && b; // false boolean result2 = a || b; // true boolean result3 = !a; // false
조건 연산자
- 설명: 조건에 따라 다른 값을 반환
-
예제:
int a = 10; int b = 20; int max = (a > b) ? a : b; // max는 20
대입 연산자
- 설명: 변수에 값을 할당하거나 연산 후 할당
-
예제:
int a = 5; a += 3; // a는 이제 8 a *= 2; // a는 이제 16
순서 연산자
- 설명: 여러 표현식을 하나의 표현식으로 연결
-
예제:
int a = 1, b = 2, c = 3;
이렇게 다양한 연산자들을 이해하고 사용하는 것이 프로그래밍에서 매우 중요합니다. 각각의 연산자를 적절히 사용하면 복잡한 연산을 효과적으로 수행할 수 있습니다.
Click to open
Sure, here are some practice quizzes along with how to read the expressions in English:
Quiz 1: Increment and Decrement Operators
- Given
int a = 5;
, what is the value ofa
aftera++
?- Question: “What is the value of a after a plus plus?”
- Answer: 6
- Given
int b = 3;
, what is the value ofb
after--b
?- Question: “What is the value of b after minus minus b?”
- Answer: 2
Quiz 2: Arithmetic Operators
- What is the result of
10 + 15
?- Question: “What is the result of ten plus fifteen?”
- Answer: 25
- What is the result of
20 - 5
?- Question: “What is the result of twenty minus five?”
- Answer: 15
- What is the result of
4 * 3
?- Question: “What is the result of four times three?”
- Answer: 12
- What is the result of
16 / 4
?- Question: “What is the result of sixteen divided by four?”
- Answer: 4
- What is the result of
17 % 3
?- Question: “What is the result of seventeen mod three?”
- Answer: 2
Quiz 3: Relational Operators
- Given
int a = 7; int b = 10;
, what is the result ofa == b
?- Question: “What is the result of a equals b?”
- Answer: false
- Given
int a = 7; int b = 10;
, what is the result ofa != b
?- Question: “What is the result of a not equals b?”
- Answer: true
- Given
int a = 7; int b = 10;
, what is the result ofa > b
?- Question: “What is the result of a greater than b?”
- Answer: false
- Given
int a = 7; int b = 10;
, what is the result ofa <= b
?- Question: “What is the result of a less than or equal to b?”
- Answer: true
Quiz 4: Logical Operators
- Given
boolean x = true; boolean y = false;
, what is the result ofx && y
?- Question: “What is the result of x and y?”
- Answer: false
- Given
boolean x = true; boolean y = false;
, what is the result ofx || y
?- Question: “What is the result of x or y?”
- Answer: true
- Given
boolean x = true;
, what is the result of!x
?- Question: “What is the result of not x?”
- Answer: false
Quiz 5: Bitwise Operators
- Given
int a = 5; int b = 3;
, what is the result ofa & b
?- Question: “What is the result of a and b (bitwise)?”
- Answer: 1
- Given
int a = 5; int b = 3;
, what is the result ofa | b
?- Question: “What is the result of a or b (bitwise)?”
- Answer: 7
- Given
int a = 5; int b = 3;
, what is the result ofa ^ b
?- Question: “What is the result of a xor b?”
- Answer: 6
- Given
int a = 5;
, what is the result of~a
?- Question: “What is the result of not a (bitwise)?”
- Answer: -6
Quiz 6: Shift Operators
- Given
int a = 8;
, what is the result ofa << 2
?- Question: “What is the result of a left shift by 2?”
- Answer: 32
- Given
int a = 8;
, what is the result ofa >> 1
?- Question: “What is the result of a right shift by 1?”
- Answer: 4
Quiz 7: Conditional Operator
- Given
int a = 10; int b = 20;
, what is the result of(a > b) ? a : b
?- Question: “What is the result of a greater than b, then a, else b?”
- Answer: 20
Quiz 8: Assignment Operators
- Given
int a = 5;
, what is the value ofa
aftera += 3
?- Question: “What is the value of a after a plus equals 3?”
- Answer: 8
- Given
int a = 5;
, what is the value ofa
aftera *= 2
?- Question: “What is the value of a after a times equals 2?”
- Answer: 10
How to Read Each Expression in English
-
a++
- “a plus plus” -
--b
- “minus minus b” -
10 + 15
- “ten plus fifteen” -
20 - 5
- “twenty minus five” -
4 * 3
- “four times three” -
16 / 4
- “sixteen divided by four” -
17 % 3
- “seventeen mod three” -
a == b
- “a equals b” -
a != b
- “a not equals b” -
a > b
- “a greater than b” -
a <= b
- “a less than or equal to b” -
x && y
- “x and y” -
x || y
- “x or y” -
!x
- “not x” -
a & b
- “a and b (bitwise)” -
a | b
- “a or b (bitwise)” -
a ^ b
- “a xor b” -
~a
- “not a (bitwise)” -
a << 2
- “a left shift by 2” -
a >> 1
- “a right shift by 1” -
(a > b) ? a : b
- “a greater than b, then a, else b” -
a += 3
- “a plus equals 3” -
a *= 2
- “a times equals 2”
데이터 입출력 (Input and Output) 설명 및 요약
데이터 입출력은 프로그램이 사용자 또는 다른 프로그램과 정보를 주고받는 것을 의미합니다. 이는 일반적으로 콘솔(터미널) 입출력, 파일 입출력, 네트워크 입출력 등으로 나눌 수 있습니다.
1. 콘솔 입출력
콘솔 입출력은 프로그램이 콘솔(터미널) 창을 통해 사용자와 상호작용하는 방법입니다. 가장 기본적인 입출력 방식으로, 사용자로부터 데이터를 입력받고, 결과를 출력합니다.
-
입력 (Input):
-
scanf
(C언어),cin
(C++),input
(Python) 등 사용
-
-
출력 (Output):
-
printf
(C언어),cout
(C++),print
(Python) 등 사용
-
2. 파일 입출력
파일 입출력은 프로그램이 파일 시스템을 통해 데이터를 읽고 쓰는 방법입니다. 이를 통해 프로그램은 데이터를 영구적으로 저장하고 읽어올 수 있습니다.
-
입력 (Input):
- 파일을 열고 데이터를 읽음 (
fscanf
,ifstream
,open
등 사용)
- 파일을 열고 데이터를 읽음 (
-
출력 (Output):
- 파일을 열고 데이터를 씀 (
fprintf
,ofstream
,open
등 사용)
- 파일을 열고 데이터를 씀 (
3. 네트워크 입출력
네트워크 입출력은 프로그램이 네트워크를 통해 데이터를 주고받는 방법입니다. 이를 통해 프로그램은 원격 서버와 통신할 수 있습니다.
-
입력 (Input):
- 소켓을 통해 데이터를 수신함 (
recv
,socket.recv
등 사용)
- 소켓을 통해 데이터를 수신함 (
-
출력 (Output):
- 소켓을 통해 데이터를 전송함 (
send
,socket.send
등 사용)
- 소켓을 통해 데이터를 전송함 (
데이터 입출력 표
유형 | 입력 함수/메서드 | 출력 함수/메서드 | 사용 예시 |
---|---|---|---|
콘솔 입출력 |
scanf (C) |
printf (C) |
C: scanf("%d", &num); printf("%d", num);
|
cin (C++) |
cout (C++) |
C++: cin >> num; cout << num;
|
|
input (Python) |
print (Python) |
Python: num = input("Enter: "); print(num)
|
|
파일 입출력 |
fscanf (C) |
fprintf (C) |
C: fscanf(file, "%d", &num); fprintf(file, "%d", num);
|
ifstream (C++) |
ofstream (C++) |
C++: ifstream fin("file.txt"); ofstream fout("file.txt");
|
|
open (Python, read mode) |
open (Python, write mode) |
Python: with open("file.txt", "r") as file:; with open("file.txt", "w") as file:
|
|
네트워크 입출력 |
recv (C, C++) |
send (C, C++) |
C/C++: recv(sock, buffer, size, flags); send(sock, buffer, size, flags);
|
socket.recv (Python) |
socket.send (Python) |
Python: data = sock.recv(1024); sock.send(data);
|
다음은 HTML과 CSS를 사용하여 요약표를 작성한 것입니다. 각 열의 너비는 텍스트 길이에 맞춰 조정되었습니다.
<style>
table.customtableJun09 {
width: 100%;
border-collapse: collapse;
}
table.customtableJun09 th, table.customtable td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
table.customtableJun09 th {
background-color: #f2f2f2;
}
table.customtableJun09, tr:nth-child(9) td:nth-child(2), tr:nth-child(16) td:nth-child(2), tr:nth-child(24) td:nth-child(2) {
background: deepskyblue;
}
table.customtableJun09 td {
white-space: nowrap;
}
</style>
자료구조 | 정의 | 특징 | 사용 사례 | 예시 코드 (Python) |
---|---|---|---|---|
배열 (Array) | 동일한 데이터 타입의 연속된 메모리 블록 | 인덱스를 사용한 빠른 접근, 고정된 크기 | 인덱스 구조, 히스토그램 |
arr = [1, 2, 3, 4, 5] print(arr[2]) # 출력: 3 |
연결 리스트 (Linked List) | 노드가 데이터와 다음 노드를 가리키는 포인터 포함 | 삽입/삭제 용이, 인덱스 접근 속도 느림 | 로그 구조 저장, 메모리 할당 알고리즘 |
class Node: def __init__(self, data): self.data = data self.next = None head = Node(1) second = Node(2) head.next = second print(head.next.data) # 출력: 2 |
스택 (Stack) | LIFO (Last In, First Out) 원칙을 따름 | 마지막 삽입 데이터가 먼저 제거됨 | 트랜잭션 관리, 역추적 알고리즘 |
stack = [] stack.append(1) stack.append(2) print(stack.pop()) # 출력: 2 |
큐 (Queue) | FIFO (First In, First Out) 원칙을 따름 | 먼저 삽입된 데이터가 먼저 제거됨 | 작업 큐, 인쇄 대기열 |
from collections import deque queue = deque([1, 2, 3]) queue.append(4) print(queue.popleft()) # 출력: 1 |
해시 테이블 (Hash Table) | 키-값 쌍을 저장, 해시 함수를 사용하여 키를 인덱스로 변환 | 평균적으로 빠른 데이터 접근 속도 제공 | 인덱스, 캐싱 |
hash_table = {} hash_table['key1'] = 'value1' print(hash_table['key1']) # 출력: value1 |
트리 (Tree) | 계층적 데이터 구조, 루트 노드에서 시작하여 자식 노드로 확장 | 계층적 데이터 표현, 탐색과 정렬 용이 | 인덱스 (B-트리, B+트리), 파일 시스템 |
class TreeNode: def __init__(self, data): self.data = data self.children = [] root = TreeNode(1) child1 = TreeNode(2) root.children.append(child1) print(root.children[0].data) # 출력: 2 |
그래프 (Graph) | 노드(정점)와 노드 사이의 연결(간선)로 이루어진 구조 | 복잡한 관계 표현 가능, 네트워크 모델에 적합 | 소셜 네트워크, 도로망, 추천 시스템 |
graph = { 'A': ['B', 'C'], 'B': ['A', 'D', 'E'], 'C': ['A', 'F'], 'D': ['B'], 'E': ['B', 'F'], 'F': ['C', 'E'] } print(graph['A']) # 출력: ['B', 'C'] |
예제 코드
콘솔 입출력 예제 (C언어)
#include <stdio.h>
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
printf("You entered: %d\n", num);
return 0;
}
파일 입출력 예제 (Python)
# 파일에 쓰기
with open("example.txt", "w") as file:
file.write("Hello, world!")
# 파일에서 읽기
with open("example.txt", "r") as file:
content = file.read()
print(content)
네트워크 입출력 예제 (Python)
import socket
# 클라이언트
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(("localhost", 8080))
client_socket.send(b"Hello, server!")
response = client_socket.recv(1024)
print("Received from server:", response.decode())
client_socket.close()
# 서버
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("localhost", 8080))
server_socket.listen(1)
conn, addr = server_socket.accept()
data = conn.recv(1024)
conn.send(data)
conn.close()
server_socket.close()
Click to open
Quiz 1: Console Input/Output
Q1: In C, which function is used to read input from the user?
- A)
printf
- B)
scanf
- C)
cin
- D)
print
Read as: “In C, which function is used to read input from the user?”
Quiz 2: Console Input/Output
Q2: In Python, how do you display text to the console?
- A)
print()
- B)
input()
- C)
cout
- D)
printf
Read as: “In Python, how do you display text to the console?”
Quiz 3: File Input/Output
Q3: Which mode should you use to open a file for writing in Python?
- A)
"r"
- B)
"w"
- C)
"a"
- D)
"rw"
Read as: “Which mode should you use to open a file for writing in Python?”
Quiz 4: File Input/Output
Q4: In C++, which class is used for reading from a file?
- A)
ofstream
- B)
ifstream
- C)
fstream
- D)
printf
Read as: “In C++, which class is used for reading from a file?”
Quiz 5: Network Input/Output
Q5: In Python, which method is used to receive data from a socket?
- A)
sock.recv()
- B)
sock.send()
- C)
sock.accept()
- D)
sock.connect()
Read as: “In Python, which method is used to receive data from a socket?”
Answers and Explanations
Q1: B) scanf
-
Read as: “The correct answer is B,
scanf
. Thescanf
function in C is used to read input from the user.”
Q2: A) print()
-
Read as: “The correct answer is A,
print()
. In Python, theprint()
function is used to display text to the console.”
Q3: B) "w"
-
Read as: “The correct answer is B,
\"w\"
. In Python, opening a file in write mode is done using the mode\"w\"
.”
Q4: B) ifstream
-
Read as: “The correct answer is B,
ifstream
. In C++, theifstream
class is used for reading from a file.”
Q5: A) sock.recv()
-
Read as: “The correct answer is A,
sock.recv()
. In Python, therecv()
method of a socket object is used to receive data.”
제어문 (Control Statements)
제어문은 프로그램의 흐름을 제어하는 데 사용되는 구문입니다. 주요 제어문에는 조건문과 반복문이 있습니다. 각 제어문의 유형과 사용법을 요약하고 예제를 포함하여 설명합니다.
조건문 (Conditional Statements)
-
if 문 (if Statement): 조건이 참일 때만 블록 내의 코드를 실행합니다.
-
구문:
if (condition) { // code to be executed if condition is true }
-
예제:
int a = 10; if (a > 5) { printf("a is greater than 5"); }
-
구문:
-
if-else 문 (if-else Statement): 조건이 참이면 if 블록을, 거짓이면 else 블록을 실행합니다.
-
구문:
if (condition) { // code to be executed if condition is true } else { // code to be executed if condition is false }
-
예제:
int a = 10; if (a > 5) { printf("a is greater than 5"); } else { printf("a is not greater than 5"); }
-
구문:
-
else-if 문 (else-if Statement): 여러 조건을 검사할 때 사용됩니다.
-
구문:
if (condition1) { // code to be executed if condition1 is true } else if (condition2) { // code to be executed if condition2 is true } else { // code to be executed if both conditions are false }
-
예제:
int a = 10; if (a > 10) { printf("a is greater than 10"); } else if (a == 10) { printf("a is equal to 10"); } else { printf("a is less than 10"); }
-
구문:
-
switch 문 (switch Statement): 변수의 값을 기반으로 여러 코드 블록 중 하나를 실행합니다.
-
구문:
switch (variable) { case value1: // code to be executed if variable == value1 break; case value2: // code to be executed if variable == value2 break; default: // code to be executed if variable does not match any case }
-
예제:
int day = 3; switch (day) { case 1: printf("Monday"); break; case 2: printf("Tuesday"); break; case 3: printf("Wednesday"); break; default: printf("Invalid day"); }
-
구문:
반복문 (Loops)
-
for 문 (for Loop): 정해진 횟수만큼 반복합니다.
-
구문:
for (initialization; condition; increment) { // code to be executed in each iteration }
-
예제:
for (int i = 0; i < 5; i++) { printf("%d\n", i); }
-
구문:
-
while 문 (while Loop): 조건이 참일 때까지 반복합니다.
-
구문:
while (condition) { // code to be executed while condition is true }
-
예제:
int i = 0; while (i < 5) { printf("%d\n", i); i++; }
-
구문:
-
do-while 문 (do-while Loop): 코드를 최소 한 번 실행한 후, 조건이 참일 때까지 반복합니다.
-
구문:
do { // code to be executed } while (condition);
-
예제:
int i = 0; do { printf("%d\n", i); i++; } while (i < 5);
-
구문:
요약 표
제어문 | 설명 | 예제 코드 |
---|---|---|
if | 조건이 참일 때만 실행 | if (a > 5) { printf("a is greater than 5"); } |
if-else | 조건이 참일 때와 거짓일 때 다른 코드 실행 | if (a > 5) { printf("a is greater than 5"); } else { printf("a is not greater than 5"); } |
else-if | 여러 조건을 검사 | if (a > 10) { printf("a is greater than 10"); } else if (a == 10) { printf("a is equal to 10"); } else { printf("a is less than 10"); } |
switch | 변수의 값을 기반으로 여러 코드 블록 중 하나 실행 | switch (day) { case 1: printf("Monday"); break; case 2: printf("Tuesday"); break; case 3: printf("Wednesday"); break; default: printf("Invalid day"); } |
for | 정해진 횟수만큼 반복 | for (int i = 0; i < 5; i++) { printf("%d\n", i); } |
while | 조건이 참일 때까지 반복 | int i = 0; while (i < 5) { printf("%d\n", i); i++; } |
do-while | 코드를 최소 한 번 실행하고 조건이 참일 때까지 반복 | int i = 0; do { printf("%d\n", i); i++; } while (i < 5); |
Click to open
퀴즈
Quiz 1: 조건문
Q1: What will be the output of the following code?
int x = 7;
if (x < 10) {
printf("x is less than 10\n");
} else {
printf("x is greater than or equal to 10\n");
}
- A) x is less than 10
- B) x is greater than or equal to 10
- C) Error
- D) No output
Read as: “What will be the output of the following code? int x equals 7; if x is less than 10, print ‘x is less than 10’; else print ‘x is greater than or equal to 10’.”
Answer: A) x is less than 10
Quiz 2: 반복문
Q2: How many times will the following loop execute?
for (int i = 0; i < 5; i++) {
printf("%d\n", i);
}
- A) 4
- B) 5
- C) 6
- D) Infinite
Read as: “How many times will the following loop execute? for int i equals 0; i less than 5; i plus plus, print i.”
Answer: B) 5
반복문 (Loops)
반복문은 특정 코드 블록을 여러 번 실행할 수 있도록 하는 제어문입니다. C 언어에서 사용하는 주요 반복문에는 for
문, while
문, do-while
문이 있습니다. 각 반복문의 구문과 예제를 설명합니다.
for 문 (for Loop)
for 문은 정해진 횟수만큼 반복할 때 사용됩니다. 일반적으로 반복 횟수가 명확할 때 사용합니다.
-
구문:
for (initialization; condition; increment) { // 반복할 코드 }
-
initialization
: 반복문이 시작될 때 한 번 실행되는 초기화 구문입니다. -
condition
: 반복문이 실행되는 동안 매 반복마다 평가되는 조건식입니다. 조건식이 참일 때만 코드 블록이 실행됩니다. -
increment
: 반복문이 실행된 후 매 반복마다 실행되는 증감식입니다.
-
-
예제:
for (int i = 0; i < 5; i++) { printf("%d\n", i); }
-
설명:
i
가 0에서 시작하여 5보다 작은 동안 1씩 증가하면서printf
를 통해 값을 출력합니다.
-
설명:
while 문 (while Loop)
while 문은 조건식이 참인 동안 계속해서 코드 블록을 실행합니다. 일반적으로 반복 횟수가 명확하지 않을 때 사용합니다.
-
구문:
while (condition) { // 반복할 코드 }
-
condition
: 반복문이 실행되는 동안 매 반복마다 평가되는 조건식입니다. 조건식이 참일 때만 코드 블록이 실행됩니다.
-
-
예제:
int i = 0; while (i < 5) { printf("%d\n", i); i++; }
-
설명:
i
가 0에서 시작하여 5보다 작은 동안printf
를 통해 값을 출력하고, 매 반복마다i
를 1씩 증가시킵니다.
-
설명:
do-while 문 (do-while Loop)
do-while 문은 코드 블록을 최소한 한 번은 실행한 후, 조건식이 참인 동안 계속해서 코드 블록을 실행합니다.
-
구문:
do { // 반복할 코드 } while (condition);
-
condition
: 반복문이 실행된 후 평가되는 조건식입니다. 조건식이 참일 때만 코드 블록이 다시 실행됩니다.
-
-
예제:
int i = 0; do { printf("%d\n", i); i++; } while (i < 5);
-
설명:
i
가 0에서 시작하여 5보다 작은 동안printf
를 통해 값을 출력하고, 매 반복마다i
를 1씩 증가시킵니다. 이 과정이 최소 한 번은 실행됩니다.
-
설명:
요약 표
반복문 | 설명 | 구문 및 예제 |
---|---|---|
for | 정해진 횟수만큼 반복 | for (int i = 0; i < 5; i++) { printf("%d\n", i); } |
while | 조건식이 참인 동안 반복 | int i = 0; while (i < 5) { printf("%d\n", i); i++; } |
do-while | 코드 블록을 최소 한 번 실행하고 조건식이 참인 동안 반복 | int i = 0; do { printf("%d\n", i); i++; } while (i < 5); |
Click to open
퀴즈
Quiz 1: for 문
Q1: How many times will the following loop execute?
for (int i = 1; i <= 5; i++) {
printf("%d\n", i);
}
- A) 4
- B) 5
- C) 6
- D) Infinite
Read as: “How many times will the following loop execute? for int i equals 1; i less than or equal to 5; i plus plus, print i.”
Answer: B) 5
Quiz 2: while 문
Q2: What will be the output of the following code?
int i = 0;
while (i < 3) {
printf("%d\n", i);
i++;
}
- A) 0 1 2
- B) 0 1 2 3
- C) 1 2 3
- D) 1 2 3 4
Read as: “What will be the output of the following code? int i equals 0; while i less than 3, print i; i plus plus.”
Answer: A) 0 1 2
Quiz 3: do-while 문
Q3: How many times will the following loop execute?
int i = 10;
do {
printf("%d\n", i);
i++;
} while (i < 10);
- A) 0
- B) 1
- C) 10
- D) Infinite
Read as: “How many times will the following loop execute? int i equals 10; do print i; i plus plus while i less than 10.”
Answer: B) 1
이렇게 각 제어문과 반복문에 대해 이해하고, 다양한 퀴즈를 통해 학습할 수 있습니다.
배열과 문자열 (Arrays and Strings)
배열은 동일한 자료형의 값을 여러 개 저장할 수 있는 자료구조입니다. 문자열은 문자(char)의 배열로, 문자열의 끝을 나타내는 NULL 문자 \0
로 끝납니다.
배열 (Arrays)
배열은 동일한 자료형의 값들을 모아 하나의 변수로 다룰 수 있게 해줍니다.
-
선언 및 초기화
- 배열 선언:
자료형 배열명[크기];
- 배열 초기화:
자료형 배열명[크기] = {값1, 값2, ...};
- 예시:
int numbers[5]; // 크기가 5인 int 배열 선언 int scores[3] = {90, 85, 88}; // 초기화와 함께 배열 선언
- 배열 선언:
-
배열 접근
- 배열의 각 요소에 접근하기 위해서는 인덱스를 사용합니다.
- 인덱스는 0부터 시작합니다.
- 예시:
numbers[0] = 10; // 배열의 첫 번째 요소에 값 10 할당 printf("%d\n", scores[1]); // 배열의 두 번째 요소 출력
-
배열의 크기
- 배열의 크기는 선언 시 고정됩니다.
- 크기를 넘어서 접근하면 오류가 발생합니다.
문자열 (Strings)
문자열은 문자(char)의 배열입니다. C에서는 문자열의 끝을 나타내는 NULL 문자 \0
가 필요합니다.
-
선언 및 초기화
- 문자열 선언:
char 문자열명[크기];
- 문자열 초기화:
char name[6] = {'J', 'o', 'h', 'n', '\0'}; // 문자 배열 초기화 char city[] = "Seoul"; // 문자열 리터럴 초기화
- 문자열 리터럴을 사용할 때는 자동으로 NULL 문자가 추가됩니다.
- 문자열 선언:
-
문자열 접근
- 배열과 마찬가지로 인덱스를 사용하여 각 문자에 접근할 수 있습니다.
- 예시:
printf("%c\n", city[1]); // 문자열의 두 번째 문자 출력 ('e')
-
문자열 함수
- 문자열을 처리하기 위한 다양한 함수들이 제공됩니다.
- 예시:
char str1[] = "Hello"; char str2[] = "World"; strcat(str1, str2); // str1에 str2를 붙임 printf("%s\n", str1); // "HelloWorld" int length = strlen(str1); // 문자열의 길이 계산 printf("%d\n", length); // 10
요약 표
종류 | 설명 | 예시 |
---|---|---|
배열 | 동일한 자료형의 값들을 저장하는 자료구조 |
int numbers[5]; int scores[3] = {90, 85, 88};
|
문자열 | 문자(char)의 배열로, NULL 문자로 끝남 |
char name[6] = {'J', 'o', 'h', 'n', '\0'}; char city[] = "Seoul";
|
Click to open
퀴즈
Quiz 1: 배열
Q1: What is the value of numbers[2]
after the following code executes?
int numbers[5] = {1, 2, 3, 4, 5};
- A) 1
- B) 2
- C) 3
- D) 4
Read as: “What is the value of numbers index 2 after the following code executes? int numbers[5] equals 1, 2, 3, 4, 5.”
Answer: C) 3
Quiz 2: 문자열
Q2: What is the output of the following code?
char str[] = "Hello";
printf("%c\n", str[1]);
- A) H
- B) e
- C) l
- D) o
Read as: “What is the output of the following code? char str equals Hello; print c str index 1.”
Answer: B) e
Quiz 3: 문자열 함수
Q3: What will be the value of length
after the following code executes?
char str[] = "Programming";
int length = strlen(str);
- A) 10
- B) 11
- C) 12
- D) 13
Read as: “What will be the value of length after the following code executes? char str equals Programming; int length equals string length str.”
Answer: B) 11
이와 같이 배열과 문자열에 대한 기본 개념과 퀴즈를 통해 학습할 수 있습니다.
포인터 (Pointers)
포인터는 다른 변수의 메모리 주소를 저장하는 변수입니다. 포인터를 사용하면 직접 메모리 주소를 다룰 수 있어 효율적인 프로그램을 작성할 수 있습니다. C 언어에서 포인터는 중요한 개념 중 하나입니다.
포인터의 선언 및 초기화
-
포인터 선언
- 자료형 뒤에
*
를 붙여서 포인터 변수를 선언합니다. - 예시:
int *ptr;
(정수를 가리키는 포인터 변수 ptr 선언)
- 자료형 뒤에
-
포인터 초기화
- 포인터 변수는 다른 변수의 주소로 초기화할 수 있습니다.
- 주소 연산자
&
를 사용하여 변수의 주소를 얻을 수 있습니다. - 예시:
int a = 10; int *ptr = &a; // a의 주소로 ptr 초기화
포인터의 사용
-
포인터를 통한 변수 접근
- 간접 참조 연산자
*
를 사용하여 포인터가 가리키는 변수의 값을 접근하거나 변경할 수 있습니다. - 예시:
int a = 10; int *ptr = &a; printf("%d\n", *ptr); // a의 값인 10 출력 *ptr = 20; // a의 값을 20으로 변경 printf("%d\n", a); // 변경된 a의 값인 20 출력
- 간접 참조 연산자
-
포인터 연산
- 포인터에 정수를 더하거나 빼면 포인터가 가리키는 메모리 위치가 변경됩니다.
- 예시:
int arr[5] = {1, 2, 3, 4, 5}; int *ptr = arr; // 배열의 첫 번째 요소 주소로 초기화 printf("%d\n", *ptr); // 1 출력 ptr++; // 다음 요소로 이동 printf("%d\n", *ptr); // 2 출력
배열과 포인터
- 배열 이름은 배열의 첫 번째 요소의 주소를 가리키는 포인터로 간주됩니다.
- 예시:
int arr[3] = {10, 20, 30}; int *ptr = arr; for (int i = 0; i < 3; i++) { printf("%d\n", *(ptr + i)); // 배열 요소 출력 }
함수와 포인터
- 포인터를 함수의 매개변수로 사용하면 함수 내에서 원래 변수의 값을 변경할 수 있습니다.
- 예시:
void increment(int *num) { (*num)++; } int main() { int a = 5; increment(&a); printf("%d\n", a); // 6 출력 return 0; }
요약 표
개념 | 설명 | 예시 |
---|---|---|
포인터 선언 | 자료형 뒤에 * 를 붙여 포인터 변수를 선언 |
int *ptr; |
포인터 초기화 | 포인터를 다른 변수의 주소로 초기화 | int a = 10; int *ptr = &a; |
포인터 간접 참조 | 간접 참조 연산자 * 를 사용하여 포인터가 가리키는 변수의 값 접근 |
int a = 10; int *ptr = &a; printf("%d", *ptr); |
포인터 연산 | 포인터에 정수를 더하거나 빼서 메모리 위치 변경 | int arr[5]; int *ptr = arr; ptr++; |
배열과 포인터 | 배열 이름은 배열의 첫 번째 요소의 주소를 가리키는 포인터로 간주 | int arr[3]; int *ptr = arr; printf("%d", *(ptr + i)); |
함수와 포인터 | 포인터를 함수 매개변수로 사용하면 함수 내에서 원래 변수 값 변경 | void increment(int *num) { (*num)++; } increment(&a); |
Click to open
퀴즈
Quiz 1: 포인터 기본
Q1: What is the output of the following code?
int a = 10;
int *ptr = &a;
printf("%d\n", *ptr);
- A) 10
- B) Address of a
- C) Garbage value
- D) Compile error
Read as: “What is the output of the following code? int a equals 10; int pointer ptr equals address of a; print d newline dereferenced ptr.”
Answer: A) 10
Quiz 2: 포인터 연산
Q2: What will ptr
point to after the following code executes?
int arr[3] = {10, 20, 30};
int *ptr = arr;
ptr++;
- A) arr[0]
- B) arr[1]
- C) arr[2]
- D) arr[3]
Read as: “What will ptr point to after the following code executes? int arr equals 10, 20, 30; int pointer ptr equals arr; ptr plus plus.”
Answer: B) arr[1]
Quiz 3: 함수와 포인터
Q3: What is the value of a
after the following code executes?
void modify(int *num) {
*num = 25;
}
int main() {
int a = 10;
modify(&a);
printf("%d\n", a);
return 0;
}
- A) 10
- B) 25
- C) Compile error
- D) Runtime error
Read as: “What is the value of a after the following code executes? void modify int pointer num dereference num equals 25; int main int a equals 10; modify address of a; print d newline a; return 0.”
Answer: B) 25
이와 같이 포인터에 대한 기본 개념과 퀴즈를 통해 학습할 수 있습니다.
Python외 언어등
Python 기본 문법
Python은 간결하고 읽기 쉬운 문법을 가지고 있어 프로그래밍 입문자에게 적합합니다. Python의 기본 문법은 다음과 같습니다.
변수와 자료형
-
변수 선언
- 변수는 값을 저장하기 위해 사용됩니다.
- Python에서는 변수 선언 시 자료형을 명시하지 않습니다.
- 예시:
x = 10 # 정수형 변수 y = 3.14 # 실수형 변수 name = "Alice" # 문자열 변수 is_active = True # 불리언 변수
-
기본 자료형
- 정수(int), 실수(float), 문자열(str), 불리언(bool) 등이 있습니다.
조건문
-
if 문
- 조건에 따라 코드를 실행합니다.
- 예시:
if x > 0: print("Positive") elif x == 0: print("Zero") else: print("Negative")
반복문
-
for 문
- 정해진 횟수만큼 코드를 반복 실행합니다.
- 예시:
for i in range(5): print(i) # 0부터 4까지 출력
-
while 문
- 조건이 참인 동안 코드를 반복 실행합니다.
- 예시:
i = 0 while i < 5: print(i) i += 1
입출력 함수
Python에서는 input()
함수로 사용자로부터 입력을 받을 수 있고, print()
함수로 출력을 할 수 있습니다.
-
입력
-
input()
함수는 문자열을 입력받습니다. - 예시:
name = input("Enter your name: ") print("Hello, " + name)
-
-
출력
-
print()
함수는 값을 출력합니다. - 예시:
print("Hello, World!")
-
range 함수
range()
함수는 숫자의 시퀀스를 생성하는데 사용됩니다.
-
기본 사용법
-
range(stop)
: 0부터stop-1
까지의 숫자 생성 -
range(start, stop)
:start
부터stop-1
까지의 숫자 생성 -
range(start, stop, step)
:start
부터stop-1
까지step
만큼 증가하는 숫자 생성 - 예시:
for i in range(5): print(i) # 0, 1, 2, 3, 4 출력 for i in range(1, 5): print(i) # 1, 2, 3, 4 출력 for i in range(1, 10, 2): print(i) # 1, 3, 5, 7, 9 출력
-
슬라이싱 (Slicing)
슬라이싱은 시퀀스 자료형(문자열, 리스트, 튜플 등)의 일부분을 추출하는 방법입니다.
-
문자열 슬라이싱
-
s[start:end]
:start
부터end-1
까지의 부분 문자열을 추출 -
s[start:end:step]
:start
부터end-1
까지step
간격으로 부분 문자열을 추출 - 예시:
s = "Hello, World!" print(s[0:5]) # "Hello" 출력 print(s[7:]) # "World!" 출력 print(s[::2]) # "Hlo ol!" 출력
-
-
리스트 슬라이싱
- 문자열과 동일한 방법으로 슬라이싱
- 예시:
lst = [1, 2, 3, 4, 5] print(lst[1:4]) # [2, 3, 4] 출력 print(lst[:3]) # [1, 2, 3] 출력 print(lst[::2]) # [1, 3, 5] 출력
요약 표
개념 | 설명 | 예시 |
---|---|---|
변수 | 값을 저장하기 위해 사용됨 |
x = 10 , name = "Alice"
|
조건문 | 조건에 따라 코드를 실행 |
if x > 0: , elif x == 0: , else:
|
반복문 | 정해진 횟수만큼 또는 조건이 참인 동안 코드를 반복 실행 |
for i in range(5): , while i < 5:
|
입출력 |
input() 함수로 입력을 받고, print() 함수로 출력을 함 |
name = input("Enter your name: ") , print("Hello, " + name)
|
range 함수 | 숫자의 시퀀스를 생성 |
range(5) , range(1, 5) , range(1, 10, 2)
|
슬라이싱 | 시퀀스 자료형의 일부분을 추출 |
s[0:5] , lst[1:4]
|
Click to open
퀴즈
Quiz 1: 변수와 자료형
Q1: What will be the output of the following code?
x = 5
y = "5"
z = x + int(y)
print(z)
- A) 10
- B) 55
- C) Error
- D) None of the above
Read as: “What will be the output of the following code? x equals 5; y equals string 5; z equals x plus int y; print z.”
Answer: A) 10
Quiz 2: 조건문
Q2: What will be the output of the following code?
a = 10
if a > 5:
print("Greater")
else:
print("Smaller")
- A) Greater
- B) Smaller
- C) Error
- D) None of the above
Read as: “What will be the output of the following code? a equals 10; if a greater than 5; print Greater; else; print Smaller.”
Answer: A) Greater
Quiz 3: 반복문과 range 함수
Q3: What will be the output of the following code?
for i in range(1, 10, 3):
print(i, end=' ')
- A) 1 2 3 4 5 6 7 8 9
- B) 1 3 5 7 9
- C) 1 4 7
- D) None of the above
Read as: “What will be the output of the following code? for i in range 1, 10, 3; print i end equals space.”
Answer: C) 1 4 7
Quiz 4: 슬라이싱
Q4: What will be the output of the following code?
s = "Python"
print(s[1:4])
- A) “yth”
- B) “Pyt”
- C) “tho”
- D) “ytho”
Read as: “What will be the output of the following code? s equals Python; print s 1 to 4.”
Answer: A) “yth”
이와 같이 Python의 기본 문법, 입출력 함수, range 함수, 슬라이싱에 대해 학습할 수 있습니다.
Python: 조건문, 반복문, 클래스 및 데이터 과학 관련
조건문 (if statement)
조건문은 조건에 따라 코드의 실행 흐름을 제어합니다.
-
기본 if 문법
if condition: # 실행할 코드 elif another_condition: # 실행할 코드 else: # 실행할 코드
-
예시
x = 10 if x > 0: print("Positive") elif x == 0: print("Zero") else: print("Negative")
반복문 (for, while)
반복문은 특정 조건이 참인 동안 코드 블록을 반복해서 실행합니다.
-
for 문
for item in iterable: # 실행할 코드
-
예시
for i in range(5): print(i)
-
예시
-
while 문
while condition: # 실행할 코드
-
예시
i = 0 while i < 5: print(i) i += 1
-
예시
클래스 (class)
클래스는 객체 지향 프로그래밍(OOP)의 기본 단위로, 데이터와 기능을 하나로 묶습니다.
-
기본 class 문법
class ClassName: def __init__(self, attribute1, attribute2): self.attribute1 = attribute1 self.attribute2 = attribute2 def method1(self): # 실행할 코드
-
예시
class Dog: def __init__(self, name, age): self.name = name self.age = age def bark(self): print("Woof!") my_dog = Dog("Buddy", 3) print(my_dog.name) # Buddy 출력 my_dog.bark() # Woof! 출력
-
예시
데이터 과학 관련
Python은 데이터 과학에 널리 사용되며, 이를 위한 다양한 라이브러리와 도구가 있습니다.
주요 라이브러리
-
NumPy
- 수치 연산을 위한 강력한 라이브러리
- 다차원 배열 객체와 다양한 수학 함수 제공
-
예시
import numpy as np array = np.array([1, 2, 3, 4, 5]) print(array.mean()) # 평균값 출력
-
Pandas
- 데이터 분석을 위한 라이브러리
- 데이터프레임(DataFrame)을 사용해 데이터를 조작하고 분석
-
예시
import pandas as pd data = { "name": ["Alice", "Bob", "Charlie"], "age": [25, 30, 35] } df = pd.DataFrame(data) print(df)
-
Matplotlib
- 데이터 시각화를 위한 라이브러리
- 그래프와 플롯을 생성
-
예시
import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [1, 4, 9, 16, 25] plt.plot(x, y) plt.xlabel("X-axis") plt.ylabel("Y-axis") plt.title("Sample Plot") plt.show()
-
Scikit-learn
- 머신러닝을 위한 라이브러리
- 다양한 머신러닝 알고리즘과 도구 제공
-
예시
from sklearn.linear_model import LinearRegression # 예시 데이터 X = [[1], [2], [3], [4], [5]] y = [1, 2, 3, 4, 5] model = LinearRegression() model.fit(X, y) print(model.predict([[6]])) # [6] 예측
요약 표
개념 | 설명 | 예시 |
---|---|---|
조건문 | 조건에 따라 코드 실행 흐름 제어 |
if x > 0: , elif x == 0: , else:
|
반복문 | 특정 조건이 참인 동안 코드 반복 실행 |
for i in range(5): , while i < 5:
|
클래스 | 데이터와 기능을 하나로 묶는 객체 지향 프로그래밍의 기본 단위 |
class Dog: , def __init__(self, name, age): , def bark(self):
|
NumPy | 수치 연산을 위한 강력한 라이브러리 |
import numpy as np , array = np.array([1, 2, 3, 4, 5])
|
Pandas | 데이터 분석을 위한 라이브러리 |
import pandas as pd , df = pd.DataFrame(data)
|
Matplotlib | 데이터 시각화를 위한 라이브러리 |
import matplotlib.pyplot as plt , plt.plot(x, y)
|
Scikit-learn | 머신러닝을 위한 라이브러리 |
from sklearn.linear_model import LinearRegression , model.fit(X, y)
|
Click to open
퀴즈
Quiz 1: 조건문
Q1: What will be the output of the following code?
x = 10
if x < 5:
print("Less than 5")
elif x == 10:
print("Equal to 10")
else:
print("Greater than 5 but not 10")
- A) Less than 5
- B) Equal to 10
- C) Greater than 5 but not 10
- D) None of the above
Read as: “What will be the output of the following code? x equals 10; if x less than 5; print Less than 5; elif x equals 10; print Equal to 10; else; print Greater than 5 but not 10.”
Answer: B) Equal to 10
Quiz 2: for 문
Q2: What will be the output of the following code?
for i in range(3):
print(i, end=' ')
- A) 0 1 2
- B) 1 2 3
- C) 0 1 2 3
- D) 1 2 3 4
Read as: “What will be the output of the following code? for i in range 3; print i end equals space.”
Answer: A) 0 1 2
Quiz 3: 클래스
Q3: What will be the output of the following code?
class Cat:
def __init__(self, name):
self.name = name
def meow(self):
print("Meow!")
my_cat = Cat("Whiskers")
print(my_cat.name)
my_cat.meow()
- A) Whiskers Meow!
- B) Whiskers
- C) Meow!
- D) None of the above
Read as: “What will be the output of the following code? class Cat; def init self, name; self.name equals name; def meow self; print Meow!; my_cat equals Cat Whiskers; print my_cat.name; my_cat.meow.”
Answer: A) Whiskers Meow!
Quiz 4: NumPy
Q4: What will be the output of the following code?
import numpy as np
array = np.array([1, 2, 3, 4, 5])
print(array.sum())
- A) 15
- B) 10
- C) Error
- D) None of the above
Read as: “What will be the output of the following code? import numpy as np; array equals np.array 1, 2, 3, 4, 5; print array.sum.”
Answer: A) 15
Quiz 5: Pandas
Q5: What will be the output of the following code?
import pandas as pd
data = {"name": ["Alice", "Bob"], "age": [25, 30]}
df = pd.DataFrame(data)
print(df["name"][0])
- A) Alice
- B) Bob
- C) 25
- D) 30
Read as: “What will be the output of the following code? import pandas as pd; data equals name Alice, Bob; age 25, 30; df equals pd.DataFrame data; print df name 0.”
Answer: A) Alice
이와 같이 Python의 조건문, 반복문, 클래스, 그리고 데이터 과학 관련 주요 라이브러리들을 학습할 수 있습니다.
절차적 프로그래밍 vs 객체지향 프로그래밍
절차적 프로그래밍 (Procedural Programming)
절차적 프로그래밍은 프로그램을 함수나 절차로 구성하여 작업을 수행하는 방식입니다. 주로 순차적으로 명령을 실행하며, 데이터를 처리하기 위한 함수의 모음을 사용합니다.
-
특징:
- 명령어가 순차적으로 실행
- 함수의 재사용성을 높임
- 전역 데이터와 지역 데이터로 나뉨
- 프로그램의 흐름을 함수 호출로 제어
-
예시:
# 절차적 프로그래밍 예시 def add(a, b): return a + b def subtract(a, b): return a - b result1 = add(10, 5) result2 = subtract(10, 5) print(result1, result2)
객체지향 프로그래밍 (Object-Oriented Programming, OOP)
객체지향 프로그래밍은 데이터를 객체로 모델링하고, 객체 간의 상호작용을 통해 프로그램을 설계하는 방식입니다. 각 객체는 데이터(속성)와 행동(메서드)을 포함합니다.
-
특징:
- 클래스와 객체를 사용하여 데이터와 메서드를 캡슐화
- 상속, 다형성, 캡슐화, 추상화 등 OOP 원칙 사용
- 코드 재사용성과 유지보수성 향상
- 객체 간의 메시지 교환을 통해 작업 수행
-
예시:
# 객체지향 프로그래밍 예시 class Calculator: def __init__(self): pass def add(self, a, b): return a + b def subtract(self, a, b): return a - b calc = Calculator() result1 = calc.add(10, 5) result2 = calc.subtract(10, 5) print(result1, result2)
절차적 프로그래밍과 객체지향 프로그래밍의 비교
비교 항목 | 절차적 프로그래밍 | 객체지향 프로그래밍 |
---|---|---|
기본 단위 | 함수 및 절차 | 클래스 및 객체 |
프로그램 구조 | 순차적, 함수 호출로 제어 | 객체 간의 상호작용으로 제어 |
데이터 처리 | 전역 데이터와 지역 데이터를 사용 | 캡슐화된 데이터를 객체 내에서 처리 |
재사용성 | 함수의 재사용성을 높임 | 클래스와 객체를 재사용 가능 |
유지보수 | 코드가 길어질수록 복잡해질 수 있음 | 코드의 유지보수성과 확장성이 높음 |
주요 개념 | 함수, 절차 | 클래스, 객체, 상속, 다형성, 캡슐화, 추상화 |
예시 언어 | C, Pascal, Basic | Java, Python, C++, C#, Ruby |
Click to open
퀴즈
Quiz 1: 절차적 프로그래밍
Q1: What will be the output of the following procedural programming code?
def multiply(a, b):
return a * b
result = multiply(3, 4)
print(result)
- A) 7
- B) 12
- C) 10
- D) 1
Read as: “What will be the output of the following procedural programming code? def multiply a, b; return a times b; result equals multiply 3, 4; print result.”
Answer: B) 12
Quiz 2: 객체지향 프로그래밍
Q2: What will be the output of the following object-oriented programming code?
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f"Hello, my name is {self.name} and I am {self.age} years old."
person1 = Person("Alice", 30)
print(person1.greet())
- A) Hello, my name is Alice and I am 30 years old.
- B) Hello, my name is Bob and I am 30 years old.
- C) Hello, my name is Alice and I am 25 years old.
- D) Hello, my name is Bob and I am 25 years old.
Read as: “What will be the output of the following object-oriented programming code? class Person; def init self, name, age; self.name equals name; self.age equals age; def greet self; return f Hello, my name is self.name and I am self.age years old; person1 equals Person Alice, 30; print person1.greet.”
Answer: A) Hello, my name is Alice and I am 30 years old.
절차적 프로그래밍과 객체지향 프로그래밍의 기본 개념과 예시를 통해 각각의 장단점을 이해하고, 퀴즈를 통해 이를 연습해보세요.
스크립트 언어
스크립트 언어는 주로 해석기에 의해 실행되는 고급 프로그래밍 언어입니다. 컴파일 없이 실행되기 때문에 빠르게 개발하고 수정할 수 있다는 장점이 있습니다. 스크립트 언어는 다양한 분야에서 사용되며, 특히 웹 개발, 시스템 관리, 데이터 처리 등에서 널리 사용됩니다.
주요 특징
-
동적 타이핑(Dynamic Typing)
- 변수의 데이터 타입을 명시적으로 선언하지 않으며, 값에 따라 자동으로 타입이 결정됩니다.
-
인터프리터 방식(Interpreter Based)
- 소스 코드를 기계어로 번역하지 않고, 해석기가 한 줄씩 실행합니다. 따라서 코드 수정 후 바로 실행해볼 수 있습니다.
-
높은 수준의 추상화(High-Level Abstraction)
- 복잡한 작업을 단순화시키는 고급 기능과 라이브러리를 제공하여 개발 속도를 높입니다.
-
플랫폼 독립성(Platform Independence)
- 대부분의 스크립트 언어는 다양한 운영 체제에서 동일하게 실행됩니다.
대표적인 스크립트 언어
-
Python
- 다목적 프로그래밍 언어로, 간결하고 읽기 쉬운 문법을 가지고 있습니다.
- 데이터 과학, 웹 개발, 자동화 스크립트 등 다양한 분야에서 사용됩니다.
-
JavaScript
- 웹 브라우저에서 실행되는 클라이언트 사이드 스크립트 언어입니다.
- Node.js를 통해 서버 사이드에서도 사용 가능합니다.
-
Ruby
- 간결하고 자연스러운 문법을 가진 언어로, 웹 애플리케이션 개발에 많이 사용됩니다.
- Ruby on Rails라는 강력한 웹 프레임워크가 유명합니다.
-
Perl
- 텍스트 처리와 시스템 관리 스크립트에 강점을 가진 언어입니다.
- 과거 웹 CGI 스크립트로 많이 사용되었습니다.
-
PHP
- 서버 사이드 웹 개발을 위한 스크립트 언어로, 동적인 웹 페이지를 생성하는 데 많이 사용됩니다.
- WordPress, Drupal 등 많은 CMS에서 사용됩니다.
예시 코드
Python 예시
# Python 예제: 간단한 계산기
def add(a, b):
return a + b
def subtract(a, b):
return a - b
result = add(10, 5)
print("Addition:", result)
result = subtract(10, 5)
print("Subtraction:", result)
JavaScript 예시
// JavaScript 예제: 간단한 계산기
function add(a, b) {
return a + b;
}
function subtract(a, b) {
return a - b;
}
let result = add(10, 5);
console.log("Addition:", result);
result = subtract(10, 5);
console.log("Subtraction:", result);
Ruby 예시
# Ruby 예제: 간단한 계산기
def add(a, b)
return a + b
end
def subtract(a, b)
return a - b
end
result = add(10, 5)
puts "Addition: #{result}"
result = subtract(10, 5)
puts "Subtraction: #{result}"
장점과 단점
장점:
- 빠른 개발 속도: 컴파일 과정 없이 즉시 실행 및 수정 가능
- 간결한 문법: 코드 작성 및 유지보수가 용이
- 풍부한 라이브러리: 다양한 기능을 손쉽게 구현 가능
단점:
- 성능 제한: 인터프리터 방식으로 인해 컴파일된 언어보다 실행 속도가 느릴 수 있음
- 타입 안정성 부족: 동적 타이핑으로 인해 런타임 오류 발생 가능성 존재
- 대규모 프로젝트 관리 어려움: 코드가 방대해지면 구조적 설계가 어려워질 수 있음
Click to open
퀴즈
Quiz 1: Python 기초
Q1: What will be the output of the following Python code?
def multiply(a, b):
return a * b
result = multiply(3, 4)
print(result)
- A) 7
- B) 12
- C) 10
- D) 1
Read as: “What will be the output of the following Python code? def multiply a, b; return a times b; result equals multiply 3, 4; print result.”
Answer: B) 12
Quiz 2: JavaScript 기초
Q2: What will be the output of the following JavaScript code?
function divide(a, b) {
return a / b;
}
let result = divide(10, 2);
console.log(result);
- A) 4
- B) 5
- C) 8
- D) 2
Read as: “What will be the output of the following JavaScript code? function divide a, b; return a divided by b; let result equals divide 10, 2; console.log result.”
Answer: B) 5
스크립트 언어의 기본 개념과 주요 특징, 그리고 몇 가지 예제를 통해 이해를 높이고 퀴즈를 통해 연습해 보세요.
라이브러리 (Library)
정의
라이브러리는 특정 기능을 모아 놓은 코드의 집합으로, 개발자가 재사용할 수 있도록 제공됩니다. 라이브러리를 사용하면 반복적인 코드를 줄이고, 보다 효율적으로 프로그래밍할 수 있습니다.
주요 특징
- 재사용성(Reusability): 코드의 중복을 줄이고, 이미 검증된 기능을 사용하여 개발 속도를 높입니다.
- 모듈화(Modularity): 특정 기능이나 역할을 수행하는 코드 블록을 분리하여 관리할 수 있습니다.
- 유지보수성(Maintainability): 공통된 기능이 한 곳에 모여 있어 유지보수가 용이합니다.
예시
Python에서 라이브러리 사용 예시
import math
# math 라이브러리를 사용하여 제곱근 계산
print(math.sqrt(16)) # 출력: 4.0
JavaScript에서 라이브러리 사용 예시
// Lodash 라이브러리 사용
const _ = require('lodash');
// 배열의 최대값 찾기
let numbers = [1, 2, 3, 4, 5];
console.log(_.max(numbers)); // 출력: 5
예외 처리 (Exception Handling)
정의
예외 처리는 프로그램 실행 중 발생할 수 있는 오류를 관리하고 처리하는 방법입니다. 이를 통해 프로그램이 갑작스럽게 종료되는 것을 방지하고, 사용자에게 적절한 오류 메시지를 제공할 수 있습니다.
주요 특징
- 안정성(Stability): 오류 발생 시 프로그램이 비정상적으로 종료되는 것을 방지합니다.
- 디버깅 용이성(Debugging): 오류의 원인을 쉽게 찾을 수 있도록 도와줍니다.
- 유연성(Flexibility): 다양한 예외 상황에 대한 적절한 처리가 가능합니다.
예시
Python에서 예외 처리 예시
try:
result = 10 / 0
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
finally:
print("예외 처리 완료.")
JavaScript에서 예외 처리 예시
try {
let result = 10 / 0;
} catch (error) {
console.log("0으로 나눌 수 없습니다.");
} finally {
console.log("예외 처리 완료.");
}
프로토타입 (Prototype)
정의
프로토타입은 객체 지향 프로그래밍에서 클래스 없이 객체의 특성과 메서드를 정의하는 방법입니다. 주로 JavaScript에서 사용되며, 모든 객체는 자신의 프로토타입 객체를 참조하여 메서드와 속성을 상속받습니다.
주요 특징
- 상속(Inheritance): 객체가 다른 객체의 속성과 메서드를 상속받을 수 있습니다.
- 확장성(Extendability): 프로토타입 체인을 통해 객체에 새로운 메서드와 속성을 추가할 수 있습니다.
- 동적 타이핑(Dynamic Typing): 런타임 중에 객체의 속성과 메서드를 변경할 수 있습니다.
예시
JavaScript에서 프로토타입 사용 예시
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.greet = function() {
console.log("안녕하세요, 저는 " + this.name + "입니다.");
};
let person1 = new Person("Alice", 30);
person1.greet(); // 출력: 안녕하세요, 저는 Alice입니다.
Click to open
퀴즈
Quiz 1: 라이브러리
Q1: What is the primary advantage of using libraries in programming?
- A) Reduces code repetition
- B) Increases code complexity
- C) Limits code reusability
- D) Slows down development speed
Read as: “What is the primary advantage of using libraries in programming? Reduces code repetition; Increases code complexity; Limits code reusability; Slows down development speed.”
Answer: A) Reduces code repetition
Quiz 2: 예외 처리
Q2: What will be the output of the following Python code?
try:
result = 10 / 0
except ZeroDivisionError:
print("Cannot divide by zero")
finally:
print("Done")
- A) No output
- B) Done
- C) Cannot divide by zero
- D) Cannot divide by zero\nDone
Read as: “What will be the output of the following Python code? try result equals 10 divided by 0; except ZeroDivisionError print Cannot divide by zero; finally print Done.”
Answer: D) Cannot divide by zero\nDone
Quiz 3: 프로토타입
Q3: In JavaScript, what is the purpose of the prototype
property?
- A) To define static methods
- B) To add properties and methods to object instances
- C) To create a new object
- D) To delete properties from objects
Read as: “In JavaScript, what is the purpose of the prototype property? To define static methods; To add properties and methods to object instances; To create a new object; To delete properties from objects.”
Answer: B) To add properties and methods to object instances
라이브러리, 예외 처리, 프로토타입에 대한 기본 개념을 이해하고 퀴즈를 통해 연습해 보세요.
변수 선언
roadmap
Click to open
강의번호 | 강의명 | 상태 | 시간 |
---|---|---|---|
1강 | 001 운영체제의 개념 | 미리보기 | 7분 |
2강 | 002 프로세스 관리 | 5분 | |
3강 | 003 스케줄링 | 15분 | |
4강 | 004 병행 프로세스와 상호 배제 | 4분 | |
5강 | 005 기억장치 관리 | 13분 | |
6강 | 006 디스크 스케줄링 | 5분 | |
7강 | 007 정보 관리 | 7분 | |
8강 | 008 분산 운영체제 | 9분 | |
9강 | 009 운영체제의 실제 | 10분 | |
10강 | 010 정보 통신의 기본 | 9분 | |
11강 | 011 정보 전송 기술 | 11분 | |
12강 | 012 전송 방식 / 전송 제어 | 11분 | |
13강 | 013 통신 프로토콜 | 11분 | |
14강 | 014 정보 통신망 기술 | 13분 | |
15강 | 015 소프트웨어 생명 주기 | 12분 | |
16강 | 016 소프트웨어 개발 방법론 | 11분 | |
17강 | 017 스크럼(Scrum) 기법 | 7분 | |
18강 | 018 XP(eXtreme Programming) 기법 | 8분 | |
19강 | 019 요구사항 정의 | 9분 | |
20강 | 020 요구사항 분석 | 13분 | |
21강 | 021 요구사항 분석 CASE와 HIPO | 8분 | |
22강 | 022 UML(Unified Modeling Language) | 10분 | |
23강 | 023 주요 UML 다이어그램 | 12분 | |
24강 | 024 소프트웨어 아키텍처 | 16분 | |
25강 | 025 아키텍처 패턴 | 12분 | |
26강 | 026 객체지향(Object-Oriented) | 16분 | |
27강 | 027 객체지향 분석 및 설계 | 9분 | |
28강 | 028 디자인 패턴 | 18분 | |
29강 | 029 개발 지원 도구 | 7분 | |
30강 | 030 애플리케이션 테스트 | 5분 | |
31강 | 031 애플리케이션 테스트의 분류 | 5분 | |
32강 | 032 테스트 기법에 따른 애플리케이션 테스트 | 11분 | |
33강 | 033 개발 단계에 따른 애플리케이션 테스트 | 7분 | |
34강 | 034 통합 테스트 | 9분 | |
35강 | 035 결함 관리 | 8분 | |
36강 | 036 사용자 인터페이스 | 10분 | |
37강 | 037 UI 표준 및 지침 | 9분 | |
38강 | 038 UI 설계 도구 | 6분 | |
39강 | 039 UI 테스트 기법의 종류 | 4분 | |
40강 | 040 소프트웨어 버전 등록 | 6분 | |
41강 | 041 소프트웨어 버전 관리 도구 | 8분 | |
42강 | 042 빌드 자동화 도구 | 3분 | |
43강 | 043 SW / 보안 관련 신기술 | 8분 | |
44강 | 044 HW 관련 신기술 | 5분 | |
45강 | 045 DB 관련 신기술 | 6분 | |
46강 | 046 네트워크 관련 신기술 | 11분 | |
47강 | 047 데이터 타입 | 미리보기 | 12분 |
48강 | 048 변수 | 22분 | |
49강 | 049 연산자 | 37분 | |
50강 | 050 데이터 입ㆍ출력 | 39분 | |
51강 | 051 제어문 | 14분 | |
52강 | 052 반복문 | 17분 | |
53강 | 053 배열과 문자열 | 26분 | |
54강 | 054 포인터 | 20분 | |
55강 | 055 사용자 정의 함수 | 5분 | |
56강 | 056 Python의 기초 | 23분 | |
57강 | 057 Python의 활용 | 23분 | |
58강 | 058 웹 프로그래밍 언어 - HTML | 13분 | |
59강 | 059 웹 프로그래밍 언어 - JavaScript | 8분 | |
60강 | 060 절차적 프로그래밍 언어 | 6분 | |
61강 | 061 객체지향 프로그래밍 언어 | 13분 | |
62강 | 062 스크립트 언어 | 6분 | |
63강 | 063 라이브러리 | 6분 | |
64강 | 064 예외 처리 | 7분 | |
65강 | 065 프로토타입 | 4분 | |
66강 | 066 개발 환경 구축 | 13분 | |
67강 | 067 서버 개발 | 9분 | |
68강 | 068 모듈 | 11분 | |
69강 | 069 공통 모듈 | 3분 | |
70강 | 070 보안 및 API | 9분 | |
71강 | 071 자료 구조 | 미리보기 | 20분 |
72강 | 072 트리(Tree) | 20분 | |
73강 | 073 정렬(Sort) | 22분 | |
74강 | 074 검색 - 이분 검색 / 해싱 | 16분 | |
75강 | 075 데이터베이스 개요 | 12분 | |
76강 | 076 데이터베이스 설계 | 31분 | |
77강 | 077 데이터 모델의 개념 | 12분 | |
78강 | 078 E - R(개체 - 관계) 모델 | 6분 | |
79강 | 079 관계형 데이터베이스의 구조 | 9분 | |
80강 | 080 관계형 데이터베이스의 제약 조건 - 키(Key) | 9분 | |
81강 | 081 관계형 데이터베이스의 제약 조건 - 무결성 | 12분 | |
82강 | 082 관계대수 및 관계해석 | 5분 | |
83강 | 083 정규화(Normalization) | 20분 | |
84강 | 084 반정규화(Denormalization) | 12분 | |
85강 | 085 인덱스 | 18분 | |
86강 | 086 뷰(View) | 11분 | |
87강 | 087 시스템 카탈로그 / 트랜잭션 | 3분 | |
88강 | 088 SQL의 개념 | 6분 | |
89강 | 089 DDL | 18분 | |
90강 | 090 DCL | 12분 | |
91강 | 091 DML | 7분 | |
92강 | 092 DML - SELECT-1 | 18분 | |
93강 | 093 DML - SELECT-2 | 13분 | |
94강 | 094 DML - JOIN | 16분 | |
95강 | 095 절차형 SQL | 4분 | |
96강 | 096 프로시저(Procedure) | 6분 | |
97강 | 097 쿼리 성능 최적화 | 16분 |
The following wiki, pages and posts are tagged with
Title | Type | Excerpt |
---|