정처기 실기 암기 (6.프로그래밍 언어활용)

Dev_Oh·2022년 7월 12일
1

프로그래밍 언어 활용

1. 데이터 입출력

데이터 입출력의 개요

  • 데이터 입·출력 : 키보드로부터 데이터를 입력받아 화면이나 파일로 출력하는 것
  • 이 페이지에서는 C와 Java의 기본적인 프로그램 구조를 이해하고, 다음과 같은 내용이 포함된 프로그램 코드를 읽고 해석하는 방법, 을 배운다.
    • 헝가리안 표기법
    • 자료형
    • C언어의 입출력 함수 : scanf, printf
    • Java의 입출력 함수 : Scanner, nextInt, print, printf, println
    • 서식 지정자와 제어 문자
    • 연산자의 우선순위

헝가리 표기법(Hungarian Notation)

: 변수명 작성시, 변수의 자료형을 알수 ㄹ있도록 자료형을 의미하는 문자를 포함하여 작성하는 방법 EX) int inpua : 정수형 변수 dobuble Result : 실수형 변수

주요 자료형

주요서식 문자열

주요 제어 문자

연산자 우선순위 - 증산시/관비/논삼대

break 와 continue

  • break : 반복문이나 switch 문 안에서 break가 나오면 블록을 벗어난다
  • continue : 반복문에서 continue가 나오면, continue 이후의 문장을 실행하지 않고 제어를 반복문의 처음으로 옮긴다.

(3) 포인터

  • C언어에서는 변수의 주소를 포인터라고 하고, 포인터를 저장할 수 있는 변수를 포인터 변수 라고 한다.

1) 포인터 표기법

char *s
s = "selina";
  • s에 지정된 값은 문자열의 시작주소 이다
  • s값을 1 증가시킨다는 것은 현재 s가 가리키고 있는 문자의 주소에 다음 문자의 주소로 가리키는 주소를 증가 시킨다는 것이다.

(4) 구조체

  • 배열이 자료의 형과 크기가 동일한 변수의 모임이라면, 구조체는 자료의 종류가 다른 변수의 모임이라고 할수 있다.

    • 예) 이름, 직위, 급여 등의 필드가 필요한 사원 자료를 하나의 단위로 관리하려면 문자와 숫자가 혼용되는 배열로는 처리할수가 없는데 이런경우, 구조체를 사용하면 간단하게 처리 할 수있다.

    1) 구조체 정의

  • 구조체를 정의한다는 것은 int 나 char 같은 자료형을 하나 만드는 것을 의미한다.

  • struct : 구조체를 정의하는 예약어

 struct sawon{
  char name[10];
  char jjkwi[10];
  int pay;
 }

2) 구조체 변수의 선언

  • 정수형 변수를 사용하려면 'int a'와 같이 선언한 후 사용하는 것처럼, 구조체 변수를 사용하려면 먼저 정의된 구조체에 대한 변수를 선언 해야 한다.
struct sawon ansan, *seoul
  • sawon ansan : 정의한 구조체 sawon 자료형으로 변수를 선언 하는데 변수의 이름은 ansan 이라는 의미이며, 사용자가 임으로 정하면 도니다.
  • * seoul: 구조체의 포인터 변수이며, struct sawon seoul' 과 같이 변도로 지정할 수있다.

3) 구조체 멤버의 지정

  • 구조체의 멤버는 모든 요소들이 개별적인 이름을 가지고 있으므로 구조체 멤버를 지정할 때는 구조체 변수와 함께 멤버 이름을 지정해야 한다.
ansan.name = "김한국";
ansan.jikwi = "대리";
ansan.pay = 4000000;
  • '->'에 의한 지정 : 구조체 포인터 변수를 이용해 구조체 멤버를 지정할 때
seoul -> name = "홍길동";
seoul -> jikwi = "과장";
seoul -> pay = 500000;
  • 구조체의 포인터 변수는 일반 포인터 변수 처럼 *를 사용하여 멤버를 지정할 수도 있다.
(*seoul).name = "홍길동";
(*seoul).jikwi = "과장";
(*seoul).pay = 500000;

간단해설 ->
p = {"데이터1",95,88}
p+1 = {"데이터2",84,91}
p+2 = {"데이터3",86,75}

(p+1)hab = (p+1)->os + (p+2)->db
(p+1)hab = 84 + 75
=159

(p+1)hhab = (p+1)->hab + p->os + p->db
(p+1)hhab = 159 + 95 + 88
= 342

(p+1)->hab + (p+1)->hhab =
159 + 342 = 501

답: 501




(5) 사용자 정의 함수

  • 사용자가 직접 만들어 사용하는 함수

함수포인터

  • C언어에서 함수 이름해당 함수가 시작되는 주소를 의미한다.
  • 변수의 주소를 포인터 변수에 저장하는 것처럼, 함수의 주소도 함수 포인터에 저장할 수 있을 뿐만 아니라 함수 포인터를 이용하여 함수를 호출할 수도 있다.
  • 함수 포인터를 선언하는 방법은 함수를 선언하는 것과 동일한데, 포인터 변수임을 의미하는 *를 붙여주고 우선순위를 구분하기 위해 함수 포인터 이름과 함께 괄호로 묶어주는 것만 다르다.

(6) Java의 클래스

  • 클래스는 객체 생성을 위한 필드(속성)메서드(함수)를 정의하는 설계도로, java는 아무리작은 프로그램이라도 클래스를 만들어서 사용해야 한다.

생성자(Constructor)

  • 객체 변수 생성에 사용되는 메서드
  • 객체 변수를 생성하면서 초기화를 수행한다
  • 클래스 안에 생성자를 정의하는 문장이 있다면 문장에 적힌 대로 객체 변수를 초기화 하면서 생성하지만, 없으면 그냥 객체 변수만 생성하고 제어가 다음 줄로 넘어간다.


객체 변수의 선언

  • 객체 변수를 선언한다는 것은 클래스를 사용하기 위해 객체 변수를 생성하고, 생선된 객체가 있는 곳에 주소를 객체 변수에 저장 하는 것이다.
  • 기본형식
클래스명 객체변수명 = new 생성자()

super, this

  • super : 상속한 부모클래스를 가리키는 예약어
  • this : 현재 실행중인 메소드가 속한 클래스를 가리키는 예약어

(7)Java의 활용

추상클래스와 형 변환

  • 추상 메서드(Abstract Method)

    • 자식 클래스에서 재정의 해야만 사용할 수 있는 메서드
    • 이러한 메서드를 하나 이상 포함하는 클래스를 추상 클래스(Abstract class)라고 한다
  • 이렇게 재정의한 메서드를 부모클래스의 객체 변수를 통해 사용하려면 부모클래스의 객체 변수를 선언할 때 자식클래스생성자를 이용해야 하는데, 이것을 클래스의 형 변환 이라고 한다.

※abstract class Animal{

  • abstract[클래스 정의부] : abstract는 추상클래스를 정의하는 명령어로, 추상 클래스 정의 시 꼭 써야 하는 예약어이다.
  • 추상 클래스는 내부에 실행 코드가 없는 추상 메서드를 포함하기 때문에, 객체 변수의 생성자로 사용할 수 없다.
Animal a = new Animal();  //오류 발생

추상클래스(Abstract Class)

  • 추상 메서드를 하나 이상 포함 하는 클래스
  • 추상 클래스내부에 실행 코드가 없는 추상 메서드를 포함 하기 때문에, 객체 변수의 생성자로 사용할 수 없다.
  • 추상 메서드는 선언만 있고 내부에 실행 코드가 없는 메서드로, 이후 상 관계가 설정된 자식 클래스에서 재정의 후 사용한다.

추상 메서드의 재정의

  • 추상 메서드는 부모 클래스가 자식 클래스에게 주는 의무와 같다.
  • 부모 클래스와 상속 관계에 있다면 반드시 부모 클래스의 추상 메서드를 재정의 해야 한다.
    • 그렇지 않으면 프로그램에 오류 발생한다.

형 변환(Casting)

  • 부모 클래스의 구조를 가지면서 자식클래스의 속성이나 메서드로 재정의하고 싶을 때 사용하는 기법
  • 만약 부모 클래스구조를 가져야 할 이유가 없다면, 부모클래스를 상속받아 재정의하고 있는 자식 클래스의 구조로 객체변수를 만들어 사용하면 된다
    • 예) Chicken a = new Chicken();

(8)Python의 활용

  • 객체 지향 기능을 지원하는 스크립트언어
  • C, Java와 비교했을 때, 기본 작성법의 차이점
    • 변수의 자료형에 대한 선언이 없다
    • 문자와 문자열을 작은 따옴표(''), 큰따옴표("") 로 구분 없이 사용할수 있으며, 3개의 작은 따옴표(''' '''), 3개의 큰따옴표(""" """)로도 묶어 표현할수 있다
    • 세미콜론(;) 사용할 필요 없다
    • if for 코드블록의 중괄호({}) 대신 콜론(:) 이나 여백으로 구분한다.

함수

input() 함수

  • 표준 입력함수
  • 키보드로 부터 입력 받아 변수에 저장 하는 함수
  • 문자열 취급
  • 형식
변수 = input( 출력함수)
  • 형식
print(출력값1, 출력값2, ..., sep = 분리문자, end = 종료문자)
  • sep
    • 여러값 출력할때 사이 구분하는 문자 , 등등
    • 기본값 : 공백 한칸 (' ')
  • end
    • 맨 마지막에 표시할 문자
    • 기본값은 줄나눔 ('\n')

for in 반복문

  • 형식
for item in iterable:
  ... 반복할 구문...
  
  
  
var_list = [1, 3, 5, 7]

for i in var_list:
print(i)
  1
  3
  5
  7
  • iterable 똑같이 반복가능한 객체

세트(set)

  • 집합(set)같은 python의 자료형으로, 중괄호({})를 이용하여 리스트와 같이 다양한요소를 저장 한다
  • 순서가 정해져 있지 않으며, 중복 X
s2 = set("Hello")
s2
{'e', 'H', 'l', 'o'}

add()

  • 맨 끝에 추가, 중복 삽입X
s1 = set([1, 2, 3])
s1.add(4)
s1
{1, 2, 3, 4}

update()

  • 여러값을 한번에 맨 끝에 추가
s1 = set([1, 2, 3])
s1.update([4, 5, 6])
 s1
{1, 2, 3, 4, 5, 6}

remove()

  • 입력된 특정값 제거
s1 = set([1, 2, 3])
s1.remove(2)
s1
{1, 3}

Range()

  • 연속된 숫자를 생성, 리스트나 반복문에 사용
  • 최종값의 -1까지 생성, 최종값이 음수일 경우 -1이 끝수 -2는 끝에서 두번째
  • 형식

 range(최종값) # 0 에서 최종값 -1까지 연속된 숫자 생성
a = range(7) 
print (list(a)) 
[0,1,2,3,4,5,6] 

range(초기값, 최종값) # 초기값에서 최종값 -1까지 생성
a = range(2, 7) 
print (list(a)) 
[2,3,4,5,6] 

range(초기값, 최종값, 증가값) # 초기값에서 최종값 -1까지 증가값 만큼 증가시키면서 숫자 생성
                            # 증가값이 음수인경우, 초기값에서 최종값 +1 까지 증가값만큼 감소하면서 숫자 생성
a = range(1, 7, 2) 
print (list(a)) 
[1, 3, 5] 
  • for in과 함께 쓰기
for i in range(7): 
 print(i) 
0 
1 
2 
3 
4 
5 
6 
for i in range(2, 7): 
print(i) 
2 
3 
4 
5 
6 
for i in range(1, 7 ,2):
 print(i) 
1 
3 
5 

slice() 슬라이스

  • 문자열, 리스트와 같은 순차형 객체를 잘라서 반환하는 기능
  • 형식

객체명[초기위치 : 최종위치] #초기위치 에서 최종위치-1 까지의 요소를 가져온다

items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

items[2:5] # 인텍스 2에서 인덱스 5까지(인덱스 5는 제외) 슬라이싱 
# [2, 3, 4]

items[5:] # 인덱스 5에서 끝까지 슬라이싱
# [5, 6, 7, 8, 9, 10]

items[:3] # 처음부터 인덱스 3까지(인덱스 3은 제외) 슬라이싱 
# [0, 1, 2]

items[:] # 처음부터 끝까지 슬라이싱(즉, 리스트 복사본 반환)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
객체명[초기위치:최종위치:증가값] 
#초기값에서 최종위치-1 까지 증가값만큼 증가하면서 해당위치요소 가져온다
#증가값이 음수일 경우, 초기값에서 최종위치+1까지 증가값 만큼 감소하면서 해당위치를 가져온다

items[2:9:3] # 인덱스 2에서 인텍스 9까지(인덱스 9는 제외) 3칸씩 점프 
# [2, 5, 8]

items[:10:2] # 처음부터 인텍스 10까지(인덱스 10은 제외) 2칸씩 점프
# [0, 2, 4, 6, 8]

items[2::2] # 인덱스 2에서 끝까지 2칸씩 점프
# [2, 4, 6, 8, 10]

items[::3] # 전체 리스트에 대해서 3칸씩 점프
# [0, 3, 6, 9]

리스트 관련 주요 메서드

리스트의 복사

  • copy()메서드를 사용 안하고 '새로운리스트 = 기존의 리스트' 형식으로 복사를 하면, 같은 메모리를 공유 하기 때문에 한쪽이 수정되면 다른 한쪽도 그대로 반영 된다.
  • copy() 메서드를 사용하면 별개의 자료공간에 저장 된다

세트관련 주요 메서드

세트의 pop() 메서드

  • 세트의 pop() 메서드는 리스트와 달리 인수를 입력하지 못하며, pop() 사용시 어떤 요소가 출력되고 삭제될 지는 알 수 없다.

(9)절차적 프로그래밍 용어

  • 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술하는 언어
  • 프로그램이 실행되는 절차를 중요시 한다.
  • 데이터를 중심으로 프로시저를 구현하며, 프로그램 전체가 유기적으로 연결되어있다.
  • 자연어에 가까운 단어와 문장으로 구성

절차적 프로그래밍 언어의 종류

(10)객체 지향 프로그래밍 언어

객체지향 프로그래밍 언어의 종류

  • 현실세계의 개체를 기계의 부품처럼 하나의 객체로 만들어, 객체들을 조립해서 프로그램을 작성하는 기법
  • 프로시저보다는 명령데이터로 구성된 객체를 중심으로 하는 프로그래밍

(11)스크립트 언어

  • HTML문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 언어
  • 기계어로 컴파일 되지않고, 번역기가 소스를 분석하여 동작한다
  • 게시판, 상품검색 회원가입 등 데이터베이스 처리 작업을 수행하기 위해 주로 사용한다.
  • 언어의 분류

스크립트 언어의 종류

(12)선언형 언어

선언형 언어

  • 프로그램이 수행해야 할 문제를 기술하는 언어
  • 목표를 명시하고, 알고리즘은 명시하지 않는다
  • 선언형 언어의 분류

명령형 언어

  • 문제를 해결하기 위한 방법을 기술 한 언어
  • 순차적인 명령 수행을 기본으로 한다
  • 폰노이만 구조에 개념적인 기초를 두고 있다
  • 명령형 언어에는 절차적 언어객체 지향 언어가 있다.
  • 종류 : FORTRAN,COBOL,C,JAVA 등

선언형 언어의 종류

(13)라이브러리

라이브러리

  • 프로그램 효율적인 개발을 할 수 있도록 자주 사용하는 함수나 데이터들을 미리 만들어 놓은 집합체
  • 라이브러리 분류

C언어의 대표적인 표준 라이브러리

  • C언어는 라이브러리를 헤더파일로 제공한다
  • C언어에서 헤더파일을 사용하려면 #include <stdio.h> 와 같은 include 문을 이용해 선언후 사용해야 한다

Java의 대표적인 표준 라이브러리

  • Java는 라이브러리를 패키지에 포함하여 제공 한다.
  • Java에서 패키지를 사용하려면 'import java.util'과 같이 import문을 이용해 선언한 후 사용해야 한다.
  • import로 선언된 패키지 안에 있는 클래스의 메서드를 사용할때는 클래스와 메서드를 마침표(.)로 구분하여 'Math.abs()'와 같이 사용한다.

Python의 대표적인 표준 라이브러리

  • Python 에서 라이브러리를 사용하려면 'import random'과 같이 선언하고, 사용할 때는 마침표(.)로 구분하여 'random.choice()'와 같이 사용한다.

(14)예외처리

예외처리 (Exception Handing)

  • 예외가 발생했을 때 프로그래머가 해당 문제에 대비해 작성해 놓은 처리 루틴이 수행 되도록 한것
  • 예외발생시 일반적으로 프로그램 종료하거나 로그를 남긴다
  • c++, Ada Java Javascript 같은 언어는 예외처리가 내장 되어있다
  • 조건문을 이용해 예외처리 루틴을 작성한다
  • 대표적인 예외의 원인
    • 컴퓨터 하드웨어 문제
    • 운영체제의 설정 실수
    • 라이브러리 손상
    • 사용자의 입력 실수
    • 받아들일 수 없는 연산
    • 할당하지 못하는 기억 장치 접근

Java의 예외 처리

  • java는 예외를 객체로 취급하며, 예외와 관련된 클래스를 java.lang 패키지에서 제공한다

  • try ~ catch 문으로 예외처리 한다

    • try 블록코드를 수행할 때마다 예외가 발생하면, 예외를 처리하는 catch 블록으로 이동하여 예외 처리 코드를 수행하므로 예외가 발생한 이후의 코드는 실행되지 않는다.
    • try~catch문 안에 또 다른 try~catch문을 포함 할수있다
    • try~catch문 안에서는 실행 코드가 한 줄이라도 중괄호({})를 생략할 수 없다.

구조체 메모리 사이즈 sizeof()

  • 저장된 바이트 크기를 구하는 함수
typeof struct student{
	char a;	// 1비트
    int b; // 4비트
}
  • 실제로는 8비트가 저장됨
typeof struct student{
	char a;	// 1비트
    char b;	// 1비트
    int c; // 4비트
}
  • 1비트씩 char이 저장되고 int 4비트 저장됨 총 8비트
typeof struct student{
	char a;	// 1비트
    int c; // 4비트
    char b;	// 1비트
    
}
  • 12비트 저장됨
typeof struct student{
	char a;	// 1비트
    doble b;	// 8비트
    
}
  • 16비트 저장됨
typeof struct student{
	char a;	// 1비트
    int c; // 4비트
    doble b;	// 8비트
    
}
  • 4+4+8 = 16비트 저장됨
profile
웹개발이 재밌다. 8년차 웹퍼블리싱

0개의 댓글