FriJun07, license for Information Management Industrial Engineer

AI summarized youtube contents based on the subtitles.

Playlist for short topics playlist for curriculum according to the book contents.

membox onofftony aiegoo@na

cafe

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

  1. Given int a = 5;, what is the value of a after a++?
    • Question: “What is the value of a after a plus plus?”
    • Answer: 6
  2. Given int b = 3;, what is the value of b after --b?
    • Question: “What is the value of b after minus minus b?”
    • Answer: 2

Quiz 2: Arithmetic Operators

  1. What is the result of 10 + 15?
    • Question: “What is the result of ten plus fifteen?”
    • Answer: 25
  2. What is the result of 20 - 5?
    • Question: “What is the result of twenty minus five?”
    • Answer: 15
  3. What is the result of 4 * 3?
    • Question: “What is the result of four times three?”
    • Answer: 12
  4. What is the result of 16 / 4?
    • Question: “What is the result of sixteen divided by four?”
    • Answer: 4
  5. What is the result of 17 % 3?
    • Question: “What is the result of seventeen mod three?”
    • Answer: 2

Quiz 3: Relational Operators

  1. Given int a = 7; int b = 10;, what is the result of a == b?
    • Question: “What is the result of a equals b?”
    • Answer: false
  2. Given int a = 7; int b = 10;, what is the result of a != b?
    • Question: “What is the result of a not equals b?”
    • Answer: true
  3. Given int a = 7; int b = 10;, what is the result of a > b?
    • Question: “What is the result of a greater than b?”
    • Answer: false
  4. Given int a = 7; int b = 10;, what is the result of a <= b?
    • Question: “What is the result of a less than or equal to b?”
    • Answer: true

Quiz 4: Logical Operators

  1. Given boolean x = true; boolean y = false;, what is the result of x && y?
    • Question: “What is the result of x and y?”
    • Answer: false
  2. Given boolean x = true; boolean y = false;, what is the result of x || y?
    • Question: “What is the result of x or y?”
    • Answer: true
  3. Given boolean x = true;, what is the result of !x?
    • Question: “What is the result of not x?”
    • Answer: false

Quiz 5: Bitwise Operators

  1. Given int a = 5; int b = 3;, what is the result of a & b?
    • Question: “What is the result of a and b (bitwise)?”
    • Answer: 1
  2. Given int a = 5; int b = 3;, what is the result of a | b?
    • Question: “What is the result of a or b (bitwise)?”
    • Answer: 7
  3. Given int a = 5; int b = 3;, what is the result of a ^ b?
    • Question: “What is the result of a xor b?”
    • Answer: 6
  4. 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

  1. Given int a = 8;, what is the result of a << 2?
    • Question: “What is the result of a left shift by 2?”
    • Answer: 32
  2. Given int a = 8;, what is the result of a >> 1?
    • Question: “What is the result of a right shift by 1?”
    • Answer: 4

Quiz 7: Conditional Operator

  1. 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

  1. Given int a = 5;, what is the value of a after a += 3?
    • Question: “What is the value of a after a plus equals 3?”
    • Answer: 8
  2. Given int a = 5;, what is the value of a after a *= 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. The scanf function in C is used to read input from the user.”

Q2: A) print()

  • Read as: “The correct answer is A, print(). In Python, the print() 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++, the ifstream class is used for reading from a file.”

Q5: A) sock.recv()

  • Read as: “The correct answer is A, sock.recv(). In Python, the recv() method of a socket object is used to receive data.”

제어문 (Control Statements)

제어문은 프로그램의 흐름을 제어하는 데 사용되는 구문입니다. 주요 제어문에는 조건문과 반복문이 있습니다. 각 제어문의 유형과 사용법을 요약하고 예제를 포함하여 설명합니다.

조건문 (Conditional Statements)

  1. 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");
      }
      
  2. 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");
      }
      
  3. 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");
      }
      
  4. 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)

  1. 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);
      }
      
  2. while 문 (while Loop): 조건이 참일 때까지 반복합니다.
    • 구문:
      while (condition) {
          // code to be executed while condition is true
      }
      
    • 예제:
      int i = 0;
      while (i < 5) {
          printf("%d\n", i);
          i++;
      }
      
  3. 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.

절차적 프로그래밍과 객체지향 프로그래밍의 기본 개념과 예시를 통해 각각의 장단점을 이해하고, 퀴즈를 통해 이를 연습해보세요.

스크립트 언어

스크립트 언어는 주로 해석기에 의해 실행되는 고급 프로그래밍 언어입니다. 컴파일 없이 실행되기 때문에 빠르게 개발하고 수정할 수 있다는 장점이 있습니다. 스크립트 언어는 다양한 분야에서 사용되며, 특히 웹 개발, 시스템 관리, 데이터 처리 등에서 널리 사용됩니다.

주요 특징

  1. 동적 타이핑(Dynamic Typing)
    • 변수의 데이터 타입을 명시적으로 선언하지 않으며, 값에 따라 자동으로 타입이 결정됩니다.
  2. 인터프리터 방식(Interpreter Based)
    • 소스 코드를 기계어로 번역하지 않고, 해석기가 한 줄씩 실행합니다. 따라서 코드 수정 후 바로 실행해볼 수 있습니다.
  3. 높은 수준의 추상화(High-Level Abstraction)
    • 복잡한 작업을 단순화시키는 고급 기능과 라이브러리를 제공하여 개발 속도를 높입니다.
  4. 플랫폼 독립성(Platform Independence)
    • 대부분의 스크립트 언어는 다양한 운영 체제에서 동일하게 실행됩니다.

대표적인 스크립트 언어

  1. Python
    • 다목적 프로그래밍 언어로, 간결하고 읽기 쉬운 문법을 가지고 있습니다.
    • 데이터 과학, 웹 개발, 자동화 스크립트 등 다양한 분야에서 사용됩니다.
  2. JavaScript
    • 웹 브라우저에서 실행되는 클라이언트 사이드 스크립트 언어입니다.
    • Node.js를 통해 서버 사이드에서도 사용 가능합니다.
  3. Ruby
    • 간결하고 자연스러운 문법을 가진 언어로, 웹 애플리케이션 개발에 많이 사용됩니다.
    • Ruby on Rails라는 강력한 웹 프레임워크가 유명합니다.
  4. Perl
    • 텍스트 처리와 시스템 관리 스크립트에 강점을 가진 언어입니다.
    • 과거 웹 CGI 스크립트로 많이 사용되었습니다.
  5. 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)

정의

라이브러리는 특정 기능을 모아 놓은 코드의 집합으로, 개발자가 재사용할 수 있도록 제공됩니다. 라이브러리를 사용하면 반복적인 코드를 줄이고, 보다 효율적으로 프로그래밍할 수 있습니다.

주요 특징

  1. 재사용성(Reusability): 코드의 중복을 줄이고, 이미 검증된 기능을 사용하여 개발 속도를 높입니다.
  2. 모듈화(Modularity): 특정 기능이나 역할을 수행하는 코드 블록을 분리하여 관리할 수 있습니다.
  3. 유지보수성(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)

정의

예외 처리는 프로그램 실행 중 발생할 수 있는 오류를 관리하고 처리하는 방법입니다. 이를 통해 프로그램이 갑작스럽게 종료되는 것을 방지하고, 사용자에게 적절한 오류 메시지를 제공할 수 있습니다.

주요 특징

  1. 안정성(Stability): 오류 발생 시 프로그램이 비정상적으로 종료되는 것을 방지합니다.
  2. 디버깅 용이성(Debugging): 오류의 원인을 쉽게 찾을 수 있도록 도와줍니다.
  3. 유연성(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에서 사용되며, 모든 객체는 자신의 프로토타입 객체를 참조하여 메서드와 속성을 상속받습니다.

주요 특징

  1. 상속(Inheritance): 객체가 다른 객체의 속성과 메서드를 상속받을 수 있습니다.
  2. 확장성(Extendability): 프로토타입 체인을 통해 객체에 새로운 메서드와 속성을 추가할 수 있습니다.
  3. 동적 타이핑(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