C 프로그래밍및실습 1. C 프로그래밍시작하기 세종대학교 목차 1) 프로그래밍개요 3) 첫프로그램분석 4) 출력기초 5) 입력기초 2
1) 프로그래밍개요 프로그램과프로그래밍 프로그램 운동회의순서나음악회의연주곡목순서등미리짜놓은것 예 ) TV 프로그램 컴퓨터프로그램 (program) 컴퓨터에게해야할일의순서와방법을지시하는명령어의집합 프로그래밍 프로그래밍언어를이용하여프로그램을만드는행위 3 1) 프로그래밍개요 프로그래밍언어와 C 언어 프로그래밍언어 기계어 : 컴퓨터가이해할수있는언어로 0 과 1 의이진코드로구성 어셈블리어 : 기계어의명령어를사람이이해할수있는단어로일대일로대응시킨언어 고급언어 : 사람의사고체계에적합하게만들어진언어 C 언어, C++, C#, Java, Python 등 C 언어 1970 년대에개발된프로그래밍언어로, Unix 운영체제개발에활용 현재까지도많이활용되는언어 4
1) 프로그래밍개요 C 언어의장단점 이식성이높다 ( C is a highly portable language). 구조화된프로그래밍언어이다. 하드웨어의미세한조정까지가능하다. 고급및저급수준의특징을동시에포함하고있다. 저급수준의특징을가지다보니타고급언어에비해서프로그램이해가어렵다 자유도가높다 ( 장점이자단점 ) 5 1) 프로그래밍개요 컴퓨터시스템 6
1) 프로그래밍개요 비트와바이트 컴퓨터에서처리되는정보는기본적으로 0과 1로구성된이진수로표현 비트 (bit): 한자리이진수로표현되는정보단위 바이트 (byte): 8개의비트를묶은정보단위 ( 1 바이트 = 8 비트 ) 1 바이트는 2 8 = 256 개의상태표현가능 7 1) 프로그래밍개요 분석 설계 소프트웨어개발과정 소프트웨어시스템을개발하는설계자들은 개발단계를따름 요구사항을분석한후프로그램을설계 구현 프로그램을읽기쉽고바꾸기쉽게 설계하지않으면프로그램을개선하거나 테스트 추가하기가어려움 요구사항을분석하여테스트절차서작성 관리및개선 8
목차 1) 프로그래밍개요 3) 첫프로그램분석 4) 출력기초 5) 입력기초 9 C 프로그램이만들어지는과정 소스파일 : 컴퓨터가수행해야할일을명세한텍스트파일 오브젝트파일 : 소스파일을기계어로번역된것 라이브러리파일 : 널리사용되는기능을미리구현해놓은파일 실행파일 : 오브젝트, 라이브러리, 시동코드를결합한것 컴파일 : 소스파일을기계어로변환하는것 라이브러리파일 소스파일 test.c 컴파일러 오브젝트파일 test.obj 링커 실행파일 test.exe 10
Visual Studio (VS) MS 사의통합개발환경 (IDE, 프로그램개발에관련된모든작업을처리하는환경 ) C 언어뿐만아니라, C++, C# 등다른프로그래밍언어도지원 VS를이용한 C 프로그램개발단계 1. 프로젝트생성 2. 소스코드작성 3. 프로그램빌드 ( 실행파일생성 ) 4. 프로그램실행 ( 참고 ) 강의자료에서는 VS 2010 버전으로설명교재에는 VS 2017 버전에대한설명수록 11 1단계 프로젝트생성 (1) Visual Studio 실행후새프로젝트생성 파일 새로만들기 프로젝트 (Win32 선택 ) Win32 콘솔응용프로그램선택 프로젝트이름입력 12
1단계 프로젝트생성 (2) 마법사화면에서 다음 > 선택 콘솔응용프로그램선택, 빈프로젝트체크 마침 13 2단계 소스코드작성 (1) 소스파일생성하기 소스파일우클릭 추가 새항목 C++ 파일선택 ( 주의!! 반드시파일의확장명을.c 로한다 ) 파일확장자는반드시.c 로.. 14
2단계 소스코드작성 (2) VS 창구성 프로젝트정보 편집창 : 소스작성및편집 메시지창 : 컴파일에러및기타메시지를확인가능 15 2단계 소스코드작성 (3) 코드작성 : 편집창에코드를작성한다. 프로그램의시작과끝부분은앞으로계속나오니기억해두자 16
2단계 소스코드작성 (4) 소스코드 (hello.c) #include <stdio.h> int main() { printf("hello, World!!"); } return 0; 17 3 단계 프로그램빌드 (1) 빌드 메뉴 솔루션빌드 ( 단축키 : F7) 18
3단계 프로그램빌드 (2) 컴파일및빌드결과확인 메시지창에서오류를확인한후, 오류메시지를더블클릭하거나 F4 를누르면편집창의오류위치를가르킨다 19 4 단계 프로그램실행 (1) 디버그 메뉴 디버깅하지않고시작 ( 단축키 : Ctrl+F5) 20
4단계 프로그램실행 (2) 실행결과확인 : 프로그램의실행결과가새로운창에뜬다 이부분 ( 문구 ) 은내가작성한프로그램과는아무상관없는부분이다. 오잉? 이게프로그램? 내가생각하는컴퓨터프로그램이란? 한글, 엑셀, IE 21 소스파일의실체 소스파일 (.c) 는어떤파일일까?.hwp 파일을열기위해한글프로그램이필요했듯이,.c 파일을열기위해서는 Visual Studio가필요? NO!! 소스파일 (.c) 을메모장으로열어보자 잘열리는가? YES 소스파일 (.c) 은텍스트파일그이상도이하도아니다. 22
목차 1) 프로그래밍개요 3) 첫프로그램분석 4) 출력기초 5) 입력기초 23 3) 첫프로그램분석 나의첫 C 프로그램 (hello.c) 각라인의의미 표준입출력 (standard input output) 을포함 (include) 하라 main 함수 ( 프로그램시작지점 ) main 함수시작 ( 여는중괄호 ) #include <stdio.h> int main( ) { printf("hello, World!!"); 화면에 " " 부분을출력 (print) 하라 main 함수의끝 ( 닫는중괄호 ) } return 0; 일단은그대로쓰자 프로그램의각줄을하나씩지워보고빌드 & 실행해면서어떤결과가나오는지확인해보자 24
3) 첫프로그램분석 들여쓰기와주석 : 가독성을위한수단으로문법적의미는없음 들여쓰기 : 라인의포함여부를쉽게파악하기위함 주석 : 코드에추가된프로그램에대한설명 /* 나의첫 C 프로그램 Hello world program */ #include <stdio.h> // 헤더파일포함 int main( ) // main 함수 ( 프로그램시작지점 ) { // main 함수의시작 printf("hello, world!!"); // 화면에 " " 의내용을출력 return 0; // 0을반환 } // main 함수의끝들여쓰기와주석은선택이아니라필수!! 25 목차 1) 프로그래밍개요 3) 첫프로그램분석 4) 출력기초 5) 입력기초 26
4) 출력기초 화면에내용출력하기 printf() 함수는큰따옴표의시작과끝사이에있는내용출력 큰따옴표밖의공백은출력에전혀영향없고, 내부공백만출력에영향을줌 소스코드 실행화면 printf( "Hello, world!!" ); Hello, world!! printf( " I'm a student." ); I'm a student. printf( "100" ) ; 100 Printf( "!@#$" );!@#$ 27 4) 출력기초 printf 함수를여러번사용하면? C 언어의문장은기본적으로위에서부터순차적으로수행 #include<stdio.h> int main() { printf(" 한국대학교 "); printf(" 신입생 "); printf(" 홍길동 "); 순차실행 실행화면 한국대학교신입생홍길동 } return 0; 심화 1: 위내용을띄어쓰기를넣어서출력해보자. 심화 2: 위내용을 printf() 함수하나만사용해서출력해보자 28
4) 출력기초 앞의결과를오른쪽과같이 3 개의줄에출력하려면? 개행문자 (\n) 사용 참고 ) 역슬래쉬기호 (\) 는한글폰트에서는원화기호 (\) 로보임 실행화면 세종대학교신입생홍길동 printf(" 한국대학교 \n"); 29 4) 출력기초 정수값출력 printf("%d + %d", 10, 20); 10+20 실행화면 * %d 는정수형값을출력하는서식 '%d' 는해당위치에정수를출력하라는의미 ( 서식지정자 ) 출력할값은두번째큰따옴표뒤에명시 하나의 printf 함수에여러개의서식이삽입될수있으며, 문장앞쪽의서식부터차례로대응 30
4) 출력기초 [ 예제 1.1] 실습 다음프로그램의결과를예측해보고, 프로그램을작성하여결과를확인해보자. int main() { printf("100"); printf("\n"); printf("%d", 100); printf("\n"); return 0; } int main( ) { printf("100+200"); printf("\n"); printf("%d", 100+200); printf("\n"); return 0; } 31 4) 출력기초 변수에저장된값출력 변수에저장된값도동일한방식으로화면에출력 변수에대한자세한내용은 2장에서학습 int main() { int c; // 변수 c 선언 c = 10+20; // c 에 10+20 의결과, 즉 30 저장 } printf("c=10+20 출력 :"); // " " 내용출력 printf("%d", c); // 변수 c에저장된값출력 return 0; 32
목차 1) 프로그래밍개요 3) 첫프로그램분석 4) 출력기초 5) 입력기초 33 5) 입력기초 키보드를이용하여값입력받기 scanf( ) 함수는큰따옴표 " " 안에있는서식지정자에따라값을입력받음 int main() { int a; // 변수 a 선언 printf(" 정수를입력하시오 : "); // 안내문출력 scanf("%d", &a); // 정수값입력받아 // 변수 a에저장 printf(" 입력된값 : %d", a); // 변수 a의값출력 } return 0; 34
5) 입력기초 앞의프로그램을작성하여실행하면? 화면에 " 정수를입력하시오 : " 를출력한후, 프로그램은키보드로값이입력되길기다림 아무정수나입력하고 [Enter] 키를치면, 나머지부분이실행됨 실행화면 정수를입력하시오 : 15 입력된값 : 15 35 5) 입력기초 scanf() 함수사용법 scanf("%d", &a); 변수앞에 & 를반드시붙이자 키보드로입력된정수값을변수 a에저장 %d: 입력되는값을정수로해석하라는의미의서식지정자 printf 함수에서와달리, 변수 a 앞에 & 기호를붙여야한다. 이유는나중에 여러개의정수입력받기 scanf("%d%d", &a, &b); 36
5) 입력기초 [ 예제 1.2] 실습 ( 변수와 printf, scanf 를여러번사용 ) int main() { int id; int age; // 변수선언 printf(" 학번입력 : "); scanf("%d", &id); printf(" 입력학번 : %d\n", id); printf(" 나이입력 : "); scanf("%d", &age); printf(" 입력나이 : %d\n", age); 실행화면 학번입력 : 1601111 입력학번 : 1601111 나이입력 : 20 입력나이 : 20 // 안내문출력 // 값입력 // 입력된값출력 } return 0; 37 5) 입력기초 [ 예제 1.3] 실습 학번과나이를 scanf 함수를한번만사용하여입력받아다음과같은실행결과가나오도록프로그램을수정하시오. 실행화면 학번과나이입력 : 1601111 20 입력학번과나이 : 1601111 20 38
집에서 Visual Studio 설치방법 집에서 visual studio 를설치할수있습니다. ( 실습시간에이용한버전은 2012 버전입니다.) 1. https://www.visualstudio.com/ko 위링크로접속하여 windows 용 community 2017 을설치한다. (Windows 에 C++ 개발환경을선택 ) 이용방법 2. visual studio 를실행후파일 -> 새로만들기 -> 프로젝트 -> 콘솔응용프로그램선택 -> 저장위치선택 -> 빈프로젝트체크 3. 솔루션탐색기에서소스파일우클릭 -> 추가 -> 새항목을통해새파일을만들어준다.(crtl+shift+a) 39 클릭 40