윈플

소수란?
: 1과 자기 자신만으로 나뉘는 1보다 큰 양의 정수


소수 판별 문제
: 임의의 정수를 입력하여 소수를 판별하는 순서도 작성.


C언어로는

for( i=2; i<x; i++)
{
if( x%2 == 0 ) printf("소수입니다.');


 

순서도.

A를 입력받고

J는 2부터 A를 % 연산하여서 판별해 낸다. 

















 소수의 합 문제
: 임의의 양의 정수를 입력받아, 그 안에 포함된 소수의 합을 구하는 순서도 작성.
 

C언어로는
// 함수사용
int prime( int number) 
{

int cnt;
for ( cnt = 2; cnt < number; cnt++)
{

if ( number % cnt == 0 ) return 0;

}
return number; 

}

순서도.

 
A를 입력

sum을 0으로 초기화

 J와 K는 2부터 시작해서 1씩 증가하며

MOD ( K, J ) = 0 이고 K=J 이면 소수이므로 sum에 더한다.


K가 입력받은 값 A보다 크다면 SUM을 출력하고 끝. 

Comment +2

수열 응용? 하지만 그래봤자 수열입니다.

1 - 2 + 3 - 4 + .... + 99 - 100 까지의 합계를 구하는 순서도.

C언어로는

 for ( i = 1; i<=100; i++)                 or         while(i<=100)
{                                                          {
        if(i%2 == 1)                                            if(i%2 ==1) 
                  sum += i;                                            sum +=i;
        else                                                     else 
                   sum -=i;                                            sum -=i;
}                                                                  i++; 
                                                            }


단순히 1부터 100까지 구하는 곳에서 조건문을 통해 +,-을 고르게 했습니다.

보시면 이번엔 조건문을 추가했는데 순서도에도 비슷한 역할을 하는 스위칭 변수를 사용하거나 아니면 

그대로 조건을 통해서 구현하면 됩니다.

 














Mod ( i, 2 ) = 1  즉 i % 2 이 1이면 홀수 이므로 + 아니라면 
짝수이므로 - 하는 부분입니다. 

스위칭 변수가 아니라 조건문으로 그냥 했습니다.














이번엔 수학으로 따지면 등비수열?

1/2 + 2/3 + 3/4 + ... + 49/50 까지의 합계를 구하는 순서도 작성.


C 언어로는

 for ( i = 1; i<50; i++)                 or         while(i<50)

{                                                         {
        sum += i/(i+1);                                    sum += i/(i+1);
                                                                 i++;
}                                                          }

/라고 해서 특별한 게 아니라 1/2 가 i/i+1이라는 규칙만 찾는다면 

이전에 다뤘던 수열과 별다를게 없다.


 











설명이 필요없음. 

Comment +0

정보처리기사 실기 시험위주로 하겠습니다 일단은..

1부터 100까지의 합계를 구하는 순서도를 작성하시오.

1+2+3+ .... + 100 

C언어로보면 

for( i=1;  i<=100; i++)         또는   while(i<=100)
     sum += i;                                sum +=i++;


( 혹시나 해서... sum += i 는 sum = sum + i 와 같습니다 )

핵심은 i 를 1부터 100까지 1씩 증가시키며 sum은 i값을 누적해서 저장하면 됩니다.

이걸 순서도로 그려야 되는데

방법이 너무 너무 많습니다!! 그래봤자 7가지지만 설명하려면 너무 많습니다.



몇 가지만 보겠습니다.





1. 초기값이 i = 0 , sum = 0 인 경우



i 가 0이므로 i를 먼저 1 증가시켜줘야 합니다. 




그리고 sum이 0이니깐 그대로 i와 sum을 sum에 저장시킵니다.



그리고 조건이 맞다면 반복 아니면 출력.














2. 초기값이 i = 1, sum = 0 인 경우 입니다.



여기서는 i가 이미 1로 되어 있고 sum이 0이므로



먼저 sum에 sum과 i를 저장시키고


i를 증가시킵니다.


그리고 조건이 맞다면 반복 아니라면 출력.

 










더 많은 수열에 관한 순서도가 있지만... 

수열은 쉬워서 초기값만 확인해서 하시면 됩니다.

Comment +0

소프트웨어. 
쉬어가는 과목이랍니다.

좋은 소프트웨어란.. 좋으면 됨 (독창적 x)
 
시스템의 구성 요소 
1. 입력
2. 처리
3. 출력
4. 제어
5. 피드백 

소프트웨어 공학
: 가장 경제적이고 신뢰도 높은 소프트웨어를 만들기 위한 방법, 도구와 절차들의 체제
▶ 경제성, 적시성, 보편타당성

소프트웨어의 위기
하드웨어 발달 > 소프트웨어 발달
유지 보수의 어려움과 엄청난 비용
인력 부족, 성능 및 신뢰성의 부족 

 소프트웨어 생명 주기
: 프로젝트 비용 산정과 개발 계획을 수립할 수 있는 기본 골격, 용어 및 기술의 표준화를 가능케 함.

▶ 종류
1) 폭포수 모형 ( Waterfall Model )

타당성 검토 ▶ 계획 ▶ 요구 분석 ▶ 설계 ▶ 구현(코딩) ▶ 시험(Test) ▶ 유지보수

장점 
: 적용 경험, 성공 사례가 많음. 단계별 정의 및 산출물이 정확
단점
: 과정 중에 새로운 요구 사항 반영 어려움, 단계별로 오류 없이 다음 단계가야 하는데 현실적으로 어려움.

2) 프로토타입 모형 ( Prototype Model )
 
요구 수집 
▶ 빠른 설계 ▶ 프로토타입 구축 ▶ 고객평가 ▶ 프로토타입 조정 ▶ 구현

장점
: 사용자 요구사항의 정확한 파악 및 충실한 반영, 요구사항 변경이 용이
단점
:  사용자와 분석자의 지식과 경험의 수준 차이로 인한 
커뮤니케이션 문제가 일어날 가능성.
 
3) 나선형 모델 ( Spiral )
: 반복적인 작업을 수행하는 점증적 생명주기 모델. 큰 프로젝트에 적합
    
       ↑--------------------------------------↓
계획 수립  ▶  위험 분석  ▶ 공학적 개발  ▶ 고객 평가 
       ↑______________________________________↓

Planning  ▶  Risk Analysis  ▶  Engineering  ▶ Customer Evaluation



효과적인 소프트웨어 프로젝트 관리를 위한 3P ( 3대 요소 )
1) People 사람 인적자원
2) Problem 문제 문제인식
3) Process 프로세스 작업계획 

프로젝트 계획 수립
: 프로젝트가 수행되기 전에 소프트웨어 개발 영역 결정, 필요한 자원, 비용, 일정 등을 예측하는 작업
      ___________________________________________________________________________↓
      ↓
예측의 대상. 
: 기능, 성능, 신뢰도, 비용, 일정, 참여인원 수, 요구되는 노력, 제약조건

예측의 방법
: 유사 프로젝트 참고, 잘게 분리하여 예측, 경험적 예측 모델 활용 등 

계획 수립 시 고려사항.
1. 규모 파악 ( 제일 먼저! )
2. 복잡도
3. 구조적 불확실성 정도
4. 과저 정보의 가용성
5. 위험성

비용 결정 요소!
● 프로젝트 요소 :  제품의 복잡도, 시스템의 크디, 요구되는 신뢰도
● 자원 요소 : 인적, 하드웨어, 소프트웨어 자원
● 생산성 요소 : 개발자의 능력, 개발기간

비용 산정 기법. 

(1) 하향식 비용 산정 기법
: 전체 비용을 산청한 후 각 작업별로 비용을 세분화하여 배정하는 기법
과거의 유사한 경험을 바탕, 비과학적인 방법 
( 전문가 감정 기법, 델파이 기법 등이 있음 )

(2) 상향식 비용 산정 기법
: 하향식과 반대, 세부적인 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법.
( LOC 기법, 개발 단계별 인월 수 기법, 수학적 산정 기법 등이 있음 ) 

LOC ( Line of Code ) 원시 코드 라인 수
: 프로그램의 라인 수를 평가하여 비용을 산정하는 방법 ( 규모 = 비용 )
예측치 = { 낙관치 + ( 4*기대치 ) + 비관치 } / 6
개발기간 = 노력(인월) / 투입인원
개발비용 = 노력(인월) * 단위비용
노력(인월) = 개발기간

COCOMO ( COnstructive COst MOdel ) ( 규모 + 복잡도 = 비용 )
: 보헴이 제안. 소프트웨어의 종류에 따라 다르게 책정되는 비용산정. 같은 규모라도 프로그램의 성격까지 고려

COCOMO 프로젝트 모드 ( 개발 유형 )
1. 조직형 ( Organic Mode ) : 5만 라인 이하, 간결한 소프트웨어
2. 반분리형 ( Semi-Detached Mode ) : 30만 라인 이하, 간단한 운영체제 및 데이터베이스
3. 내장형 ( Embedded Mode ) : 30만 라인 이상, 복잡한 소프트웨어

COCOMO 모형의 종류
기본형 (Basic) : 크기와 개발 유형만을 이용
중간형 (Intermediate) : 기본형을 토대로 여러 가지 다른 요인을 추가
발전형 (Detail) : 중간형을 보완.
 

Comment +0

데이터 교환 기술.

1) 회선 교환 방식 (Circuit Switching)
방식 : 전화와 같음.
* 특징
1. 연속적인 메시지 전송에 적합
2. 고정 대역폭을 사용, 동일한 물리적 경로를 따름. 
3. 일단 통신경로가 설정되면 제약을 받지 않음.
4. 1:1통신에 좋음

통신과정 : 호(Call) 설정 -> 데이터 전송 -> 호(Call) 해제

2) 메시지 교환 방식 (Message Switching)
: 하나의 메시지 단위로 축적-전달 방식에 의해 데이터를 교환. 

* 특징
1. 전송 지연 시간이 가장 김.
2. 응답시간이 느려 대화형 데이터에 적합하지 않음.
3. 수신측이 준비 안 된 경우에 지연 후(축적) 전송(전달)이 가능.


3) 패킷 교환 방식. 
: 메시지를 일정한 길이의 패킷(데이터의 조각)으로 잘라서 전송하는 방식.

방식 : 인터넷과 같음.

* 특징
1.  패킷을 일시 저장후 수신처에 따라 적당한 경로를 선택 후 전송.

- 가상 회선 방식 ( 회선 교환 방식의 장점을 살려서 .. )
1. 송수신국 사이에 논리적 연결이 설정
2.정보 전송 전에 제어 패킷에 의해 경로가 설정
3. 패킷의 발생 순서대로 전송
4. 통신과정이 있다는 점이 회선 교환 방식과 같음. (공통점) 
 
- 데이터그램  
1. 특정 경로의 설정 없이 전송되는 방식
2. 수신 측에서  도착한 패킷들의 순서를 재정리해야 한다.


* 교환 기술에서 성능 비교 요소 : 전파 지연, 전송 시간, 데이터 처리율. 

PAD ( Packet Assembler Disassembler )
: 패킷을 분해하고 조립하는 장치

 결로 설정 ( Routing )
: 패킷을 출발지에서 목적지까지 이용 가능한 전송로를 찾아본 후에 가장 효율적인 전송로 선택.

경로 배정 요소 : 성능 기준, 경로의 결정 시간과 장소, 네트워크 정보 발생지 


프로토콜 ( Protocol )
: 전송 규약. ( 송,수신측에서 정해둔 통신 규칙 )

* 기본요소
1) Syntax 구문  : 데이터의 형식, 부호화, 신호 레벨 등을 규정
(형식)
2) Semantic 의미  : 전송제어와 오류관리를 위한 제어정보를 포함 
3) Timing 타이밍  : 기기 간의 통신 속도, 메시지 제어 순서 제어 등을 규정 

* 기능

동기제어 
분리와 재결합 (PAD)
흐름 제어
순서 제어
주소 지정
요약화(캡슐화)
에러 제어
경로 제어
다중화

OSI 7계층 구조
사용 이유 : 모듈화에 의해 설계가 쉽고, 호환성 유지가 쉬움, 한 계층을 수정할 때 다른 계층에 영향 안줌.
 

( 순서는 필히 외워야 함. )
 
소프트웨어와 같음 ( 5, 6, 7 계층 )
하드웨어와 같음 ( 1, 2, 3 계층 ) 

---------------------------------------------------------
응용 계층 : 데이터.
표현 계층 : 암호화, 압축
세션 계층 : 논리적 연결 ( 동기화 )
---------------------------------------------------------
전송 계층 : (원거리) 신뢰성있는 전송  (TCP, UDP)
---------------------------------------------------------
네트워크 계층 : 흐름제어, 오류제어  ▶ 라우터 (X.25)
데이터 링크 계층 : (인접한) 흐름제어, 오류처리, 동기화(신뢰성있는 전송) HDLC,BSC
물리 계층 : 부호화, 변조(전송 신호), 복조(디지털 정보)  (RS-232C)
----------------------------------------------------------
 
 


X.25 -> PSDN (패킷망)

: 패킷으로 전송을 할 때, 그 패킷 터미널의 표준 규격안. 패킷형태를 위한 DTE와 DCE의 인터페이스 규격을 포함.
  ITU-T 권고안
 



TCP/IP 
: 인터넷에서 사용하고 있는 프로토콜.
TCP : 전송 계층에 해당
IP : 네트워크 계층에 해당




Comment +0

데이터 : 관찰, 측정을 통해 수집한 사실이나 결과.
정보 :  데이터를 체계화 한 것.

*데이터와 정보의 진화과정.
[ 데이터 -> 정보 - > 지식 -> 지능 ]

*정보 통신의 정의
: 컴퓨터와 통신기술의 결합, 통신처리기능은 물론 정보처리기능에 정보의 변환, 저장과정이 추가된 형태의 통신.
정보처리( 데이터->처리->정보 )   +  통신처리가 합쳐진 것.

*통신의 구성 3요소
정보를 보내는 장소(정보원) ---------------- 정보를 받는 장소(정보처리원)
                                             전송매체 

데이터 통신 시스템의 기본 구성 요소.




단방향   ->               ex) TV, 라디오 매체들
반이중  -> ,<-          ex) 무전기
전이중  <->              ex) 전화

전송 제어 프로세스

 데이터 통신 회선의 접속 -> 데이터 링크 설정(확립) -> 정보 메시지 전송 -> 링크의 종료(해제) 
 -> 데이터 통신 회선의 절단


데이터 링크 제어 프로토콜
*  BSC ( Binary Synchronous Control)
특징
1. 에러제어와 흐름제어를 위해 정지-대기 방식을 사용
2. 반이중 전송만 지원


비트 위주 동기 방식 데이터 링크 프로토콜
 * HDLC (High-level Data Link Control)
특징
1. Go-Back-N ARQ 에러 제어 방식을 사용
2. 전송 단위가 프레임(Frame)
3. 비트 투과성(전송 제어상의 제어를 받지 않고 문자 코트 종류와 무관하게 투명하게 동작)
4. 단방향, 반이중, 전이중 모두 사용 가능
5. 전송 효율과 신뢰성 높음



에러 제어 방식의 종류
 

정지-대기 방식 : 송신 측이 하나의 블록을 전송하고 수신 측이 에러 발생 유무를 보내올 때까지 기다림.
연속 ARQ
Go-Back-N ARQ 에러 제어 방식 : 에러가 발생한 블록 이후의 모든 블록을 다시 재전송하는 방식.
-
선택적 재전송 : 수신 측에서 NAK를 보내오면 에러가 발생한 블록만 재전송.
: 복잡한 논리 회로 및 큰 용량의 버퍼 필요.
 
 
전송 에러 제어 방식
1. 전진 에러 수정 ( FEC, Forward Error Correction )
: 송신 측에서 오류 정정을 위한 제어 비트를 추가해서 전송하면 수신 측에서 이 비트를 사용 직접 에러를
검출 및 수정하는 방식
ex) 해밍 코드와 상승 코드가 있음.

2. 후진 에러 수정 ( BEC, Backward Error Correction )
: 데이터 전송 중 에러가 발생하면 송신 측에 재전송을 요구하는 방식.
 
### 에러 제어용 코드 부가 방식 : 패리티 검사, 해밍 코드, 순환 중복 검사! 

전송 트래픽 제어. 

 1) 흐름 제어 
       - 정지-대기 : 수신 측으로부터 ACK 받은 후에 다음 프레임을 전송하는 방식.
       - 슬라이딩 윈도우 : ACK, 확인 신호를 받지 않더라도 미리 정해진 프레임을 전송하는 방식.
                                     window(전송할 수 있는 프레임의 개수)
2) 혼잡 제어
: 대기 지연이 너무 높아지게 되어 트래픽이 붕괴되지 않도록 패킷의 흐름을 제어하는 트래픽 제어

3) 교착 상태 회피
:  교환기 내에 패킷들을 기억하는 공간이 포화 상태일 때 무한정 기다리는 것을 교착 상태.
이 교착 상태가 발생 시에 해당 장치를 패킷 버퍼를 폐기함.

 

Comment +0

이어서..

정보의 단위

비트 < 니블 < 바이트 < 워드 < 필드 < 레코드 < 블록 < 파일 < 데이터베이스

비트 : 정보의 최소 단위
니블 : 4bit
바이트 : 8bit, 문자의 최소단위
워드 : 컴퓨터가 한 번에 처리할 수 있는 단위. (쉽게 몇비트 컴퓨터)
[ Half-ward : 2byte ]  [ Full-ward : 4byte ] [ Double-ward : 8byte ] 
필드 : 파일 구성의 최소 단위
레코드 : 하나 이상의 관련된 필드가 모여서 구성
블록 : 하나 이상의 논리 레코드가 모여서 구성
파일 : 프로그램 구성의 기본 단위
데이터 베이스 : 여러 개의 관련된 파일의 집합


진법 패스.
알아야할 것은 진법 변환( 2, 8 , 16) 소수점 포함

보수
: 뺄셈을 덧셈 회로로 처리 가능하기 떄문에.

n의 보수 : 각 자리 숫자에 대해
a + a' = n      :    a'를 a에 대한 n의 보수. 
ex)  4 + 3 = 7 :   3을 4에 대한 7의 보수.

보통 1의 보수와 2의 보수가 많이 사용되며
1의 보수 :  NOT 한후에 덧셈을 한후에 자리올림수를 더한다.
2의 보수 :  NOT 한후에 1을 더하고 자리올림수는 무시한다. 
 
8 - 4 =  4
8 : 1000                  1000           1000                 0011
4 : 0100                 -0100         +1011                +0001
                         


                 -------             ------

                                           =1|0011              = 0100
                           
                             1000            1000
                            -0101          +1100
                                             -------
                                           = 1|0100    -->    = 0100   

1의 보수보다 2의 보수의 장점
: 표현할 수 있는 수의 개수가 하나 더 많다. 1의 보수보다 연산속도가 더 빠르다.


가중치 코드 : BCD(8421)코드, 2421코드
비가중치 코드 : Excess-3 코드 , Gray 코드
자기 보수 코드 : Excess-3 코드 2421 코드, 5111 코드
오류 컴출용 코드 : Hamming 코드 , 패리티 코드


3 초과 코드 ( Excess-3 코드 )
: BCD 코드에 3을 더한 것, 대표적인 자기 보수 코드, 비가중치 코드

ex) 8 : 1000 + 0011 = 1011

그레이코드 (Gray Code)
: BCD 코드의 인접하는 비트를 XOR 연산하는 만든 코드, A/D변환, 입/출력 장치 등에 사용
 다음은 변환반법


패리티 검사 ( Parity Check Code )
:  코드의 오류를 검사하는 코드, 단점으로는 2bit 오류 검출x , 정정 x
Odd Parity (다른 말로 홀수, 기수)
Even Parity (다른 말로 짝수, 우수)

해밍 코드 (Hamming Code)
: 패리티 검사의 단점을 극복하는 코드. 2bit 오류 검출 , 정정 o


Comment +3

  • kevin 2017.08.23 11:50

    도움이 많이 됐습니다 !
    마지막에 홀수 : 기수, 짝수 : 우수 인것 같네요ㅎㅎㅎ

  • ㅁㅁㅁㅁ 2018.02.28 23:28

    2의보수 계산할때 -0101 이라고돼있는데 틀렸습니다. -0100을 1011로바꾸고+1을 해서 1100이 되는건데. 본문에 -0101에서 1100으로 바뀐게 이상해서 다른곳 찾아봤습니다.

2학년때 디지털회로와 컴퓨터구조를 잘 배웠으면 헷갈릴 필요가 없는..과목입니다, 만

전 C,D 를 맞은 아픈 기억 뿐이라서 더 열심히 해야하는 과목입니다.

인터넷 강의를 듣고 중요하다고 말한것만 정리해봤습니다.

논리함수

1. 논리곱 AND
: 교집합, 곱, 직렬로 표현. 모두 1인 경우에만 1.

2. 논리합 OR 
: 합집합, 덧셈, 병렬로 표현. 하나라도 1이면 1.

3. 부정 NOT
:  여집합. 입력변수의 반대값. ex) 1->0 , 0->1

 기본공식. ( 많지만 중요한 것만.. )

▶ 분배법칙 
: A(B+C) = AB + AC
: A +BC = (A+B)(A+C)
▶ 멱등법칙
: A+ A =A , AA = A
▶ 드모르간의 법칙
-----     -- --
A + B  =  A  B
---     --   --
A B  =  A + B
 
논리게이트 
 
AND, OR, NOT, NAND, NOR, XOR, XNOR, BUFFER 등이 있지만 가장 중요하다고 생각되는 XOR 부분만 

X-OR  


                 __       __
Y = A ⊕ B  , AB + AB      ( 헷갈리더라도 양해 )
: 입력정보가 모두 같으면 0, 한개라도 다르면 1 
 


조합논리회로.
: 기억 x , 이전의 입력에 상관없이 결정.

종류 : 반가산기, 전가산기, 디코더, 멀티플렉서, 연산기 등등

반가산기 (입력 2, 출력 2 )






전가산기 ( 입력3, 출력 2 )
: 두개의 반가산기와 or연산으로 만들어짐








디코더(decoder)  <--> 인코더(encoder)
: 입력 n 이라면 출력은 2^n , NOT과 AND 게이트로 이루어져있고 주로 AND게이트라고 할 수 있다.

멀티플렉서 <--> 디멀티플렉서
: 2^n 개의 입력이 1개의 출력.


순차논리회로.
: 기억 o , 현재 상태에 따라 출력이 결정.

종류 : Flip-Flop, Register, RAM, CPU 등등 

플립플롭 (FF, Flip-Flop)
: 1bit를 기억하는 메모리 소자

종류 : RS, JK, T 등.
JK는 RS의 단점인 R : 1 , S : 1 일때  동작안되는 문제를 반전시킴으로써 해결한 것.

S R    Q
0 0  (0 ,1)
0 1  (1, 1)
1 0  (0, 0)
---------------  <-- 여기 위로는 RS와 JK가 똑같다.
1 1  (1, 0)              <-- RS는 불능, JK는 반전.

T는 한 개의 입력선으로 구성한 FF(Flip-Flop)으로 

Q(t)  Q(t+1)  T
  0        0      0
  0        1      1
  1        0      1
  1        1      0          입력 단자가 하나이며 '1'이 입력될 때 출력 단자의 상태가 바뀜.
 

Comment +0