프로그래밍 서울대학교 통계학과 2009년 2학기 컴퓨터의 개념 및 실습 (http://dcom09.ez.ro)

Slides:



Advertisements
Similar presentations
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 프로그래밍 언어론 2nd edition Tucker and Noonan 1 장 소 개 A good programming language is a.
Advertisements

Copyright © 2015 Pearson Education, Inc. 6 장 : 프로그래밍 언어.
C 언어 Sun Moon University 1 of 25 C 언어 : 강의소개 강의실 : 산 211 담당교수 : 고경철 ( 정보통신공학과 ) 사무실 : 산학협력관 105B 면담시간 : 수업후 1 시간
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
8장 프로그래밍 언어 8.1 프로그램이란? 8.2 프로그램 언어의 역사 8.3 프로그램 설계 절차
Vision System Lab, Sang-Hun Han
슬라이드 1~21까지는 각자 복습! 슬라이드 22부터는 수업시간에 복습
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
제 1장 C 언어의 소개.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
컴퓨터 소프트웨어.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 1 강원대학교 컴퓨터과학전공 문양세.
프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과.
Ruby 프로그래밍 1 문자열 입출력 제어구조 looping 함수 정의
누구나 쉽게 즐기는 C언어 콘서트 한남대학교 컴퓨터공학과 이 재 광 교수.
제7장 제어구조 I – 식과 문장.
Power Java 제4장 자바 프로그래밍 기초.
Kasimov C언어 세미나 1st.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
제5장 제어명령
C언어: 배열 (Arrays).
컴퓨터의 기초 제 4강 - 표준 입출력, 함수의 기초 2006년 4월 10일.
출처: IT CookBook, 컴퓨터 구조와 원리 2.0 제 12장
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
제 1 장 C 언어의 개요 Google 공동 창업자, 래리 페이지와 세르게이 브린.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
10장 포인터와 문자열 포인터 기본 배열과 포인터 매개변수 전달방법 포인터와 문자열.
1장. 프로그래밍 언어, C 프로그래밍.
프로그래밍 뭔가를 해내는 방법을 기술하기 뭔가를 정의하기, 와는 다르다 “해내는” = “계산하는” 루트2를 찾는 방법
전자의료시스템 및 실습 C-언어 구 환 경희대학교 전자정보대학 동서의료공학과.
제 3 장 상수와 변수
1주차: 프로그래밍언어란 무엇인가? C 언어란? C 프로그래밍을 위한 준비
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
4장 제어문 선택문: if 문, if – else 문, switch 문
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
제1장 시스템 소프트웨어의 개요 컴퓨터시스템 및 하드웨어 구성 컴퓨터의 구성과 기능 시스템프로그램의 개요
Chapter 1 Welcome Aboard.
Lecture 01: Compiler Overview
컴퓨터 시스템 개관 시스템 프로그래밍 - Lecture #1 신라대학교 컴퓨터공학과 시스템 프로그래밍.
제1장 프로그래밍 기초
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
Introduction to Programming Language
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
컴 파 일 러 Compilers.
제어문 & 반복문 C스터디 2주차.
4장 - PHP의 표현식과 흐름 제어-.
[INA470] Java Programming Youn-Hee Han
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
Chapter 4 변수 및 바인딩.
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
제1장 정리 컴퓨터소프트웨어과 2-A반 주세호.
쉽게 풀어쓴 C언어 Express 제2장 프로그램 개발 과정 C Express.
18장. 다차원 배열 그리고 포인터.
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
C언어 개론.
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
1학기 정리 지난 학기에 배운 내용을 복습해 본다..
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
강의교안 이용 안내 *이 책에 딸린 강의자료는 교수님의 효율적인 수업진행을 돕기 위해 만들어졌습니다.
어서와 C언어는 처음이지 제16장.
SNU Programming Language
C.
printf("Global Korea\n");
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
Presentation transcript:

프로그래밍 서울대학교 통계학과 2009년 2학기 컴퓨터의 개념 및 실습 (http://dcom09.ez.ro)

프로그래밍 프로그래밍의 개념 소개 주요 프로그래밍 언어 소개 전공수업에서 다룰 전용 프로그램의 ‘스크립트’ 프로그래밍 소개 C, C++, C# Java, Python 전공수업에서 다룰 전용 프로그램의 ‘스크립트’ 프로그래밍 소개 Matlab, R SAS, S-Plus, SPSS Maple, Mathematica 기타 전공과목별 전용 통계 프로그램

프로그래밍 관련 연계 교과목 프로그래밍 언어 프로그래밍 원리 통계분석 4190.102A 002 컴퓨터 프로그래밍 (2-1 전선) 컴퓨터공학부, 2학년 컴퓨터 프로그래밍 전기공학부, 2학년, ‘프로그래밍 방법론’ 농생대, 2학년, ‘컴퓨터프로그래밍 개론’ 프로그래밍 원리 자료구조(data structure) 알고리즘(algorithm) 통계분석 326.212 전산통계 및 실험 (2-2 전필)  R을 이용한 실습

프로그래밍 뭔가를 해내는 방법을 기술하기 뭔가를 정의하기, 와는 다르다 “해내는” = “계산하는” 루트2를 찾는 방법 자장면을 만드는 방법 전화를 거는 방법 결혼을 하는 방법 뭔가를 정의하기, 와는 다르다 루트2는 제곱하면 2가 되는 수 자장면은 가장 싸고 맛있는 중국음식 전화걸기는 소리와 영상을 주고받고자 작업들어가는 것 결혼은 남자와 여자가 후손을 잘 만들어내기위한 계약 “프로그래밍 개념” 과목 PPT에서 발췌 원저: 서울대 컴퓨터공학부 이광근 교수

프로그래밍의 기본 요소 기본원소들 primitives 조합하는 방법들 means of combination 속내용을 감추는 방법들 means of abstraction 프로그램 실행과정의 이해 rule of evaluation “프로그래밍 개념” 과목 PPT에서 발췌 원저: 서울대 컴퓨터공학부 이광근 교수

프로그램을 구성하는 데 필요한 요소 기본원소들 primitives 조합하는 방법들 means of combination 0, 1, AND gates, OR gates, NOT gates, … integers, strings, booleans, +, -, =, ^, … 조합하는 방법들 means of combination rules about connecting together in a Boolean circuit rules about composing together in a compound 속내용을 감추는 방법들 means of abstraction black boxes: XOR, MUX, … black boxes: min, max, average, marry … pair, list, tree, set, vehicle, fire, … 실행과정의 이해 truth tables of Bollean gates evaluation rules of programs “프로그래밍 개념” 과목 PPT에서 발췌 원저: 서울대 컴퓨터공학부 이광근 교수

프로그래밍 언어란 무엇인가? tools for instructing machines? notation for algorithms? means for expressing high-level designs? “프로그래밍 언어” 과목 PPT에서 발췌 원저: 서울대 컴퓨터공학부 이광근 교수 tools for realization?

겉모양 속내용 “프로그래밍 언어” 과목 PPT에서 발췌 원저: 서울대 컴퓨터공학부 이광근 교수

프로그래밍 언어 프로그래밍 언어 프로그래밍 언어의 종류 사람이 이해하기 쉬우면서도 쉽게 이진코드로 번역 가능한 언어 언어의 종류별로 고유의 문법이 있다 프로그래밍 언어의 종류 기계어 어셈블리어 고급언어

프로그래밍 언어 기계어 (machine language) 어셈블리어 (assembly language) 컴퓨터가 직접 이해 가능한 언어 0과1의 조합으로 표현 사람이 이해하기는 복잡하고 어려움 예) 00011010 0001 0010 어셈블리어 (assembly language) 0과1의 조합을 상징적인 코드로 변환하여 인간의 이해도를 향상 기계어로 변환되어야 함 어셈블러(Assembler)라는 소프트웨어 필요 예) ADD 1, 2

프로그래밍 언어 고급언어 (high-level programming language) 인간이 이해하기 쉽게 만든 컴퓨터용 언어 컴파일러에 의해 기계어로 변환 FORTRAN, COBOL, PASCAL, BASIC, C, C++, Java...

프로그래밍 언어의 종류 C UNIX 운영 체제를 설계하면서 개발 시스템 프로그래밍에서 일반 응용 프로그램의 작성에 이르기까지 역사상 가장 대중적으로 성공한 언어 장점 실행 속도가 빠르다 이식성이 좋다 프로그램을 논리적인 작업 단위로 작성하고 이를 계층적으로 배치할 수 있다. 고급언어의 특성과 저급 수준 언어의 특성을 동시에 가지고 있다. C++ C 언어에 클래스 개념 (객체지향 개념)을 도입하면서 시작 순수한 의미의 객체지향 언어는 아님. 그러나 가장 대중적으로 성공한 객체지향 언어.

프로그래밍 언어의 종류 Java 선 마이크로시스템사에서 개발 간단하고 버그가 없는 전자제품 개발이 초기의 목적 현재는 Netscape과 Explore 모두에서 자바를 지원 웹상에서 에니메이션이나 고수준의 상호작용이 가능 프로그래밍 언어로서의 자바 단순 객체지향적 분산처리 컴퓨터 구조에 중립적 등등

범용 공학/통계 도구에서의 프로그래밍

통계 패키지에서의 프로그래밍

알고리즘 컴퓨터를 이용한 문제 해결 과정 알고리즘 프로그램 문제 정의와 분석 알고리즘 작성 프로그램 작성 문제 해결 방법에 대한 풀이 과정 프로그램 알고리즘을 컴퓨터가 이해할 수 있는 언어로 기술한 것 프로그래밍 언어를 선택 프로그래밍

알고리즘의 중요성 프로그램의 성능과 알고리즘 100만명을 대상으로 각자가 낸 납세액이 전체 납세액에서 차지하는 비율을 구하는 문제

 총 소요시간 : 1 + (1/100만 + 2 + 1/100만) * 100만 = 약 200만 초 알고리즘 #1 1. 100만 명의 납세액을 입력 받는다. (1초) 2. 대상자의 납세액을 읽어 온다. (1/100만 초) 3. 100만 명의 납세액 총액을 구한다. 100만 * 1/100만 초 + (100만 - 1) * 1/100만 초 4. 2의 값을 총합으로 나누어 납세 비중을 구한다. (1/100만 초) 5.아직 남은 대상자가 있으면 2~4의 과정을 반복한다.  총 소요시간 : 1 + (1/100만 + 2 + 1/100만) * 100만 = 약 200만 초

 총 소요시간 : 1 + 2 + (1/100만 + 1/100만) * 100만 = 약 5초 알고리즘 #2 1. 100만 명의 납세액을 입력 받는다. (1초) 2. 100만 명의 납세액 총액을 구한다. 100만 * 1/100만 초 + (100만 - 1) * 1/100만 초 3. 대상자의 납세액을 읽어 온다. (1/100만 초) 4. 3의 값을 2에서 계산한 값으로 나누어 납세 비중을 구한다. (1/100만 초) 5.아직 남은 대상자가 있으면 3~4의 과정을 반복한다.  총 소요시간 : 1 + 2 + (1/100만 + 1/100만) * 100만 = 약 5초

컴파일 컴파일 컴파일러(compiler) 고급 언어로 작성한 프로그램을 컴퓨터가 이해할 수 있고, 실행 가능한 기계어로 번역하는 과정 컴파일러(compiler) 번역을 담당하는 프로그램 컴퓨터 기종, 운영 체제, 프로그래밍 언어에 따라 다른 종류의 컴파일러 필요 (비교) 인터프리터(interpreter) 컴파일러는 프로그램 전체를 기계어로 번역한 후, 실행을 하는 데 반해, 인터프리터는 프로그램의 각 문장을 기계어로 번역해 순서대로 실행

컴파일 과정과 라이브러리 원시 파일 목적 파일 실행 프로그램 라이브러리 : 입출력과 같이 프로그래밍에서 공통으로 많이 컴파일 작업 (컴파일러,Compiler) 링크 작업 (링커, Linker) 원시 파일 (Source Code) *.cpp 목적 파일 (Object Code) *.obj 실행 프로그램 (Executable Code) *.exe 라이브러리 (Library) 라이브러리 : 입출력과 같이 프로그래밍에서 공통으로 많이 쓰이는 작업들을 미리 컴파일하여 목적 파일 형태로 만들어 놓은 것들의 집합

프로그램 에러와 디버깅 에러 종류 문법적 에러 (syntax error) 논리적 에러 (semantic error) 프로그램이 언어의 문법에 어긋나는 경우 발생 컴파일러가 컴파일 시 에러 정보 출력 논리적 에러 (semantic error) 프로그래머가 알고리즘을 잘못 만들었을 경우 발생 컴파일러가 검사할 수 없음, 실행 시 오동작 버그(bug) : 논리적인 에러 디버깅 : 버그를 찾아 고치는 과정

프로그래밍기초 (C언어)

프로그래밍 기초 (C 언어) C 언어에서의 함수 C 프로그램 int sum(int a, int b) {…..} 단위 작업을 수행하기 위한 명령문의 집합 C 프로그램 여러 함수의 모임 int sum(int a, int b) {…..} double avg(int a, int b) {…..} void main() { …..}

printf() 함수는 직접 작성할 필요없음 호출하여 사용하기만 하면 됨 (Library) 프로그래밍 기초 (C 언어) main() C 프로그램 내에서 반드시 정의되어야 하는 특별한 함수 프로그램이 실행될 때 가장 먼저 실행되는 함수 main() 함수 내에서 다른 함수를 호출하는 식으로 프로그램이 실행된다. #include <stdio.h> void main() { printf(“Hello World”); } printf() 함수는 직접 작성할 필요없음 호출하여 사용하기만 하면 됨 (Library)

사칙 연산을 수행하는 프로그램 #include <stdio.h> void main() { int add, sub, mul, div; add = 4 + 2; sub = 4 - 2; mul = 4 * 2; div = 4 / 2; printf (“%d %d %d %d”, add, sub, mul, div); }

변수 (Variable) 변수 변수 선언 자료형 값을 저장하기 위한 장소 (add = 4 + 2;) 변수를 사용하기 전에는 반드시 선언해야 한다. 선언할 때 변수가 저장하는 자료형이 무엇인지를 반드시 밝혀야 한다. int add;  add라는 변수는 정수만을 저장할 수 있다. 자료형 int, float, char,…...

변수 #include <stdio.h> void main() { int j; float f; char c; c = ‘a’; printf (“%d %f %c \n”, j, f, c); } 줄바꿈 기호

배열 정수를 저장하는 변수를 100개 선언하려면?? int iarray[100]; float farray[100]; 필요한 변수 100개를 모두 선언한다. 배열 (Array)를 선언한다. int iarray[100]; 정수형 변수를 100개 선언한 것과 동일한 효과 float farray[100]; 실수형 변수를 100개 선언한 것과 동일한 효과

연산자 주요 연산자 +, -, *, / % : 나머지를 구하는 연산자 ++ : 변수의 값을 1 증가하는 연산자 -- : 변수의 값을 1 감소하는 연산자

연산자 예제 #include <stdio.h> void main() { int a, b; a = 5; printf (“%d %d \n”,a, b); } 출력되는 값은?

흐름 제어 프로그램의 실행 순서를 제어하는 명령문 조건문 반복문 여러 선택 가능한 실행 순서 중에서 조건에 부합하는 문장을 선택하여 실행한다. if, switch, …. 반복문 조건이 참인 동안 일단의 문장을 반복 실행한다. for, while, do-while, …

조건문 #include <stdio.h> void main() { int a; a = 1; - 조건식이 기술된다. - 조건식은 관계 연산자나 논리 연산자로 구성된다. #include <stdio.h> void main() { int a; a = 1; if (a == 1) printf(“a = 1”); else if (a == 2) printf(“a = 2”); a ++; }

조건문 관계 연산자 논리 연산자 <, >, <=, >=, ==, != if (a != b) printf(“not equal”); 논리 연산자 ! (not), && (and), || (or) if ( (a >=b) && (a >=c) ) printf(“a is Max”);

반복문 1에서 100까지 더하는 문제 #include <stdio.h> void main() { int j, sum; sum = 0; for (j = 1; j <=100; j++) sum = sum + j; printf (“sum = %d”, sum); } 1. 초기값 2. 반복할 조건 - 조건이 만족되는 한 계속 반복된다. 4. 단계 3. 실제 반복되는 문장

반복문 1에서 100까지 더하는 문제 #include <stdio.h> void main() { int j, sum; sum = 0; j = 1; while (j <= 100) { sum = sum + j; j++; } printf (“sum = %d”, sum);