프로그램 원리와 이해 2012.03.07 1주차 강의자료.

Slides:



Advertisements
Similar presentations
프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
Advertisements

1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
컴퓨터와 인터넷.
Java IT응용시스템공학과 김형진 교수 1장. 컴퓨터와 프로그램 그리고 자바 public class SumTest {
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
2장 프로그래밍과 운영체제 1. 프로그래밍 언어(Programming Language) 2. 프로그램 설계
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++로 프로그래밍한다는 것의 의미 세상에서 가장 간단한 C++ 프로그램
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++ 프로그래밍 기초 : 객체지향의 시작 C++로 프로그래밍한다는 것의 의미
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Ⅰ. 클라이언트 스크립트 Ⅱ. 서버 스크립트 그렇다면 프로그래밍 언어를 수행하는 컴퓨터의 개념적인 구조를 살펴 본다면, 프로그래밍 언어가 무엇인지 이해하는데 도움이 될 것입니다. 현재 컴퓨터 구조의 모태가 되고 있는 폰 노이만 구조는 그림에서 보는 것과 같이, 명령어와.
Java 1장. 컴퓨터와 프로그램 그리고 자바 public class SumTest {
Power Java 제3장 이클립스 사용하기.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
알기 쉽게 해설한 Java 8th edition
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
컴퓨터 프로그래밍 기초 [Final] 기말고사
C 언어 1 1주차 C언어 시작하기 - 1차시 C 언어 특징 및 프로젝트 생성 Programming Language.
JSP Programming with a Workbook
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
1. C++ 시작하기.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
C#.
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
4장 순서도와 프로그램 논리 1. 절차의 표현 2. 순서도(flowchart) 3. 프로그램 논리 4. 순서 논리
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
제 1장. C++ 시작하기.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
연산자 (Operator).
프로그래밍 원리 Chapter 05 자바스크립트 기초 신한대학교 IT융합공학부 박 호 균.
에어 조건문.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
웹디자인
제4강 처리장치 1.
자바 5.0 프로그래밍.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Part 1 개요 Chapter 1 : 컴퓨터와 프로그램 그리고 자바 Chapter 2 : 자바의 환경
3강. 컴퓨터와의 기본적인 소통수단 - I 연산자란? 컴퓨터와 소통하기 위한 다양한 방법들
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
암호학 응용 Applied cryptography
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Chapter08 JavaScript 시작하기
AT MEGA 128 기초와 응용 I 기본적인 구조.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
Flow Diagram IV While.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
공학도를 위한 C언어 프로그래밍실습1 -통합개발환경 사용법-
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
TVM ver 최종보고서
Numerical Analysis Programming using NRs
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
7 생성자 함수.
1장. C Language Synopsis.
6 객체.
Presentation transcript:

프로그램 원리와 이해 2012.03.07 1주차 강의자료

목 차 1 컴퓨터와 프로그램 2 프로그래밍과 프로그래밍 언어 3 프로그램 논리 4 변수

1. 컴퓨터와 프로그램 1. 컴퓨터는 무엇을 실행하는가? 1.1 컴퓨터가 실행하는 것 2. 컴퓨터의 기능 3. 컴퓨터 하드웨어와 소프트웨어 3.1 하드웨어(Hardware) 3.2 소프트웨어(Software) 4. 컴퓨터는 어떻게 실행하는가? 4.1 컴퓨터와 사람의 상호작용 4.2 컴퓨터가 어떻게 프로그램을 실행하는가?

1.1 컴퓨터는 무엇을 실행하는가? 컴퓨터를 사용하는 한 순간 컴퓨터는 무엇을 하고 있는가? 컴퓨터를 통해 다양한 일들을 하고 있지만, 공통적인 것은 컴퓨터가 소프트웨어(프로그램)를 실행 한다는 것이다.

1.2 컴퓨터의 기능 인류 탄생이래로 컴퓨터는 최고의 발명품 컴퓨터는 인간의 물리적인 면이 아닌 지적인 면을 도와주기 위해 개발된 발명품 컴퓨터는 인간과 비슷한 5대 기능을 가진 발명품으로 개발 입력기능 기억기능 연산기능 제어기능 출력기능

1.2 컴퓨터의 기능 [그림1-2] 사람의 기능과 컴퓨터의 기능

1.3 컴퓨터 하드웨어와 소프트웨어 컴퓨터는 기계에 해당하는 하드웨어 부분과 어떤 일을 어떻게 처리할 것인가를 정해 놓은 프로그램에 해당하는 소프트웨어 부분으로 구성 하드웨어(Hardware) 사람의 신체(몸, 뼈, 살)와 같은 역할 전자공학의 발달로 인하여 급속도로 발전 소프트웨어(SoftWare) 사람의 두뇌(뇌 속에 들어 있는 지식, 정보)와 같은 역할 하드웨어에 비해 느린 속도로 발전 이유 : 효율적인 개발방법론의 부재, 개발 인력의 부족, 적용분야의 폭발적 증대 등

컴퓨터나 인간이나 진짜 중요한 것은 소프트웨어다 1.3 컴퓨터 하드웨어와 소프트웨어 컴퓨터 하드웨어는 좋은데 소프트웨어가 형편없다 => 쓸모 없는 컴퓨터 인간 신체(하드웨어)는 멀쩡한데 머리 속에 든 것(소프트웨어)이 없다 => 쓸모 없는 인간 컴퓨터나 인간이나 진짜 중요한 것은 소프트웨어다

1.3.1 하드웨어(Hardware) 컴퓨터를 구성하는 전자, 기계장치 입력장치 기억장치 중앙처리장치 출력장치 입력장치 기억장치 중앙처리장치 출력장치 (연산장치, 제어장치)

왜냐하면 컴퓨터 속에서 대부분의 생활이 이루어지기 때문이다. 1.3.2 소프트웨어(Software) 사람과 비교하면 뇌 속에 들어있는 정보 컴퓨터 하드웨어에서 실행되는 모든 프로그램 IC 칩(chip)은 하드웨어지만 칩 속에 들어 있는 정보는 소프트웨어 현재를 컴퓨터 세상이라고 한다. 왜냐하면 컴퓨터 속에서 대부분의 생활이 이루어지기 때문이다. 더 정확하게 표현하면 소프트웨어 세상이다. 컴퓨터는 소프트웨어로 동작하기 때문이다

1.3.2 소프트웨어(Software) 소프트웨어의 구분 시스템 소프트웨어 응용 소프트웨어 하드웨어를 관리하는 운영체제, 프로그램 번역기 등 응용 소프트웨어 응용패키지 문서편집기, 데이터베이스관리시스템(DBMS), 그래픽 편집기등 사용자 프로그램 사용자가 작성한 프로그램

1.4 컴퓨터는 어떻게 실행하는가? 컴퓨터에게 어떻게 일을 시키는가? 컴퓨터는 사람이 시킨 일을 어떻게 실행하는가?

1.4.1 컴퓨터와 사람의 상호작용 컴퓨터는 전기를 통하여 동작함 ‘전기가 흐른다’,‘흐르지 않는다’만 기억하는 2진법 컴퓨터 자연어를 사용하는 사람과 2진법을 사용하는 컴퓨터의 상호작용 방법

1.4.1 컴퓨터와 사람의 상호작용 사람의 언어를 컴퓨터가 인지 컴퓨터 언어를 사람이 사용 인공지능(Artificial Intelligence) 분야에서 부분적으로 자연어 인식 현재 이 방법은 작고 간단한 응용에서 성과를 내고 있다 자연어 처리분야의 획기적 발전이 이루어질 경우 응용 분야 확대가 기대됨 컴퓨터 언어를 사람이 사용 컴퓨터 개발 초기에는 2진법을 이용해서 컴퓨터에게 간단한 일을 시키기도 하였다 컴퓨터 언어인 2진법만을 사용해서 컴퓨터를 사용 한다는 것은 사람에게는 불가능 한 일이다.

1.4.1 컴퓨터와 사람의 상호작용 사람과 컴퓨터의 공동언어 사용(프로그래밍 언어) 한국인과 일본인이 상호작용을 하기 위한 방법 두 사람이 한국어로 의사소통 일본사람이 한국어를 배운다 두 사람이 일본어로 의사소통 한국사람이 일본어를 배운다 제3국어(영어, 불어, 독어 등)로 의사소통 두 사람 모두 제3국어를 배운다 컴퓨터와 사람의 의사소통은 1,2번 방법으로는 현재 불가능 컴퓨터와 사람도 제3국어에 해당되는 언어로 상호작용 프로그래밍 언어(Programming Language) 사람은 컴퓨터에게 일을 시키기 위해서는 프로그래밍 언어를 익혀 사용 2진법(0,1) 밖에 모르는 컴퓨터는 프로그래밍 언어를 어떻게 인식하는가?

1.4.2 컴퓨터가 어떻게 프로그램을 실행하는가? 프로그래밍 언어 프로그래밍 언어는 컴퓨터 전문가들에 의해 개발된다 컴퓨터 전문가들은 언어를 만들 때, 그 언어를 컴퓨터가 인지할 수 있도록 해주는 번역기도 같이 개발한다 번역기는 사용자에 의해 작성된 프로그램을 0,1로 자동으로 변환 번역된 파일(0,1로 구성된 2진 파일)은 컴퓨터에 의해 직접 실행 가능 프로그래밍 언어를 번역하여 실행하는 방법에는 현재 3가지 방법이 있다

1.4.2 컴퓨터가 어떻게 프로그램을 실행하는가? 컴파일(compile) 기법 사용자에 의해 작성된 프로그램은 컴파일러(compiler)에 의해 0과 1로 구성된 이진 파일(0과1로 구성된 파일)로 번역 컴파일러는 프로그램 언어를 개발한 전문가에 의해 개발 번역된 파일(이진파일)은 컴퓨터에서 직접 실행 [그림1-6] 번역기법

1.4.2 컴퓨터가 어떻게 프로그램을 실행하는가? 컴파일(compile) 기법 장점 단점 대표적인 언어 : C언어, C++ 프로그램이 한번 번역되어 이진파일이 만들어지면, 다음 실행부터는 번역과정 없이 이진파일만 실행하게 되므로 실행시간의 효율성이 좋다 단점 특정시스템에서 번역된 이진파일은 다른 시스템에서 실행되지 않는다 예 : 윈도우에서 번역된 이진파일이 리눅스 시스템에서 실행되지 않는다 대표적인 언어 : C언어, C++

1.4.2 컴퓨터가 어떻게 프로그램을 실행하는가? 인터프리트(interprete) 기법 프로그램을 직접 한 줄씩 번역한 다음 바로 실행시켜 그 결과를 나타내는 방식 컴파일 기법과는 달리 0과 1로 구성된 실행파일을 생성하지 않는다 [그림1-7] 인터프리트기법

1.4.2 컴퓨터가 어떻게 프로그램을 실행하는가? 인터프리트(interprete) 기법 장점 단점 배우기 쉽다 이식성이 뛰어나다 단점 실행시간이 느리다 소스가 공개된다 대표적인 언어 : HTML, 자바스크립트, Perl 등

1.4.2 컴퓨터가 어떻게 프로그램을 실행하는가? 하이브리드(hybrid) 기법 컴파일 기법과 인터프리트 기법을 모두 사용 프로그램을 번역하여 중간코드를 생성 생성된 중간 코드는 인터프리터에 의해 한 줄씩 번역되어 실행 [그림1-7] 하이브리드 기법

1.4.2 컴퓨터가 어떻게 프로그램을 실행하는가? 하이브리드(hybrid) 기법 장점 강력한 이식성(한번 작성된 프로그램은 어떤 시스템에서도 실행) 네트웍 환경에 강한 특성(실행의 적합성) 컴파일러 언어와 인터프리터 언어의 단점을 해결 대표적인 언어 : 자바(Java), C# 등

2. 프로그래밍 언어

2. 프로그래밍 언어 사람과 컴퓨터의 상호작용을 위해 개발된 언어 1950년대 컴퓨터 개발 이후에 수 많은 프로그래밍 언어가 개발되고 사라졌다 현재 수 십 종류의 프로그래밍 언어들이 사용 컴퓨터 전문가들에 의해 프로그래밍 언어 개발

2.1 프로그래밍 언어의 발전 단계 1950년 이후로 프로그래밍 언어의 발전 단계 1세대 언어 2세대 언어 0,1로 구성된 기계어. 컴퓨터가 사용하는 언어 2세대 언어 기계어에 가까운 언어. 기계어를 기호화한 언어 [그림2-4] 프로그래밍 언어의 발전 단계에 따른 세대별 구분

2.1 프로그래밍 언어의 발전 단계 3세대 언어 4세대 언어 5세대 언어 절차 지향 언어 C, 포트란, 코볼, BASIC 언어 등 C 언어는 현재까지도 광범위한 응용 분야에서 많이 사용 4세대 언어 데이터 베이스 관련 프로그램을 개발할 수 있는 언어 윈도우 환경에서 개발 비주얼베이직, 델파이, 파워빌더 등 5세대 언어 객체 지향 언어 네트웍 또는 웹 환경에서 강한 특성을 가진 언어 Java, C++, C#, ASP, JSP, PHP 등

2.2 주요 언어로 작성된 프로그램 주요 언어로 작성된 프로그램 비교 주요 프로그램 언어에 대한 전반적인 구조와 기초 지식 습득 어셈블리 언어 TEST START 0 BEGIN BALR BASE,0 USING BEGIN+2,BASE SR 4,4 L 2,=F'1' L 3,=F'100' LOOP AR 4,3 SR 3,2 BCT 3,*-4 BR 14 LTORG BASE EQU 15 END 100부터 1씩 감소시켜가면서 반복하여 숫자를 더한다

2.2 주요 언어로 작성된 프로그램 ISUM=0 DO 100 I = 1, 100, 1 ISUM=ISUM+I 포트란 프로그램 ISUM=0 DO 100 I = 1, 100, 1 ISUM=ISUM+I 100 CONTINUE WRITE(6,200) ISUM 200 FORMAT(8X,I5) STOP END 1부터 100까지 1씩 증가시켜 가면서 ISUM 변수에 반복하여 숫자를 더한다

2.2 주요 언어로 작성된 프로그램 IDENTIFICATION DIVISION. PROGRAM-ID. HAP. 코볼 프로그램 IDENTIFICATION DIVISION. PROGRAM-ID. HAP. //……………………생략 CONFIGURATION SECTION. FD PR-F LABEL RECORD OMITTED. 01 PR-R PIC X(80). WORKING-STORAGE SECTION. 01 LIST. 03 N PIC 9(3). 03 HAP PIC 9(4). PROCEDURE DIVISION. AA. PERFORM BB UNTIL N = 100. DISPLAY "***1부터 100까지의 합***" DISPLAY "HAP = " HAP. STOP RUN. BB. ADD 1 TO N ADD N TO HAP. 1부터 100까지 1씩 증가시켜 가면서 HAP 변수에 반복하여 숫자를 더하고 결과를 출력하다

2.2 주요 언어로 작성된 프로그램 10 SUM = 0 20 FOR I=1 TO 100 30 SUM = SUM + I 베이직 프로그램 10 SUM = 0 20 FOR I=1 TO 100 30 SUM = SUM + I 40 NEXT I 50 PRINT SUM 60 END 1부터 100까지 1씩 증가시켜 가면서 SUM 변수에 반복하여 숫자를 더한다

2.2 주요 언어로 작성된 프로그램 program hap; uses Crt; var i,sum:integer; begin 파스칼 프로그램 program hap; uses Crt; var i,sum:integer; begin clrscr; i:=0; sum:=0; for i:=0 to 100 do sum := sum + i; writeln('1부터 100까지의 합은 ===> ',sum); end. 1부터 100까지 1씩 증가시켜 가면서 SUM 변수에 반복하여 숫자를 더한다

2.2 주요 언어로 작성된 프로그램 #include <stdio.h> #include <conio.h> main() { int i, sum; clrscr(); i=0; sum=0; for (i=0; i<=100; i++) sum = sum + i; printf("1부터 100까지의 합은 ===> %d\n",sum); } 1부터 100까지 1씩 증가시켜 가면서 SUM 변수에 반복하여 숫자를 더한다

2.2 주요 언어로 작성된 프로그램 public class SumTest { Java 프로그램 public class SumTest { public static void main(String[] args) { int i, sum=0; for ( i = 1 ; i <= 100 ; i = i + 1 ) { sum = sum + i; } System.out.println("1부터 100까지의 합은 " +sum); 1부터 100까지 1씩 증가시켜 가면서 SUM 변수에 반복하여 숫자를 더한다

2.2 주요 언어로 작성된 프로그램 <HTML> <BODY> 자바스크립트 프로그램 <HTML> <BODY> <SCRIPT LANGUAGE = "JAVASCRIPT"> var sum=0; var i; for ( i = 1 ; i <= 100 ; i = i + 1 ) { sum = sum + i; } document.write("1부터 100까지의 합은 " + sum); </SCRIPT> </BODY> </HTML> 1부터 100까지 1씩 증가시켜 가면서 SUM 변수에 반복하여 숫자를 더한다

2.2 주요 언어로 작성된 프로그램 #include <iostream> int main() { int i, sum; for (i=0; i<=100; i++) sum = sum + i; std::cout << "1부터 100까지의 합은 ===>” << sum << std::endl; return 0; } 1부터 100까지 1씩 증가시켜 가면서 SUM 변수에 반복하여 숫자를 더한다

2.2 주요 언어로 작성된 프로그램 주요 언어들의 특징 대부분의 언어들은 순서, 선택, 반복 논리를 제공한다. 각 언어들이 고유의 기능과 특징도 가지지만, 대부분 비슷한 구문구조를 가진다 어셈블리 언어를 제외한 대부분의 언어들이 우리들이 일반적으로 사용하는 용어를 사용한다 (변수명 : sum, hap 등, 예약어 : for, write, print, main 등) C, Java, 자바스크립트는 거의 유사한 구문구조를 가진다 (반복문 for의 구문구조가 거의 똑 같다)

3. 프로그램의 실행

3. 프로그램의 실행 프로그램이 컴퓨터 내부에서 어떻게 실행되는가? 중앙처리장치의 기능과 중앙처리장치 내에서 프로그램의 실행과정을 학습

3.1 중앙처리장치(CPU:Central Processing Unit) 컴퓨터의 5대 기능 중에서 제어기능과 연산기능을 합쳐 하나의 칩(chip)으로 만든 것을 CPU 또는 마이크로 프로세서(micro processor)라고 함 [그림2-14] 컴퓨터의 5대 기능과 중앙처리장치 [그림2-15] 인텔사의 CPU

3.2 중앙처리장치의 구조와 기능 중앙처리장치는 레지스터, 연산장치, 제어장치로 구성 레지스터는 임시기억장소 주기억장치로부터 읽어온 데이터나 연산장치에서 계산된 결과를 일시적으로 저장하는데 사용 [그림2-16] 중앙처리장치의 구조

3.2 중앙처리장치의 구조와 기능 중앙처리장치의 기능 연산기능 기억기능 수치연산(+,-,*,/), 논리연산(AND, OR, NOT)및 자료변환 연산(SHIFT,ROTATE) 등을 수행 ALU(Arithmetic Logic Unit)가 이 기능을 수행 기억기능 소 용량이면서 매우 빠른 기억장치 기억장치로 부터 연산을 위해 가져온 데이터나 연산기능에 의해 연산된 결과를 임시 저장하기 위해 사용하는 기억장치

3.2 중앙처리장치의 구조와 기능 중앙처리장치의 기능 전달기능 제어기능 데이터를 처리하기 위해 주변장치로부터 데이터를 가져오거나 계산결과를 주변장치에게 전달하는 기능 제어기능 인간의 중추신경에 해당되는 부분으로서 데이터를 가져오고 연산하고 그 결과를 저장하는 모든 제어를 담당

3.3 프로그램의 실행 프로그램이 실행되기 위해서는 하드 디스크에 저장된 프로그램이 주기억장치(Main memory)에 로드 되고 로드된 주기억 장치의 주소를 중앙처리장치에 전달하면 중앙처리장치는 그 주소에 있는 데이터를 하나씩 가져다 처리

3.3 프로그램의 실행 프로그램 A = 4 B = 8 C = A+B [그림2-17] 두 개의 수를 더하는 연산장치와 제어장치의 동작형태

4. 프로그램 논리

4. 프로그램 논리 프로그램을 배울 때의 어려운 점 구조적 프로그래밍(Structured Programming) 컴퓨터를 통해 해결하려는 문제를 컴퓨터가 인식할 수 있는 절차로 변환시키는 것이 어렵다 구조적 프로그래밍(Structured Programming) 1970년대 개발 모든 프로그램을 3가지 논리 요소만 가지고 기술 순서 논리 선택 논리 반복 논리

4.1 순서 논리 일상 생활에서도 순서 논리가 있다 “일어난다=>아침식사”는 반드시 순서에 의해 이루어져 되는 논리 프로그램에서 순서논리는 프로그램을 실행할 때 순서에 따라 차례대로 실행 해야 한다는 의미 1번이 실행된 후에 2번이 실행되어야 한다 만일 2번이 1번보다 먼저 실행된다면, 결과를 예측할 수 없다 [그림3-2] 두 개의 숫자를 더하여 출력하는 문제를 해결하기 위한 순서도

4.2 선택 논리 일상 생활에서도 선택 논리가 있다 “일요일인 경우에 늦잠을 잘 수 있다”는 경우를 논리적으로 표현하려면 “오늘이 일요일 인가?”하는 선택 논리로 표현할 수 있다 선택 논리의 결과는 반드시 참(true) 또는 거짓(false) 중 하나가 되어야 한다 “잘 모르겠다”, “애매모호하다”등이 되면 선택 논리가 성립되지 않는다

4.2 선택 논리 프로그램에서의 선택논리는 주어진 조건의 결과에 따라 실행되는 문장이 다르다는 의미이다. 두 개의 숫자를 입력 받아 큰 수를 출력하는 프로그램의 경우 2번 문장이 선택문이다 선택문의 결과가 참이면 3번 문장을 실행하고, 거짓이면 4번 문장을 실행한다 [그림3-3] 두 개의 숫자를 입력받아 큰 수를 출력하는 문제를 해결하기 위한 순서도

4.3 반복 논리 일상 생활에서도 반복 논리가 있다 학생이 아침 6시에 기상하는 경우, 일어나서 시계를 보고 6시 이전이면 잠을 자게 된다. 잠시 후에 다시 일어나 다시 시계를 보고 아직도 6시 이전이면 다시 잠을 자게 된다. 특정 조건에 따라 반복적으로 이루어지는 경우가 반복 논리이다 반복 논리에는 반드시 선택 논리가 포함되어 있다. 선택 논리가 없는 반복 논리는 무한 반복(infinite loop)이 되어 프로그램이 영원히 끝나지 않는다

4.3 반복 논리 프로그램에서의 반복논리는 주어진 조건의 결과에 따라 반복 실행된다는 의미이다. 1부터 100까지의 정수의 합을 구하는 프로그램 2번 문장이 반복되는 부분이다 즉 1번 선택문의 결과가 참인 경우에는 2번 반복부분이 계속해서 실행된다 언젠가는 1번 선택문의 결과가 거짓이 되어야 프로그램이 종료될 수 있다 [그림3-4] 1부터 100까지의 합을 구하는 문제를 해결하기 위한 순서도

5. 변수와 데이터 타입

5. 변수 프로그램에서 다양한 종류의 데이터를 표현하기 위해 사용 변수(Variable) 프로그램에서 필요로 되는 데이터를 저장하기 위한 기억장소에 주어진 이름 변수를 사용하지 않고, 기억장치의 물리적 주소를 사용하여 프로그램을 작성한다는 것은 불가능한 일이다 [그림4-1] 주기억 장치의 물리적 주소를 사용하는 프로그램과 변수를 사용하는 프로그램

5.1 변수의 사용 대부분의 프로그래밍 언어에서 사용되는 변수는 비슷한 특징을 가진다 변수명의 규칙 변수명의 첫 글자는 반드시 영문자나 일부 특수문자(_,$)로 시작한다 변수명에는 숫자가 포함될 수 있다 변수명에는 공백이 포함될 수 없다 대소문자를 구분한다 예약어(프로그래밍언어자체에서사용되는용어)를 변수명으로 사용할 수 없다

5.1 변수의 사용 변수명의 형(type) 변수에 저장될 자료의 형에 따라 구분한다 대부분의 프로그래밍 언어에서는 다음과 같은 형을 가진다(자바스크립트 제외) • char : 문자형 • int, long : 정수형 • float, double : 실수형 • boolean : 이진형

5.1 변수의 사용 변수 사용 예 C,C++ 언어 int Count, count; double frequency = 10.9; char ch = 'a'; bool isPos= true; Java 언어 int Count, count=100 ; float f =3.14159 ; char cc = 'K' ; boolean flag = false; 자바스크립트 언어(변수의 형이 없으며, 모든 변수는 var로 선언) var count ; var ch = 'kim' ; var f = 3.14159; var count = 20;

5.1 변수의 사용 변수의 잘못된 사용 예 변수에 값을 저장하기 위해서는 배정 연산자 “=”을 사용 배정연산자 왼쪽에는 반드시 변수명만 올 수 있다 잘못된 사용 예 count + 1 = 123 + 456 ; 800 + 100 = 900 ; 900 = 800 + 100 ; total / count = average ; +24 = -24 + 48 ; 대부분의 프로그래밍 언어(C, Java)에서 변수의 사용은 비슷한 형태이다. 특수하게도 자바스크립트의 경우에만, 변수 형을 구분하지 않고 사용한다

C++ 프로그램 (파일명 : test1.cpp) #include <iostream> // 입출력을 담당 헤더파일 int main() { cout << “C++ 프로그램 시작” ; cout << “C++ 프로그램 중간” << endl ; cout << “C++ 프로그램 끝”<< endl ; return 0; }

C++ 프로그램 개발 VC++6.0을 이용한 프로그램 개발 Visual C++ 분할 컴파일 윈도 플랫폼에서 가장 많이 사용되는 개발 환경 Visual C++ 6.0과 Visual Studio.NET 버전이 있다. 분할 컴파일 대규모의 프로그램을 개발하거나 여러 프로그래머가 공동 개발을 하려면 소스 파일을 여러 개로 나누어 작성해야 한다. 각각의 소스 파일에 대한 정보, 링크할 라이브러리 정보 등을 관리해야 한다. Visual C++에서는 이런 정보들을 프로젝트로 관리한다.

C++ 프로그램 개발 VC++6.0을 이용한 프로그램 개발 Visual C++의 프로젝트에 포함되는 정보 프로그램을 만들기 위해서 사용되는 소스 파일이나 헤더 파일에 대한 정보 소스 파일을 컴파일 할 때 사용되는 컴파일 옵션 오브젝트 파일이나 라이브러리를 링크할 때 사용되는 링크 옵션 Visual C++의 프로그램 개발 프로젝트(*.dsp)를 먼저 생성하고, 프로젝트 내에서 사용될 소스 파일(*.cpp)을 생성한다. Visual C++의 워크스페이스 서로 관련된 프로젝트를 하나로 묶어서 관리 디폴트로 모든 프로젝트는 하나의 워크스페이스에 속한다. 프로젝트(*.dsp) 생성시 워크스페이스(*.dsw)가 함께 생성 1장. C언어의 개요

C++ 프로그램 개발 1단계 : 프로젝트 생성 2단계 : 소스 파일 생성 3단계 : 소스 파일 작성 프로젝트의 종류, 프로젝트명, 위치 지정 2단계 : 소스 파일 생성 소스 파일 확장자를 .cpp로 지정 3단계 : 소스 파일 작성 4단계 : 빌드(컴파일&링킹) 전처리기 처리 후 컴파일 및 링크 수행 5단계 : 실행 VC++ 안에서 직접 실행 6단계 : 디버깅 프로그램의 실행 에러를 찾음 1장. C언어의 개요

C 프로그램 개발 VC++6.0을 이용한 C 프로그램 개발 1단계 : 프로젝트 생성(1/2) 1장. C언어의 개요

C 프로그램 개발 VC++6.0을 이용한 C 프로그램 개발 1단계 : 프로젝트 생성(2/2) 1장. C언어의 개요

2단계 : 소스 파일 생성 C 프로그램 개발 VC++6.0을 이용한 C 프로그램 개발 1장. C언어의 개요 Test1.cpp C:\C++\ch01\Test1 1장. C언어의 개요

3단계 : 소스 파일 작성 C 프로그램 개발 VC++6.0을 이용한 C 프로그램 개발 1장. C언어의 개요 #include <iostream> // 입출력을 담당하는 헤더파일 int main() { cout << “C++ 프로그램 시작” ; cout << “C++ 프로그램 중간” << endl ; cout << “C++ 프로그램 끝”<< endl ; return 0; } Test.cpp 1장. C언어의 개요

C 프로그램 개발 VC++6.0을 이용한 C 프로그램 개발 4단계 : 빌드 Test.cpp ◈ 빌드 결과 1장. C언어의 개요

C 프로그램 개발 VC++6.0을 이용한 C 프로그램 개발 5단계 : 실행 ◈ 프로그램 실행 결과 1장. C언어의 개요

C 프로그램 개발 VC++6.0을 이용한 C 프로그램 개발 6단계 : 디버깅 ◈ 디버깅 화면 1장. C언어의 개요

예제 프로그램 (파일명 : test2.cpp) // 나이 입력받아 출력하는 프로그램 #include <iostream> int main() { int age; // 나이를 저장할 변수 선언 cout << “나이를 입력하세요”; cin >> age; // 키보드로부터 나이 입력받기 cout << “나의 나이는” ; // 나이 출력 cout << age << “살 입니다” << endl ; return 0; }

6장 산술 연산

6.1 산술연산자와 우선순위 프로그램에서 산술 연산은 많이 사용되는 기능이다 컴퓨터에서 사용되는 산술연산자는 배정 연산자 “=”을 제외하고는 수학에서와 같은 의미이다

6.1 산술연산자와 우선순위 기본적인 산술 연산자(C, C++ Java, 자바스크립트) 산술 연산자는 수학적인 의미에 따라 우선 순위를 가진다 [표5-1] 기본적인 산술연산자

6.1 산술연산자와 우선순위

6.1 산술연산자와 우선순위

6.2 산술연산 프로그램 수학 문제처럼 100*15를 해서 직접 구할 수 있다 변수 사용하여 연산 구문을 만들어 보자 좋은 프로그램이란 프로그램 작성자가 아니라도 쉽게 이해할 수 있도록 작성되어야 한다

6.2. 산술연산 프로그램 잘 작성된 프로그램의 순서도

6.2. 산술연산 프로그램 잘 작성된 프로그램과 실행결과

6.2 산술연산 프로그램 총판매액 = 판매액 * 수량; 판매이익 = (판매액-원가) * 수량;

6.2. 산술연산 프로그램

6.2. 산술연산 프로그램

6.2. 산술연산 프로그램

6.2. 산술연산 프로그램 같은 값을 가지므로 한 개의 변수만 사용하는 프로그램을 고려할 수 있으나, 프로그램의 이해성과 적응성을 위해 3개의 변수를 사용하는 것이 원칙

6.2. 산술연산 프로그램

6.2. 산술연산 프로그램