본문 바로가기

추천 검색어

실시간 인기 검색어

C 개발 마스터클래스 1

챗봇 등 6가지 프로젝트를 함께 만들어 봅시다.
양상봉 지음
온북

2023년 08월 01일 출간

(개의 리뷰)
( 0% 의 구매자)
eBook 상품 정보
파일 정보 pdf (39.50MB)
ISBN 9791198374301
지원기기 교보eBook App, PC e서재, 리더기, 웹뷰어
교보eBook App 듣기(TTS) 불가능
TTS 란?
텍스트를 음성으로 읽어주는 기술입니다.
  • 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를​ 읽을 수 있습니다.
  • 전자책 화면에 표기된 주석 등을 모두 읽어 줍니다.
  • 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.
  • '교보 ebook' 앱을 최신 버전으로 설치해야 이용 가능합니다. (Android v3. 0.26, iOS v3.0.09,PC v1.2 버전 이상)

PDF 필기 Android 가능 (iOS예정)
소득공제
소장
정가 : 33,000원

쿠폰적용가 29,700

10% 할인 | 5%P 적립

이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.

카드&결제 혜택

  • 5만원 이상 구매 시 추가 2,000P
  • 3만원 이상 구매 시, 등급별 2~4% 추가 최대 416P
  • 리뷰 작성 시, e교환권 추가 최대 300원
시리즈 전체 2
C 개발 마스터클래스 2
44,000
C 개발 마스터클래스 1
33,000

작품소개

이 상품이 속한 분야

사람들이 코딩을 배우는데 실패하는 99%의 이유는 튜토리얼의 지옥에 빠져 있기 때문입니다.
함께 무언가를 만들지 않는 튜토리얼은 반드시 피하십시오.
"C 개발 마스터클래스"는 C 프로그래밍을 쉽게 배우고 우아하게 사용할 수 있도록, 6가지 개발 프로젝트를 통해 가이드하고 있습니다.

ChatGPT와 연계한 나만의 챗봇, 언어 변환기, 스크립트 분석기 등 6가지 프로젝트를 함께 만들어 봅시다.
C 언어를 배우는 사람들이 즐거운 개발 경험을 가질 수 있도록, 다양한 규모의 프로젝트를 성공적으로 수행해 온 20년차 개발자가 여러분의 귀중한 시간을 아껴 드립니다. 혼자 가지 말고 함께 갑시다.

책 내용 중 궁금한 점은 저자에게 물어 보세요! 저자와의 대화 채널 URL :
https://cafe.naver.com/ArticleList.nhn?search.clubid=31031000&search.menuid=5&search.boardtype=L
머리말 22

저자 소개 22
C 언어가 당신에게 줄 수 있는 것 25
누구를 위한 책인가? 28
이 책은 이렇게 합니다 30
두 권으로 구성 31
샘플 코드와 6가지 프로젝트 31
'호기심 많은 사람을 위하여' 와 '도전과제' 32
인쇄 규칙 33
여러분께 기대합니다 33


1. 개발환경을 만듭시다. 35

1.1. 여기서 살펴볼 내용 36

1.2. Windows용 개발환경 만들기 37
step1 - gcc 컴파일러 설치 37
step2 - 컴파일러용 초기 환경 설정 39
step3 - Visual Studio Code 에디터 설치 43
step4 - C 개발용 Visual Studio Code 확장팩 설치 49
step5 - Visual Studio Code용 초기 환경 설정 53
step6. 생애 첫 C 프로그램 만들기 60
bash 터미널에 대해 좀 더 자세히 알아봅시다. 64

1.3. Windows에서 실행 시 한글 깨짐 해결 방법 68

1.4 Mac용 개발환경 만들기 72
step1. gcc 컴파일러 설치 72
step2. Visual Studio Code 에디터 설치 75
step3. C 개발용 Visual Studio Code 확장팩 설치 79
step4. 생애 첫 C 프로그램 만들기 83
step5. Visual Studio Code 용 초기 환경 설정 88

1.5. Linux용 개발환경 만들기 91
step1. gcc 컴파일러 설치 91
step2. Visual Studio Code 에디터 설치 95
step3. C 개발용 Visual Studio Code 확장팩 설치 102
step4. 생애 첫 C 프로그램 만들기 106
step5. Visual Studio Code 용 초기 환경 설정 112


2. 가장 기본적인 기능을 훑어봅시다. 116

2.1. 여기서 살펴볼 내용 117

2.2. 프로그램의 시작점 main 119
main 함수 120
printf 함수 122

2.3. 변수와 상수의 차이 128
변수 128
상수 133

2.4. 숫자의 데이터 타입 136
주석으로 설명문을 달아 봅시다. 136
정수 타입 4가지 139
실수 타입 3가지 149
정수 타입에 필요한 메모리의 상대적인 관계 153

2.5. 수상한 실수값? 155
실수값은 근사값 155
원천적인 오차 156
리눅스 환경일 경우, 컴파일 에러 발생 시 (collect2: error) 162

2.6. 불리언, 문자, 문자열 데이터 타입 166
boolean 타입 166
char 타입 168
문자열 타입 170
사용된 코드들 180
호기심 많은 사람을 위하여 181

2.7. 계산하기 189
사칙연산 190
계산 결과를 출력하는 printf 191
C 언어의 나누기 194
실수의 나눗셈 / 195
정수의 나눗셈 : 몫과 나머지, / 와 % 196
사용된 코드들 198
도전해 봅시다 199
Challenge 1. 199
Challenge 2. 200
해결방법 예시 200

2.8. 변수는 데이터 임시 저장소 203
퀴즈 203
변수 만들기 205
변수의 명명규칙 206
금화 계산기 program 208
사용자와 소통하는 변수 211
사용자로부터 입력받는 scanf 212
사용된 코드들 215
도전해 봅시다 216
Challenge 1. 216
해결방법 예시 216

2.9. 선택의 순간 if 219
알고리즘(algorithm) 219
조건문 if 221
온갖 마법이 일어나는 곳, 블록 { } 223
C 언어의 비교 연산자 < > == != <= >= 224
아침에 일찍 일어나기 프로그램 226

2.10. 논리를 표현합시다 232
논리 연산자 &&, ||, ! 232
논리적 AND 232
논리적 NOT 234
논리적 OR 235
Refactoring(리팩토링), 코드의 구조조정 236
사용된 코드들 240
도전해 봅시다 241
Challenge 1. 241
Challenge 2. 241
Challenge 3. 242
해결방법 예시 242

2.11. 워밍업 프로젝트 : 홀짝 Game 246
요구 분석 246
기능① 임의의 숫자를 생성하는 rand 248
C 함수의 메뉴얼 250
매뉴얼 보는 방법 253
첫 번째 주의사항 255
두 번째 주의사항 256
기능② 플레이어의 예측을 입력받는 scanf 258
기능③ 누가 승리했는지 판단하기 259
사용된 코드들 262
호기심 많은 사람을 위하여 263

2.12. 반복은 강합니다, 루프! 266
반복문 while 266
반복문 for 271
for 와 while 선택하기 274
무한반복 274
사용된 코드들 277
도전해 봅시다 278
Challenge 1. 278
해결방법 예시 279

2.13. 홀짝 Game 개선하기 282
예 : 홀짝 게임 반복하기 282
읽기 좋게 리팩토링 286
사용된 코드들 290
호기심 많은 사람을 위하여 291
섹션을 마치며 297


3. App#1 - Up & Down Game으로 배우는 프로그램을 개발하는 초간단 절차 299

3.1. 여기서 살펴볼 내용 300

3.2. 프로그램의 구성요소를 데이터 관점에서 살펴보기 301
데이터와 알고리즘 302
UP & Down Game의 룰 304
데이터 분석 절차 304
step① 데이터 후보 골라내기 305
step② 후보 데이터 검증하기 306
step③ 데이터 타입 결정하기 308

3.3. 알고리즘 관점에서 살펴보기 309
무엇을 봐야 하나요? 309
알고리즘 분석 절차 309
step① 알고리즘 후보 골라내기 310
step② 후보 정리하기 311
step③ 후보 검증하기 312
step④ 처리 순서 작성 313

3.4. 알고리즘에 대한 Q & A 315
첫 번째 질문 : 프로그램 개발에 알고리즘이 중요한가? 315
두 번째 질문 : 문제 해결 절차만 작성하면 모두 알고리즘인가? 316
세 번째 질문 : 좋은 알고리즘을 고르는 방법이 있는가? 318
마지막 질문 319

3.5. C 언어로 바꿔 쓰기 321
데이터를 C 언어로 번역하기 321
step① 한글명을 영어로 변환하기 321
step② 소스 코드 내에 삽입하기 322
step③ 초기값 주기 323
알고리즘을 C 언어로 바꿔 쓰기 324
step① 처리 순서를 소스 코드 내에 삽입하기 324
step② 기능을 C 언어로 변환하기 325
작성 후 검토, code review 330
사용된 코드들 333
호기심 많은 사람을 위하여 334
도전해 봅시다 341
Challenge 1. 341
Challenge 2. 342
Challenge 3. 343
해결방법 예시 343
섹션을 마치며 352


4. 계산을 더 잘 다뤄봅시다 354

4.1. 여기서 살펴볼 내용 355

4.2. 사칙연산을 더 잘 다뤄봅시다 part1 356
계산식을 C 로 바꾸기 357
아주 크거나 작은 수를 C 로 표현하기 360
만유인력 계산 프로그램 361
아주 크거나 작은 수 출력하기 366
연산자 사이의 우선순위 + - * / % 367

4.3.사칙연산을 더 잘 다뤄봅시다 part2 368
증가 연산자 ++, 감소 연산자 -- 368
증감연산자 사용 시 주의사항 369
가능한 피해야 할 줄여쓰기 372
사용된 코드들 374

4.4. 비교연산을 더 잘 다뤄봅시다 375
참이란 무엇일까요? 0, 1 376
비교연산자 사이의 우선순위 378
"조건식이 참이면"의 여러가지 표현 380

4.5. 논리연산을 더 잘 다뤄봅시다 382
비교연산자와 함께 쓰이면? 382
드 모르간의 법칙(De Morgan’s Laws) 383
if 를 잘 사용하기 위한 핵심 기법. 간략화 386
논리식 간략화 386
단순하게 만들기 390
간략화가 잘 안되면 Divide and Conquer 합니다 391
피연산자의 순서에 대하여 393
사용된 코드들 394

4.6. bit 로 연산하기 395
컴퓨터의 원초적 빌딩블록 bit 396
디지트와 수의 체계 397
C 언어의 16진수 401
비트 AND 403
용도 1 : 특정 비트를 0 으로 만들 때 사용 404
용도 2 : 특정 비트 값을 알아내기 위해 사용 405
비트 OR 406
용도 : 특정 비트 값을 1 로 만들 때 사용 407
XOR 408
용도 1 : 특정 비트를 반전시키는데 사용 409
용도 2 : 암호화 및 복호화에 사용 410
왼쪽 시프트, 오른쪽 시프트 <<, >> 411
왼쪽 시프트의 용도: * 2의 배수 412
오른쪽 시프트의 용도: ÷ 2의 배수 413
1의 보수 (one's complement) 414
용도 : 어떤 값에 대한 1의 보수값을 구할 때 사용 414
사용된 코드들 417
호기심 많은 사람을 위하여 418
도전해 봅시다 426
Challenge 1. 426
Challenge 2. 427
해결방법 예시 431
섹션을 마치며 433


5. 개발자가 만들어 쓰는 함수 434

5.1. 여기서 살펴볼 내용 435

5.2. 세상에 존재하는 함수 437
C 언어의 표준 함수를 찾는 방법#1 - 레퍼런스 북 437
C 언어의 표준 함수를 찾는 방법#2 - 인터넷 사이트 440

5.3. 함수를 만들어 봅시다 444
함수를 만드는 이유 444
함수를 만드는 방법 446
함수 선언 : 사용하기 전에 선언해야 합니다 447
함수 정의 : 함수의 본체를 작성해야 합니다. 451
새 함수 printResult 를 사용해 봅시다 454
하나 더 해 봅시다 455
사용된 코드들 459
호기심 많은 사람을 위하여 460
도전해 봅시다 463
Challenge 1. 463
해결방법 예시 464
섹션을 마치며 466


6. 변수와 상수를 더 잘 다뤄봅시다 467

6.1. 여기서 살펴볼 내용 468

6.2. 상자의 용도를 결정하는 type 469
C 언어가 제공하는 기본타입 3 가지 470
정수 타입을 자세히 들여다봅시다 470
음수 값이 필요 없을 때 unsigned 472
unsigned 사용시 주의사항 473
실수 타입을 자세히 들여다봅시다 475
실수 타입: double, float 475
복소수 타입: double complex, float complex 482
void 타입 484
사용된 코드들 485

6.3. 상수를 더 잘 다뤄봅시다 487
상수를 사용하는 3 가지 방법 488
리터럴 상수 Literal Constant 489
심볼릭 상수 Symbolic Constant 491
변수상수 Variable Constant 492
사용된 코드들 494

6.4. 변수의 영역다툼 Scope 495
보여야 쓸 수 있습니다 496
아예 블럭 밖에 선언하면? 전역 변수! 499
편한 길과 바른 길 500
사용된 코드들 503
6.5. 깐깐한 타입을 유연하게 만드는 Casting 504
타입은 변환할 수 있습니다 504
타입 변환의 예외 507
사용된 코드들 508
호기심 많은 사람을 위하여 509
도전해 봅시다 513
Challenge 1. 513
해결방법 예시 514
섹션을 마치며 516


7. 주소 타입을 다뤄봅시다 Pointer 517

7.1. 여기서 살펴볼 내용 518

7.2. 주소 보고 찾아왔어요 519
주소를 보고 찾아 갑니다 520
변수의 주소를 알려주는 주소연산자 & 522
주소 타입의 변수를 선언해주는 * 523
포인터 변수가 가리키는 곳을 찾아주는 값 연산자 * 525
포인터 변수 선언문의 의미 527
* 기호에 대하여 528
조금은 특별한 void 포인터 타입 529

7.3. 포인터 타입이 필요한 이유 533
저장된 값을 바꾸는 두가지 방법 533
함수에 전달한 입력값은 '복사본' 입니다 534
주소를 함수에 전달하는 이유 537
swap 함수 만들기 540

7.4. 포인터 연산을 다뤄 봅시다 547
포인터 연산 547
포인터의 덧셈 548
포인터의 뺄셈 550
사용된 코드들 553
호기심 많은 사람을 위하여 554
도전해 봅시다 559
Challenge 1. 559
Challenge 2. 559
Challenge 3. 560
Challenge 4. 560
Challenge 5. 561
해결방법 예시 563
섹션을 마치며 569


8. 흐름 제어를 더 잘 다뤄봅시다 570

8.1. 여기서 살펴볼 내용 571

8.2. 조건을 더 잘 다뤄봅시다 572
switch 문을 다뤄 봅시다 573
switch-case 문 사용법 575
switch-case 문의 처리 흐름 578
swith 문의 다중 선택 580
간단한 조건을 다루는 조건 연산자 ? : 583
조건 연산자를 사용하기 위한 조건 585
사용된 코드들 587

8.3. 반복을 더 잘 다뤄봅시다 588
반복의 기본 589
반복문을 강제 종료하는 break 589
반복문을 계속하는 continue 591
continue 는 제거 합시다 594
반복문: do while 문 594
goto 로 만드는 반복 596

8.4. 재귀로 만드는 반복 recursion 599
재귀의 의미 recursion 599
반복형태로 개발한 경우 602
재귀형태로 개발한 경우 603
사용된 코드들 606
호기심 많은 사람을 위하여 607
도전해 봅시다 610
Challenge 1. 610
Challenge 2. 611
해결방법 예시 612
섹션을 마치며 615


9. 데이터 구조의 핵심. 배열 616

9.1. 여기서 살펴볼 내용 617

9.2. 배열의 기본적인 사용법 619
배열이란? 619
배열과 인덱스 621
배열의 구성요소는 인덱스를 사용해서 구분합니다 index 622
배열을 초기화하는 방법들 624

9.3. 배열 이름을 사용하는 방법 629
배열 이름은 무엇일까요? 629
배열 이름은 누가 어디에 사용할까요? 632
배열 이름으로 연산해 봅시다 633
배열 이름을 함수의 '입력값'으로 사용하기 637
사용된 코드들 640

9.4. 배열 사용 예1: 문자 배열과 문자열을 사용합시다 642
용사의 상태창 예 643
문자 배열과 문자열을 사용합시다 645
문자열 한 줄을 읽고 싶을 땐 fgets 652
사용된 코드들 656

9.5. 잠깐! 터미널에서 한글을 입력 받을 경우 657
첫 번째 주의사항 657
두 번째 주의사항 658
사용된 코드들 666

9.6. 배열 사용 예2: 배열의 값을 정렬해 봅시다 667
일상의 정렬 알고리즘 667
알고리즘을 C언어로 번역하기: 루프 속의 루프 670
눈여겨 볼 점 676
사용된 코드들 678

9.7. 배열의 값을 정렬하는 더 편리한 방법 679
C 언어의 정렬용 표준 함수 qsort 679
qsort 용 비교 함수 작성 규약 680
사용된 코드들 686

9.8. 차원을 여행해 봅시다. 1차원에서 2차원으로 688
배열도 차원이 있습니다 688
2차원 배열 691
2차원 배열에서 구성요소를 지정하는 방법 697
9.9. 2차원 배열을 함수에 전달하는 방법 700
2차원 배열 검색하기 700
2차원 배열을 함수에 전달 해 봅시다 703
2차원 배열은 메모리를 얼마나 차지할까요? 708
3차원 이상의 배열은 사용하면 안됩니다 709
사용된 코드들 711
호기심 많은 사람을 위하여 712
도전해 봅시다 715
Challenge 1. 715
Challenge 2. 716
Challenge 3. 718
Challenge 4. 720
해결방법 예시 722
섹션을 마치며 729


10. 변수와 상수에 질서를! 730

10.1. 여기서 살펴볼 내용 731

10.2. 관련된 변수를 묶어 주는 struct 733
구조와 구조체 타입 structure, struct type 733
구조체 타입 예시: 가로등 정보 관리 734
case1. 배열을 사용해서 가로등 정보를 개발할 경우 736
case2. 구조체 타입을 사용해서 가로등 정보를 개발할 경우 737
구조체 타입을 사용해서 변수 만들기 738
변수의 구성요소를 사용하는 방법 739

10.3 .도우미 함수를 사용해 봅시다 745
도우미 함수 만들기 745
구조체의 크기 749

10.4. 긴 타입 이름 대신 별명을 사용하는 typedef 752
구조체 타입을 간략하게 만드는 typedef 752
구조체 포인터 변수를 간략하게 표현합시다 754

10.5. 관련된 심볼릭 상수를 묶어 주는 enum 757
심볼릭 상수를 묶어주는 enum 757
열거 타입으로 변수 만들기 759
식별자를 초기화 하기 760
변수 선언이 불필요한 경우를 위한 무명 열거 타입 761

10.6. 같은 메모리를 구성요소끼리 공유하는 union 767
같은 메모리를 구성요소끼리 공유하는 union 767
유니온 타입의 사이즈 769
리틀 엔디안, 빅 엔디안 772
사용된 코드들 776
호기심 많은 사람을 위하여 777
도전해 봅시다 784
Challenge 1. 784
Challenge 2. 784
Challenge 3. 785
Challenge 4. 786
해결방법 예시 787
섹션을 마치며 792


11. App#2 - HerosQuest game. 배운 내용을 익혀봅시다 793

11.1. 여기서 살펴볼 내용 794

11.2. 개발해야 할 '기능'들을 찾아내는 또 다른 방법 796
필요한 기능을 어떻게 찾아낼 것인가? 796
'사용 사례' 기법 797
사용 사례 Use Case 798
사용 사례 다이어그램 UseCase Diagram 800
사용 사례 정의서 Use Case specification 802
요약 정리 803

11.3. 필요한 기능 목록 찾아내기 806
게임 실행 화면 806
Hero's Quest 프로그램의 '사용 사례' 808
사용 사례로부터 "기능 목록"을 도출해 봅시다 811
사후검토1: 빠뜨린 기능은 없는지 검토하기 812
사후검토2: 기능 구조도 검토 및 확정 하기 814

11.4. step1. 빈 함수로 기능을 개발하는 Top-Down 818
기능을 개발하기 818
최상위 기능은 main 함수가 됩니다 819
하위 기능이 있으면 호출합시다 820
Top-Down 식 해결책: 빈 함수로 만들기 dummy module 822

11.5. step2. 빈 함수를 실제 함수로 만들기-intro, makeDungeon 826
1. intro 함수를 실제 함수로 만들기 826
2. makeDungeon 함수를 실제 함수로 만들기 830

11.6. step3. 빈 함수를 실제 함수로 만들기-playHero, printDungeon 837
printDungeon 함수를 실제 함수로 만들기 837
playHero 함수를 실제 함수로 만들기 841

11.7. step4. 빈 함수를 실제 함수로 만들기-moveHero 847
playHero 알고리즘 작성하기 847
playHero 알고리즘을 빈함수로 바꿔 쓰기 848
빈 함수 inputCommand 를 실제 함수로 만들기 853
빈 함수 moveHero 를 실제 함수로 만들기 854
사용된 코드들 - version1 868

11.8. 개발 후 검토와 개선 아이디어 870
개발자의 친절1. 플레이 점수 계산 870
개발자의 친절2. 승패 메시지를 풍성하게 871
개발자의 친절3. 현재 상태를 플레이어에게 알려주기 873
개선 아이디어1-이동명령 추가 876
개선 아이디어2-성능 개선 878
개선 아이디어3-자동 생성 map 880
개선 아이디어4-몬스터 추가 881
개선 아이디어5-이동명령 텔레포트 추가 883
사용된 코드들 - version2 885
사용된 코드들 - version3 887
호기심 많은 사람을 위하여 890
섹션을 마치며 897


12. 문자와 문자열을 더 잘 다뤄봅시다 899

12.1. 여기서 살펴볼 내용 900

12.2. 보이는 문자와 보이지 않는 문자 901
문자란? 901
입력한 문자를 아스키 코드로 보여주는 프로그램 903
아스키 ASCII 문자 906
C언어의 내장 문자들 909
사용된 코드들 911

12.3. 문자열 처리 함수들 912
문자열이란? 913
문자열 처리 함수들 917
1) 복사용 함수 : strcpy, strncpy 919
2) 연결용 함수 : strcat, strncat, sprintf 921
3) 비교용 함수 : strcmp, strncmp 925
4) 탐색용 함수 927
4.1) 문자열 내에서 특정 문자열 찾을 때 strstr 929
NULL 사용 시 주의사항 931
4.2) 문자열에서 특정 문자를 찾을 때 strchr 933
4.3) 문자 집합과 불일치하는 첫 글자를 찾는 strspn 935
4.4) 문자집합과 일치하는 첫 문자를 찾을 때 strcspn 938
4.5) 문자집합으로 문자열을 잘라 낼 때 strtok 939
문자열 길이 계산용 함수를 만들어 봅시다 948
사용된 코드들 953

12.4. 문자열 넘침 방지 955
왜 문자 배열의 크기가 중요할까? 955
문자열을 처리할 때 오버플로우가 발생하지 않게 하려면? 956
그런데, 문자열 오버플로우가 발생하면 어떻게 조치해야 하나? 960
사용된 코드들 970
호기심 많은 사람을 위하여 972
도전해 봅시다 977
Challenge 1. 977
해결방법 예시 977
섹션을 마치며 981


2권에 대하여 983

참고자료 986

색인 988

기존의 프로그램을 C 언어로 재작성해서 성능을 작게는 10배, 많을 때는 100배 이상 빠르게 만들었습니다. 즉, 기존 프로그램의 병목현상을 제거하는데 있어 C 언어가 아주 중요한 역할을 했습니다. 똑같은 알고리즘을 사용해서 작성된 SW라도 사용한 언어에 따라 성능에 차이가 날 수 밖에 없습니다.(출처: github : speed-comparison) _25

언어 간에 우열은 없습니다. 언어가 강한게 아니라 개발자가 강한 것입니다. 이책을 모두 끝내면 여러분은 강한 개발자가 될 것입니다... 중요한 것은 C 언어로 생각하는 능력입니다. _34

가장 많이 사용되는 운영체제인 Windows, macOS, Linux 에서 개발환경을 만드는 방법을 보여 드리겠습니다. ... 컴파일러는 gcc 를 사용합니다. gcc 는 학교와 현장에서 널리 사용하는 검증된 컴파일러입니다. 에디터는 Visual Studio Code(VSCode)를 사용합니다. VSCode는 최고의 코딩용 에디터 중 하나입니다. _36

중요한 것은 각각의 명령문은 반드시! 반드시! 세미콜론 ; 으로 끝난다는 것입니다. 이 명령문은 여기서 끝내겠다고 명시하는 것입니다. 초보 때 많이 하는 실수가 명령문 끝에 세미콜론을 빠뜨리는 것입니다. 그러므로, 컴파일 에러가 발생하면 혹시 명령문 끝에 세미콜론을 빠뜨리지는 않았는지 제일 먼저 살펴보세요. _123

C 언어에서는 중괄호 { }를 사용해서 코드를 감싸서 보기 좋게 만듭니다. 코드를 양 손으로 감싸는 모습이 연상되어 재밌습니다. C 언어에서는 이렇게 중괄호 { }로 감싼 영역을 블록(block)이라고 부릅니다. "블록 내부에서 프로그램의 온갖 마법이 일어납니다." _223

논리는 생각하는 방법입니다. "논리는 참과 거짓을 명확히 밝혀 생각이 확장되도록 돕습니다." 모든 사람은 논리적 사고를 가지고 태어나지만, 논리력을 키우려면 '논리적으로 생각해야' 합니다. 타고난 천재가 아니라면 이것이 유일한 방법입니다. 규칙적으로 운동하면 근육이 강화되듯이, 일상을 논리로 생각하면 논리에 근육이 붙습니다. 떠먹여주는 지식은 근육이 될 수 없습니다. 생각은 힘든 일입니다. _238

'함수' 는 재사용할 수 있는 코드 조각을 결합하는 최고의 방법입니다. 이제 우리는 '함수' 를 사용해서 코드를 훨씬 더 읽기 쉽게 만들 수 있습니다. '리팩토링' 은 코드의 구조를 읽기 쉽게 개선하는 기술입니다. 코드를 작성하면서 중간 중간 리팩토링을 해 보았습니다. 이제 우리는 코드를 '구조조정' 할 수 있습니다. _298

C 언어의 문법과 표준함수들을 아는게 개발능력이 아닙니다. 주어진 과제로부터 데이터 구조와 알고리즘을 찾아내고 결합할 줄 아는 것이 개발능력 입니다. _302

첫 번째 질문은 "이 책에 알고리즘(algorithm)이라는 용어가 종종 등장하는데, 프로그램 개발에 알고리즘이 중요한가?" 하는 것입니다. 알고리즘은 SW 개발 뿐 아니라 요즘은 전 분야에서 널리 쓰이는 용어입니다. 용어가 널리 쓰이면 오해도 생기기 마련입니다. 가장 큰 오해는 알고리즘이 "특정한 계산"이라는 착각 입니다. 알고리즘은 특정한 계산이 아니라 "계산 할 때 따르는 방법"입니다. "알고리즘이란 '문제 해결 절차' 입니다." _315

게임의 규칙이 요구사항이라는 것과, 잘 정의된 요구사항으로부터 명사적인 요소를 골라내는 것을 보았습니다. 이제 우리는 요구사항으로부터 데이터를... 알고리즘을 추출할 수 있습니다. _352

if 문을 잘 사용하기 위한 핵심은 다음과 같습니다. "컴퓨터에 의한 선택과 결정은 아주 단순해야 한다." 만약 복잡한 결정이 요구될 경우, 컴퓨터가 처리할 수 있을 정도로 단순한 결정들로 바꾸는 것은 프로그래머가 해야 할 일입니다. 지금부터, 논리식을 아주 단순하게 만드는 방법을 몇 가지 배워 봅시다. 아주 단순하며 효과가 입증된 것들로 추려서 소개하겠습니다. _386

모든 컴퓨터 프로그램에 적용할 수 있는 기본적인 빌딩 블록이 두 가지 있습니다. 비트와 바이트 입니다. 비트를 직접 다룰 수 있는 언어는 많지 않습니다. 비트 연산은 C 언어의 대표적인 특장점입니다. _396

"함수는 코드 재사용 기술의 핵심입니다."... 그런데, 원하는 기능이 이미 표준함수로 존재한다면, 그걸 가져다 쓰는 것이 더 좋을 것입니다.
"정말 중요한 것은 Know How가 아니라 'Know What'입니다." 이 장의 초점은 세상에 존재하는 함수를 찾는 방법을 알아보는 것입니다. _435

실수 타입에서 여러분이 반드시 기억할 것은 실수값은 '근사값'이라는 것입니다. 그러므로, 유효 자릿수 이후의 숫자는 오차값이라고 보면 됩니다... 근사값끼리 같은지 비교하는 것은 결과를 예측할 수 없기 때문에, 실수값끼리 '같은지' 비교해서는 안 됩니다. _481

변수는 타입 못지않게 선언된 위치가 중요 합니다. 타입은 변수의 용도를 결정하지만, 위치는 변수를 '사용할 수 있느냐 없느냐'를 결정하기 때문입니다. 이 장의 초점은 만약 변수에 제자리라는 게 있다면, 무엇에 의해 결정되는지 알아 보는 것입니다. _495

프로그래밍에서 특별한 경우란 대부분 '잠재적 위험요소'입니다. _600

"3차원 배열은 '절대로' 사용하지 말기 바랍니다."... 만약 여러분이 프로그램을 작성하다가 3차원 이상의 배열이 필요하다면, 이렇게 생각하세요. "내가 데이터 구조를 잘 못 설계했구나!" 라구요. 이럴 때는 데이터 구조를 재검토하는 것이 좋습니다. 3차원 배열을 2차원 배열로 대체하거나 2차원 배열 몇 개로 나누어 사용하는 것으로 대부분 해결됩니다. _710

이 장의 초점은 프로그램에 필요한 기능을 찾는데 특화된 사용 사례 기법... 사용 사례가 널리 사용되는 이유 중 하나는, 개발자가 아닌 "사용자의 관점"에서 작성한다는 것입니다. 그러므로, 개발에 익숙하지 않아도, 심지어 개발을 몰라도 작성할 수 있습니다. _796

기능이 모두 개발되고 프로그램이 예상대로 동작한다고 그대로 끝나는 것이 아니라, 사후 검토하는 것을 보았습니다. 이제 우리는 개발 후 검토를 통해 기능을 개선하고 품질을 향상할 수 있다는 것을 압니다. _897

프로그램이 처리하는 모든 데이터는 결국 문자열이 됩니다. 그러므로, 개발 능력에서 문자열을 잘 다루는 것은 매우 중요 합니다. _912

오버플로가 발생하지 않게 코드를 작성하는 것이 베스트지만, 개발하다 보면 누구나 실수를 하기 마련입니다... 이번에는 일부러 문자열 오버플로를 발생시킨 후, 증상과 대응 방법을 알아보겠습니다. _960

C 개발 마스터 클래스 1권의 프로젝트 :
ㆍ App1-Up & Down 게임 개발: 프로그램을 개발하는 초간단 '절차'를 배웁니다.
ㆍ App2-HerosQuest 게임 개발: 지금까지 배운 C 언어의 '기본'적인 내용을 프로젝트를 통해 익힙니다.


[참고 : C 개발 마스터 클래스 2권에 대하여]

2 권은 실제 현업에서 다루는 주제들을 배우게 됩니다.
1권에서 배운 C 언어의 기본 기능을 더 잘 다루는 방법과, 파일, 포인터, 메모리, 만들어 쓰는 타입, 함수 포인터 등 새로운 기능을 다루는 방법을 학습하고, 난이도에 맞게 순차적으로 준비된 개발 프로젝트들을 함께 개발하다 보면, 배운 기능을 어떻게 실제 현업에서 사용하는지 자연스럽게 습득하게 될 것입니다.

C 개발 마스터 클래스 2권의 프로젝트 :
ㆍ App3-언어 변환기 개발: 파일 핸들링과, 인코더ㆍ디코더 개발 방법을 익힙니다.
ㆍ App4-스크립트 분석기(워드 카운터) 개발: 포인터 및 메모리 핸들링과, '반복ㆍ점진적' 개발 방법을 익힙니다.
ㆍ App5-APAS(대기오염정보 분석 시스템) 개발: REST API 핸들링과 여러 프로젝트에서 재사용할 수 있는 '공통 모듈'을 개발하는 방법을 익힙니다.
ㆍ App6-myChatBot 개발: ChatGPT와 연계해서 나만의 챗봇을 만드는 방법을 익힙니다. C 언어와 스크립트를 함께 사용하는 방법뿐 아니라, 다른 프로젝트에서 개발한 공통 모듈과 유사한 코드를 재사용해서 빠르게 개발하는 방법을 익힙니다.

1권에서는 기본적인 기능을 소개하지만, 1권이 끝나면 C 언어로 생각하는 능력을 가질 수 있을 것입니다.

사람들이 코딩을 배우는데 실패하는 99%의 이유는 튜토리얼의 지옥에 빠져 있기 때문입니다.
함께 무언가를 만들지 않는 튜토리얼은 반드시 피하십시오.
"C 개발 마스터클래스"는 C 프로그래밍을 쉽게 배우고 우아하게 사용할 수 있도록, 6가지 개발 프로젝트를 통해 가이드하고 있습니다.
각 프로젝트의 목표는 다음과 같습니다.

[ 1권의 프로젝트 ]
App1-Up & Down 게임 개발: 프로그램을 개발하는 초간단 '절차'를 배웁니다.
App2-HerosQuest 게임 개발: 지금까지 배운 C 언어의 '기본'적인 내용을 프로젝트를 통해 익힙니다.

[ 2권의 프로젝트 ]
App3-언어 변환기 개발: 파일 핸들링과, 인코더ㆍ디코더 개발 방법을 익힙니다.
App4-스크립트 분석기(워드 카운터) 개발: 포인터 및 메모리 핸들링과, '반복ㆍ점진적' 개발 방법을 익힙니다.
App5-APAS(대기오염정보 분석 시스템) 개발: REST API 핸들링과 여러 프로젝트에서 재사용할 수 있는 '공통 모듈'을 개발하는 방법을 익힙니다.
App6-myChatBot 개발: ChatGPT와 연계해서 나만의 챗봇을 만드는 방법을 익힙니다. C 언어와 스크립트를 함께 사용하는 방법뿐 아니라, 다른 프로젝트에서 개발한 공통 모듈과 유사한 코드를 재사용해서 빠르게 개발하는 방법을 익힙니다.

6가지 프로젝트는 20년 간 많은 프로그램을 만들고, 유지 보수한 경험과 현장의 성공과 실패, 실수로부터 배운 교훈과 통찰을 바탕으로 만들었습니다.
이 책은, 생애 처음으로 C 언어를 배우는 여러분의 귀중한 시간을 아껴 드립니다. 이제, 여러분의 C 개발 경험은 달콤해질 수 있습니다.

작가정보

저자(글) 양상봉

"프로그래밍에 대한 사랑을 발견한 20년차 개발자입니다."

개발 언어를 사용하는 사람들이 즐거운 개발 경험을 가질 수 있도록 돕는, 스윗 프로그래밍의 양상봉입니다.

초기에는 C 언어로 현장의 프로젝트를 수행할 때 어려움이 많았습니다. 어려움을 하나씩 극복해 나가면서 혼자 고민하고 고생해서 발견한 것들을 모두 이 책에 담았습니다. 여러분은 저처럼 초반의 진입장벽에 걸려 시간과 에너지를 낭비하지 않기를 바랍니다. 이 책이 끝날 때 쯤에는 그 어떤 언어보다 C 프로그래밍이 쉽고 편하게느껴질것입니다.

저는 프로그래밍에 대한 사랑을 발견하고 전자계산학과에 진학했고, AI 석사 학위를 받았고, 20년 간 SW 업계에서 일하고 있습니다.

글로벌 초대형 프로젝트인 인천국제공항 통합정보관제시스템 구축, 대형 프로젝트인 전자정부 21대 과제(기획재정부) 수행, 구축 중인 신백운공항(중국)을 오픈할지 여부를 결정하는 테스트 프로젝트 수행, 수천만에서 수억 건에 이르는 입회신청서를 실시간으로 검색하는 보험사 및 카드사용 이미지 시스템 개발, 인터넷 전화 녹취시스템 및 WhoWho 서비스 개발 등 30개가 넘는 대형 프로젝트를 성공적으로 완료했습니다.

SW 프로젝트의 인터내셔널 성공률이 평균 30%에 불과한데, 제 경우는 한 개 외에 모든 SW가 다년간 사용되었거나 현재까지 잘 사용하고 있으므로, 이 점은 특별히 자랑스럽습니다.

경력의 절반인 10년은 C, Python, 스크립트 언어 등을 사용해서 서버 프로그램을 개발해 왔습니다(백 엔드). 2017년부터는 Android 와 iOS 어플리케이션을 개발하고 있습니다(프론트 엔드). 이 경험으로부터 더 나은 책과 영상을 제작하는데 큰 에너지를 얻고 있습니다.

IT가 미래라는 것을 확신하기 때문에, 저의 목표는 모든 사림들이 코딩을 배울 수 있도록 접근성을 높이는 것입니다. 즉, 프로그래밍을 배우는 사람들이 훌륭한 학습 경험과 즐거운 개발 경험을 갖도록 돕는 컨텐츠를 제작하고 있습니다. 이를 통해 여러분이 프로그래밍하는 시간이 달콤한 시간이 되기를 바랍니다.

[주요 업무]
SW 모델러ㆍ개발자, 개발 방법론 개발자, 품질 관리자, PM(프로젝트 관리자), ISP 컨설턴트, 강사 등.

[주요 프로젝트 이력 - 모델러, 개발자, PM, 컨설턴트, 강사 등의 역할 수행]
ㆍ 전자정부 21대 과제 수행 : 디지털 예산회계시스템 고도화 사업(PM), 디지털 예산회계시스템 개발 사업(PL)
ㆍ 공항 프로젝트 수행 : 인천국제공항 IICS 구축, 신백운공항(중국) 테스트
ㆍ 이미지/OCR 시스템 개발 사업 : 삼성화재 신청서 이미지 시스템 개발, 삼성카드 입회신청서 이미지 시스템 개발, 제일제당 FAX OCR 시스템 개발, ICIS OCR 전환 개발 등
ㆍ 통신 관련 제품 개발 : 인터넷 전화 녹취 SW 개발, WhoWho SW 개발 등
ㆍ 방법론 개발 : CBD 방법론 개발, EAI 수행 방법론 개발(삼성SDS용), IV&V 방법론 개발(삼성SDS용), Y2k 수행 방법론 개발(정부용) 등
ㆍ 강의 : Together 기반의 UML 모델링 실무(삼성멀티컴퍼스), 시간관리 등
ㆍ 기타 : 정통부 4대보험 정보연계 ISP, 디지털예산회계 BPR/ISP 컨설팅, 삼성그룹EP구축 ISP, 사가시(일본) 기간행정시스템 재구축 UML 모델링 컨설팅, Y2k(미국) 등

[주요 보유자격증]
ㆍ PMP : Project Management Professional Certificate by PMI (프로젝트 관리 전문가 자격증)
ㆍ CISA : Certified Information Systems Auditor Certificate by ISACA (국제 공인 정보시스템감사사 자격증)
ㆍ 그 밖에 정보처리기사(1급), 인증심사원 등의 자격증이 있습니다.

이 책을 통해, 생애 처음으로 C 언어를 배우는 여러분의 귀중한 시간을 아껴 드리겠습니다. 혼자 가지 말고 함께 갑시다. 여러분의 C 개발 경험은 달콤해질 수 있습니다.

이 상품의 총서

Klover리뷰 (0)

Klover리뷰 안내
Klover(Kyobo-lover)는 교보를 애용해 주시는 고객님들이 남겨주신 평점과 감상을 바탕으로, 다양한 정보를 전달하는 교보문고의 리뷰 서비스입니다.
1. 리워드 안내
구매 후 90일 이내에 평점 작성 시 e교환권 100원을 적립해 드립니다.
  • - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
  • - 리워드는 1,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다.
  • - 리워드는 한 상품에 최초 1회만 제공됩니다.
  • - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
2. 운영 원칙 안내
Klover리뷰를 통한 리뷰를 작성해 주셔서 감사합니다. 자유로운 의사 표현의 공간인 만큼 타인에 대한 배려를 부탁합니다. 일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
  • 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
  • 도서와 무관한 내용의 리뷰
  • 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
  • 의성어나 의태어 등 내용의 의미가 없는 리뷰

구매 후 리뷰 작성 시, e교환권 100원 적립

문장수집

문장수집 안내
문장수집은 고객님들이 직접 선정한 책의 좋은 문장을 보여 주는 교보문고의 새로운 서비스 입니다. 교보eBook 앱에서 도서 열람 후 문장 하이라이트 하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다. 마음을 두드린 문장들을 기록하고 좋은 글귀들은 ‘좋아요’ 하여 모아보세요. 도서 문장과 무관한 내용 등록 시 별도 통보없이 삭제될 수 있습니다.
리워드 안내
  • 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
  • e교환권은 적립일로부터 180일 동안 사용 가능합니다.
  • 리워드는 1,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다.
  • 리워드는 한 상품에 최초 1회만 제공됩니다.
  • sam 이용권 구매 상품/오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.

구매 후 문장수집 작성 시, e교환권 100원 적립

    교보eBook 첫 방문을 환영 합니다!

    신규가입 혜택 지급이 완료 되었습니다.

    바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
    지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!

    교보e캐시 1,000원
    TOP
    신간 알림 안내
    C 개발 마스터클래스 시리즈 신간 알림이 신청되었습니다.
    신간 알림 안내
    C 개발 마스터클래스 시리즈 신간 알림이 취소되었습니다.
    리뷰작성
    • 구매 후 90일 이내 작성 시, e교환권 100원 (최초1회)
    • 리워드 제외 상품 : 마이 > 라이브러리 > Klover리뷰 > 리워드 안내 참고
    • 콘텐츠 다운로드 또는 바로보기 완료 후 리뷰 작성 시 익일 제공
    감성 태그

    가장 와 닿는 하나의 키워드를 선택해주세요.

    사진 첨부(선택) 0 / 5

    총 5MB 이하로 jpg,jpeg,png 파일만 업로드 가능합니다.

    신고/차단

    신고 사유를 선택해주세요.
    신고 내용은 이용약관 및 정책에 의해 처리됩니다.

    허위 신고일 경우, 신고자의 서비스 활동이 제한될 수
    있으니 유의하시어 신중하게 신고해주세요.


    이 글을 작성한 작성자의 모든 글은 블라인드 처리 됩니다.

    문장수집 작성

    구매 후 90일 이내 작성 시, e교환권 100원 적립

    eBook 문장수집은 웹에서 직접 타이핑 가능하나, 모바일 앱에서 도서를 열람하여 문장을 드래그하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다.

    P.
    C 개발 마스터클래스 1
    챗봇 등 6가지 프로젝트를 함께 만들어 봅시다.
    저자 모두보기
    저자(글)
    낭독자 모두보기
    sam 이용권 선택
    님이 보유하신 이용권입니다.
    차감하실 sam이용권을 선택하세요.
    sam 이용권 선택
    님이 보유하신 이용권입니다.
    차감하실 sam이용권을 선택하세요.
    sam 이용권 선택
    님이 보유하신 프리미엄 이용권입니다.
    선물하실 sam이용권을 선택하세요.
    결제완료
    e캐시 원 결제 계속 하시겠습니까?
    교보 e캐시 간편 결제
    sam 열람권 선물하기
    • 보유 권수 / 선물할 권수
      0권 / 1
    • 받는사람 이름
      받는사람 휴대전화
    • 구매한 이용권의 대한 잔여권수를 선물할 수 있습니다.
    • 열람권은 1인당 1권씩 선물 가능합니다.
    • 선물한 열람권이 ‘미등록’ 상태일 경우에만 ‘열람권 선물내역’화면에서 선물취소 가능합니다.
    • 선물한 열람권의 등록유효기간은 14일 입니다.
      (상대방이 기한내에 등록하지 않을 경우 소멸됩니다.)
    • 무제한 이용권일 경우 열람권 선물이 불가합니다.
    이 상품의 총서 전체보기
    네이버 책을 통해서 교보eBook 첫 구매 시
    교보e캐시 지급해 드립니다.
    교보e캐시 1,000원
    • 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
    • 한 ID당 최초 1회 지급 / sam 이용권 제외
    • 네이버 책을 통해 교보eBook 구매 이력이 없는 회원 대상
    • 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)
    구글북액션을 통해서 교보eBook
    첫 구매 시 교보e캐시 지급해 드립니다.
    교보e캐시 1,000원
    • 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
    • 한 ID당 최초 1회 지급 / sam 이용권 제외
    • 구글북액션을 통해 교보eBook 구매 이력이 없는 회원 대상
    • 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)