Download presentation
Presentation is loading. Please wait.
1
제 7 강 C언어의 기본 구문(Syntax)
2
개요 C언어 프로그램의 기본 구성 문법
3
실습 directory mkdir lab07 cd lab07
4
언어 ? 言語 Language main(){ printf("Hello"); } 컴파일러 source program source code machine code
5
자연 언어 Alphabet: a,b,c,d,…, A,B, ㄱ,ㄴ,ㄷ,ㅏ,ㅕ 구두점, 특수 기호: ~!@#$%^&*().,;:
단어: 대한민국, America, soccer 문장: “오늘은 월드컵 4강 경기가 있는 날입니다.” 글: 관련된 여러 문장의 순서적 모임
6
프로그래밍 언어 alphabet: a,b,c,d,…A,B,C,D C언어에서 한글은 되지 않음.
특수 기호: ~&*%.;:"’\ etc. token: 독립된 의미를 가진 최소 단위 korea, i, number_1, &, ;, etc. sentences: 컴퓨터에게 완전한 하나의 동작을 지시 program: 프로그래머가 원하는 일 (task)을 완성하도록 여러 개의 문장으로 구성함.
7
자연어와 C언어 알파벳: 유사함 구두점, 특수 기호: 유사 단어 : 토큰 문장:문장 글: 프로그램
8
소스 코드에 사용하는 글자 set 26x2 alphabet A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z Numerals 29 graphic characters ! " # % & ’ ( ) * + , - . / : ; < = > ? [ \ ] ˆ _ { | } ˜ 폰트에 따라 \ 대신 \ 로 보이기도 함
9
Quiz 07_01
10
영어의 구문 규칙 <sentence> <noun_phrase> <verb_phrase>
<noun_phrase> <determiner> <noun> | <pronoun> | <proper noun> <verb_phrase> <verb> | <verb ><noun_phrase> <verb> go | kick | … <determiner> a | the <noun> table | ball | … <pronoun> I | he | they <proper noun> Sandra | Boa |
11
문장 생성의 예 <S> <NP> <VP>
<pronoun> <VP> He <VP> He <V> <NP> He kicked <NP> He kicked <Det> <N> He kicked the <N> He kicked the ball
12
실습 (lab07_01) 아래 문법을 이용하여 “I love Boa” 라는 문장을 생성해보라 파일명 sentence.txt
<S> <NP> <VP> <NP> <Det> <N> | <pronoun> | <proper noun> <VP> <V> | <V> <NP> <V> go | kick | love | … <Det> a | the <N> table | ball | … <pronoun> I | he | they <proper noun> Sandra | Boa |
13
C 언어의 구문 규칙 예제 letter_or_digit - letter_or_digit ::= letter |digit
- letter ::= lowercase_letter|uppercase_letter - lowercase_letter ::= a | b | c | ... | z - uppercase_letter ::= A | B | C | ... | Z - digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 identifier ::= (letter | underscore) {letter_or_digit}* underscore ::= _
14
C언어의 구문 규칙 (예제) 다음중 이름(identifier)으로서 사용될 수 없는 것은? A 점수 1_AB _the_new_value_is AB and CD -value
15
예약어(keyword)
16
Quiz 07_02
17
C언어의 구문 규칙: 상수(constant)
정수: 0, 1, , 실수: 0.12, , , E23 문자: ’a’ ’1’ ’$’ 문자열: "hello" "this is a sample"
18
띄어쓰기 자연언어: 단어와 단어는 띄어쓴다. 인용 부호 내에서는 예외이다. I love Korea (O) Ilove Korea (X) "Ilove Korea"는 틀렸다 (O) C언어: 토큰과 토큰은 띄어 쓴다. 단 문맥으로 보아 구분이 명확한 것은 붙여써도 상관없다. int main ( ) { printf ("Hello") ; } int main(){printf("Hello");}
19
Hello world의 분석 #include <stdio.h> /*
* programmed by Sehyeong Cho */ int main( ) { // printf prints to the screen printf("안녕하세요.\n"); } Token 찾아 보기 블랭크 집어 넣기 줄 바꾸어 보기
20
전처리 명령 preprocessing directives #include ... #if ... #define ...
컴파일러가 처리하기 전에 text로서 대체됨
21
실습(lab07_02) 앞의 프로그램을 두개의 파일 hello2.c와 hello2.h로 나눈다.
#include <stdio.h> main(){ #include "hello2.h" } hello2.h에 들어갈 내용: printf("Hello, world\n"); gcc hello2.c로 컴파일하여 실행하여보라.
22
Comments Surrounded by /* and */ Not effective if surrounded by " "
"Hello /* there */" Cannot surround another comment /* /* Comment1 */ /* Comment2 */ */ Single line comment: //
23
실습(lab07_03) Single line comment 파일명: comment.c
hello.c와 동일한 내용의 파일을 작성하되, comment를 모두 single-line comment로 바꾼다. 또, single-line comment는 multi-line comment (/* ... */)로 바꾼다. 컴파일, 수행하여 이상 없음을 확인하고 제출. 제한 시간: 2분
24
문자열(string) 상수 문자열 상수 내 줄바꿈 불가 또는 비권장 "This is a wrong example"
"This is a right\n example" "(double quote)와 ’(single quote)는 다름. 문자열 내에 "을 넣으려면? "He said, \"yes\"." 문자열 내에 \을 넣으려면? "Backslash is \\" 너무 길어서 어쩔 수 없이 줄을 바꾼다면? "This is a really long line of string,\ and I used two lines to write it."
25
examples main(){ printf("Hello, world"); printf("안녕하세요.\n");
everyone."); } 출력 결과는? Hello, world안녕하세요. Hello, everyone.
26
lab07_04 다음의 프로그램을 수정하여 올바르게 만들어 실행하여보고 제출하라.(hello3.c)
#include <stdio.h> main( ) { // printf prints to the screen printf(’안녕하세요.\n’); }
27
lab07_05 다음과 같은 출력을 하는 프로그램을 작성하라. print.c 출력 결과: He said, "Yes."
28
lab07_06 다음과 같은 형태의 출력을 하는 프로그램을 작성하라. 파일: print2.c
출력 결과: 따옴표는 \” 을, backslash는 \\ 을, 줄바꿈을 하려면 \n을 사용하면 출력할 수 있다.
29
Indentation (들여쓰기) #include <stdio.h> /*
* programmed by Sehyeong Cho */ int main( ){ // printf prints to the screen printf("안녕하세요.\n"); }
30
Windows programmers #include <stdio.h> /*
* programmed by Sehyeong Cho */ main( ) { // printf prints to the screen printf("안녕하세요.\n"); }
31
Bad indentation style:an example
#include <stdio.h> /* * programmed by Sehyeong Cho */ main( ) { // printf prints to the screen printf("안녕하세요.\n"); }
32
Summary 구문 규칙 해독 방법 comment /* */ // 문자열(string)
전처리기 indentation
33
제 7 강 끝.
Similar presentations