1. 소개

프로그래밍에는 새로운 보편적인 알고리즘 모델이 필요하며 하드웨어는 다른 형식뿐만 아니라 다른 알고리즘 모델인 자동화를 기반으로 알고리즘을 구현합니다. 하드웨어 개발에서 기술을 차용하는 것이 자동 프로그래밍의 핵심 아이디어입니다. 그러나 합성 디지털 기기프로그래밍과 다릅니다. 그러나 모델을 빌리면 한편으로는 크게 변경하는 것이 바람직하지 않으며 다른 한편으로는 이미 존재하는 프로그래밍 이론과 실습을 고려하지 않는 것이 불가능합니다.

다음으로 항상 유사한 프로세스를 접하게 되는 자동 프로그램 설계를 위한 SWITCH 기술에 대해 살펴보겠습니다. 한편으로 그녀는 모델을 너무 많이 바꿨습니다. 상태 머신, 실제로 오토마타 이론의 범위를 벗어났습니다. 그리고 다른 한편으로는 프로그래머가 거의 인식하지 못하고 때로는 단순히 불필요한 개념을 프로그래밍에 도입합니다. 프로그램 이론과 프로그래밍 실습에서 더 친숙한 유사점이 있습니다.

자동 프로그래밍의 문제를 논의하기 위한 기초로 Shalyto A.A.의 최근 강의를 들었습니다. 오토마타 프로그래밍 패러다임의 정의에 대한 그의 "소프트웨어" 논문.

C++ 프로그래밍 언어의 기본과 미묘함을 배웁니다. 튜토리얼 실제 작업및 테스트. 프로그래밍을 배우고 싶습니까? 그렇다면 당신은 바로 이곳에 있습니다 - 여기 무료 교육프로그램 작성. 경험이 있든 없든 이 프로그래밍 수업은 다양한 개발 환경에서 C++ 프로그램을 만들고 컴파일하고 디버깅하는 데 도움이 될 것입니다. 비주얼 스튜디오, 코드::블록, Xcode 또는 Eclipse.

많은 예제와 자세한 설명. 초보자(인형)와 고급 사용자 모두에게 적합합니다. 모든 것은 처음부터 가장 작은 세부 사항까지 설명됩니다. 이 수업(200개 이상)은 C ++뿐만 아니라 다른 프로그래밍 언어에서도 프로그래밍을 이해하는 데 좋은 기초/기초를 제공합니다. 그리고 그것은 절대적으로 무료입니다!

또한 C ++, SFML 그래픽 라이브러리 및 C ++에 대한 기술과 지식을 테스트하기 위한 50개 이상의 작업으로 게임을 단계별로 생성하는 방법을 다룹니다. 추가 보너스는 입니다.

카르마와 감사에 대한 재게시 +20!

챕터 번호 0. 소개. 작업 시작

1장. C++의 기초

2장. C++의 변수 및 기본 데이터 유형

챕터 번호 3. C++의 연산자

4장. C++의 변수 범위 및 기타 유형

챕터 번호 5. 프로그램에서 코드가 실행되는 순서입니다. C++의 루프, 분기

C++(c-plus-plus로 발음)는 모든 복잡성 수준의 프로그램을 만드는 데 사용할 수 있는 컴파일되고 정적으로 유형이 지정된 범용 프로그래밍 언어입니다.
20년 이상 동안 이 언어는 가장 인기 있고 수요가 많은 프로그래밍 언어 상위 3위 안에 들었습니다. (티오베 홈페이지에서 확인 가능합니다.)
이 언어는 1980년대 초 Bell Labs 직원인 Björn Stroustrup이 자신의 필요에 따라 C 언어에 대한 여러 개선 사항을 제시하면서 시작되었습니다.

Bjarne Stroustrup - C++ 언어 창시자

Stroustrup은 Simula 언어에서 사용할 수 있는 기능으로 C 언어를 확장하기로 결정했습니다. Bell 컴퓨터가 실행되는 UNIX 시스템의 기본 언어인 C 언어는 빠르고 기능이 풍부하며 이식성이 있습니다. Stroustrup은 클래스와 객체로 작업할 수 있는 기능을 추가했습니다. 결과적으로 실제 모델링 문제는 개발 시간(Simula 유사 클래스 사용으로 인해)과 계산 시간(C의 속도로 인해) 모두에서 접근할 수 있는 것으로 나타났습니다.
다음은 언어 개발자 자신이 말하는 방식입니다.



1998년 C++98로 알려진 첫 번째 언어 표준이 표준 위원회에서 발표되었습니다. C++는 최신 요구 사항을 충족하기 위해 계속 발전하고 있습니다. C++ 언어를 개발하고 이를 개선하기 위해 C++ 표준화 위원회에 제안을 보내는 그룹 중 하나는 다음과 같습니다. 후원, 무엇보다도 메타프로그래밍 기능을 추가하여 언어의 기능을 향상시키는 것을 다룹니다. 최신 표준은 2017년에 발표되었으며 C++17. 다음 표준은 머지 않아 2020년에 나올 것으로 예상됩니다.
아무도 C++ 언어에 대한 권리를 소유하지 않으며 무료입니다. 2016년 3월 러시아는 작업 그룹 WG21 C++. 이 그룹은 C++ 표준에 대한 제안을 수집하여 위원회에 제출하고 국제 표준화 기구 총회에서 이를 변호하기 위해 구성되었습니다.
C++은 다중 패러다임 언어입니다(패러다임이라는 단어에서 - 쓰기 스타일 컴퓨터 프로그램), 여기에는 다양한 프로그래밍 스타일과 기술이 포함됩니다. 흔히 객체지향 언어라고 하지만 엄밀히 말하면 그렇지 않다. 작업 과정에서 개발자는 도구를 선택하는 데 절대적인 자유를 얻음으로써 하나 또는 다른 접근 방식을 사용하여 해결된 문제가 가능한 한 효율적으로 해결되도록 합니다. 다시 말해서, C++는 프로그래머가 하나의 프로그램 개발 스타일(예: 객체 지향)만을 고수하도록 강요하지 않습니다.
C++에는 공통 컨테이너 및 알고리즘, I/O, 정규식, 멀티스레딩 지원 및 기타 기능. C++는 Java, C#, D를 비롯한 많은 프로그래밍 언어에 영향을 미쳤습니다. C++는 C 언어 구문을 기반으로 하는 언어 계열에 속하므로 이 계열의 다른 프로그래밍 언어를 쉽게 마스터할 수 있습니다. JavaScript , PHP, Perl, Objective-C 등. 등, 모국어 자체 포함 - C. ()
C++ 언어가 존재하는 동안 안정적인 신화가 확립되어 쉽게 반박할 수 있습니다(여기: 파트 1 및 파트 2 참조).

언어의 역사와 표준 출시

1983

언어 제작자 - Bjorn Stroustrup, Bell Labs에서 C++의 초기 버전("C with Classes")을 소개했습니다.

1985

C++의 첫 번째 상용 릴리스, 언어가 현대적인 이름을 가짐

1986

Bjorn Stroustrup이 저술한 C++ 책 The C++ Programming Language 초판 출간

1998

국제 C++ 언어 표준 비준: ISO/IEC 14882:1998 "Standard for C++ Programming Language"

2003
2005

라이브러리 기술 보고서 ​​1(TR1)이 발표되었습니다. 공식적으로 표준의 일부는 아니지만 보고서에 포함되어야 하는 표준 라이브러리에 대한 확장이 설명되어 있습니다. 다음 버전 C++ 언어

2011

새로운 표준의 출시 - C++11 또는 ISO/IEC 14882:2011; 새로운 기준 TR1의 대부분을 포함하여 언어의 핵심에 대한 추가 및 표준 라이브러리에 대한 확장 포함

2014

C++14 표준 출시("국제 표준 ISO/IEC 14882:2014(E) 프로그래밍 언어 C++"); C++14는 대부분 버그 수정과 사소한 개선을 포함하는 C++11의 작은 확장으로 볼 수 있습니다.

2017

새 표준의 릴리스는 C++1z(C++17)입니다. 이 표준은 많은 변경 및 추가를 수행했습니다. 예를 들어 STD에는 C11 표준 라이브러리가 포함되어 있습니다. 파일 시스템, 실험적인 TS I 라이브러리의 큰 부분인 boost::filesystem을 기반으로 합니다.

2020

C++20은 C++ 프로그래밍 언어에 대한 ISO/IEC 표준의 비공식 이름으로, C++17 이후로 예상됩니다. N4800 표준의 초안.

철학 C++

Design and Evolution of C++(2007)에서 Bjorn Stroustrup은 C++를 설계할 때 따랐던 원칙을 설명합니다(약식 형식으로 제공).

  • 정적 데이터 유형, C의 효율성 및 이식성을 갖춘 범용 언어를 얻으십시오.
  • 다양한 프로그래밍 스타일을 직접적이고 종합적으로 지원합니다.
  • 프로그래머가 잘못 선택할 수 있는 기회를 주더라도 선택의 자유를 주십시오.
  • C와의 호환성을 최대한 유지하여 프로그래밍에서 C로 쉽게 전환할 수 있습니다.
  • C와 C++ 사이의 불일치를 피하십시오. 두 언어 모두에서 유효한 모든 구성은 각 언어에서 동일한 것을 의미해야 하며 동일한 프로그램 동작으로 이어집니다.
  • 플랫폼 종속적이거나 보편적이지 않은 기능은 피하십시오.
  • "사용하지 않는 것에 대해 비용을 지불하지 마십시오" - 어떤 언어 기능도 그것을 사용하지 않는 프로그램의 성능 저하를 일으키지 않아야 합니다.
  • 너무 복잡한 프로그래밍 환경을 요구하지 마십시오.

C 및 C++

C++ 구문은 C 언어에서 상속됩니다.공식적으로 C++의 원칙 중 하나는 C 언어와의 호환성을 유지하는 것이지만 실제로 이러한 언어의 표준화 그룹은 상호 작용하지 않으며 변경 사항이 make 는 상관관계가 없을 뿐만 아니라 이데올로기적으로 서로 근본적으로 모순되는 경우가 많습니다. 따라서 새로운 C 표준이 커널에 추가하는 요소는 C ++ 표준의 표준 라이브러리 요소이며 일반적으로 커널에는 없습니다(예: 동적 배열, 고정 경계가 있는 배열, 병렬 처리 기능). Stroustrup은 이 두 언어의 발전을 결합하는 것이 큰 이점이 될 것이라고 생각하지만 정치적인 이유로 거의 불가능합니다. 따라서 C와 C++ 간의 실질적인 호환성은 점차 상실될 것입니다.
이 예, 사용된 컴파일러에 따라 "C++" 또는 "C"가 출력됩니다.

프로그램 9.1

#포함 int main() ( printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++" : "C"); 반환 0; )

이것은 C의 문자 상수가 int 유형이고 C++에서는 char 유형이지만 이러한 유형의 크기가 다르기 때문입니다.

애플리케이션 수명 주기 모델

라이프 사이클 소프트웨어생성의 필요성에 대한 결정이 내려진 순간부터 시작되는 기간입니다. 소프트웨어 제품운영을 완전히 중단하는 순간 종료됩니다. 이 주기는 소프트웨어(SW)를 구축하고 개발하는 과정입니다. 여러 모델이 있습니다 라이프 사이클.
캐스케이드 모델라이프 사이클(영어 폭포 모델)은 1970년 Winston Royce에 의해 제안되었습니다. 엄격하게 고정 된 순서로 프로젝트의 모든 단계를 순차적으로 구현합니다. 다음 단계로의 이행은 이전 단계의 작업이 완전히 완료되었음을 의미합니다. 요구 사항 생성 단계에서 정의된 요구 사항은 다음 형식으로 엄격하게 문서화됩니다. 위임 사항프로젝트 기간 동안 고정됩니다. 각 단계는 릴리스로 끝납니다. 완전한 세트다른 개발 팀에서 개발을 계속할 수 있도록 충분한 문서.
폭포수 모델에 따른 프로젝트 단계:

  1. 요구 사항의 형성;
  2. 설계;
  3. 구현;
  4. 테스트;
  5. 구현;
  6. 운영 및 유지 보수.

폭포수 모델에서 한 프로젝트 단계에서 다른 단계로의 전환은 이전 단계의 결과가 완전히 정확하다고 가정합니다. 대규모 프로젝트에서는 이를 달성하기가 거의 불가능합니다. 따라서 이러한 모델은 소규모 프로젝트의 개발에만 적합합니다. (W. Royce 자신은 이 모델을 고수하지 않고 반복 모델을 사용했습니다).
반복 모델
폭포수 모델의 대안은 70년대에 T. Gilb로부터 받은 반복 및 증분 개발(IID) 모델입니다. 진화 모델의 이름. IID 모델은 프로젝트의 수명 주기를 일련의 반복으로 나눕니다. 각 반복은 프로젝트 전체와 비교하여 더 작은 기능의 생성에 적용되는 모든 개발 프로세스를 포함하여 "미니 프로젝트"와 유사합니다. 각 반복의 목표는 모든 이전 및 현재 반복의 통합 콘텐츠에 의해 정의된 기능을 포함하여 소프트웨어 시스템의 작동 버전을 얻는 것입니다. 최종 반복의 결과에는 제품에 필요한 모든 기능이 포함됩니다. 따라서 각 반복이 완료되면 제품은 기능에 대한 증분(증가)을 수신하므로 진화적으로 발전합니다.


반복적 접근 방식의 다양한 변형은 대부분의 최신 개발 방법론에서 구현됩니다.

개발 프로세스 - RUP(Rational Unified Process)

합리적 통합 프로세스(RUP)(합리적인 통합 프로세스)은 Rational Software(IBM)에서 유지 관리하는 소프트웨어 개발 방법론입니다. 방법론은 비즈니스 모델링에서 완성된 프로그램의 테스트 및 커미셔닝에 이르기까지 모든 개발 단계에 대한 권장 사항을 제공합니다. UML(Unified Modeling Language)은 모델링 언어로 사용됩니다.
전체 제품 개발 수명 주기는 4단계로 구성되며 각 단계에는 하나 이상의 반복이 포함됩니다.

  • 초기 단계(Inception)
  • 프로젝트의 범위와 필요한 자원의 양을 결정합니다. 제품의 주요 요구 사항, 제한 사항 및 주요 기능이 결정됩니다. 위험이 평가됩니다. 행동 계획. 시작 단계가 끝나면 라이프사이클 목표 이정표의 달성이 평가되며, 이는 프로젝트를 계속하기 위한 이해 관계자 간의 동의를 의미합니다.

  • 동화
  • 요구 사항 문서. 실행 가능한 아키텍처의 설계, 구현 및 테스트. 조건 및 비용의 사양. 주요 위험 감소. 개발 단계를 성공적으로 완료한다는 것은 라이프사이클 아키텍처 이정표에 도달했음을 의미합니다.

  • 건설
  • "빌드" 단계에서는 제품의 대부분의 기능이 구현됩니다. 애플리케이션의 설계가 완료되고, 원천쓴. 빌드 단계는 시스템의 첫 번째 외부 릴리스와 초기 운영 기능 이정표로 끝납니다.

  • 구현(전환)
  • "구현" 단계에서 제품의 최종 버전이 생성되어 개발자로부터 고객에게 전달됩니다. 여기에는 베타 테스트 프로그램, 사용자 교육 및 제품 품질 보증이 포함됩니다. 품질이 사용자의 기대치나 시작 단계에서 설정한 기준에 맞지 않을 경우 구현 단계를 다시 반복합니다. 모든 목표를 달성한다는 것은 완제품(제품 출시)의 이정표에 도달하고 전체 개발 주기를 완료하는 것을 의미합니다.



« 정보 기술. 시스템 및 소프트웨어 엔지니어링. 라이프 사이클 프로세스 소프트웨어 도구» . 이 표준은 러시아 연방 기술 규제 및 계측을 위한 연방 기관에서 채택했으며 국제 표준 ISO/IEC 12207:2008과 유사합니다. 이 표준, 소프트웨어 산업에서 지침으로 사용할 수 있는 소프트웨어 수명 주기 프로세스에 대한 일반적인 프레임워크를 설정합니다. 표준은 제공하지 않습니다 특정 모델라이프 사이클. 그 조항은 소프트웨어 생성을 위한 모든 수명 주기 모델, 방법 및 기술에 공통적입니다. 이러한 프로세스에 포함된 활동 및 작업을 구현하거나 수행하는 방법을 지정하지 않고 수명 주기 프로세스의 구조를 설명합니다.

수업을 위한 프레젠테이션
메시지 주제
  • 자유 소프트웨어 재단(FSF)
  • 무료 소프트웨어 라이선스
  • 무료 소프트웨어 및 오픈 소스
  • 프로그래밍 언어 개발의 역사
  • C.C와 C++의 역사
  • 이야기
  • C++에 대한 비판
  • 유닉스의 역사
  • 나선형 소프트웨어 수명 주기 모델
  • UML(영어 통합 모델링 언어 - 통합 모델링 언어)
  • 마이크로소프트 솔루션 프레임워크
  • Windows에서 C/C++ 프로그래밍을 위한 IDE
  • C/C++ 컴파일러
  • Windows에서 콘솔 애플리케이션 생성
질문
  1. 폭포수 소프트웨어 개발 모델이 대규모 프로젝트에서 사용되지 않는 이유는 무엇입니까?
  2. 폭포수와 반복 개발 모델의 차이점은 무엇입니까?
  3. RUP(Rational Unified Process) 방법론에서 소프트웨어 개발 단계 나열

이 글에서 scanf() 함수는 특정 표준을 언급하지 않고 일반적인 형태로 다루므로 여기에는 모든 C99, C11, C++11, C++14 표준의 데이터가 포함된다. 아마도 일부 표준에서는 이 기능이 기사에 제시된 자료와 다른 점으로 작동합니다.

scanf C 함수 - 설명

scanf()는 형식화된 프로그램 입력이라고도 하는 stdio.h(C) 및 cstdio(C++) 헤더 파일에 있는 함수입니다. scanf는 표준 입력 스트림(stdin)에서 문자를 읽고 형식에 따라 변환한 다음 지정된 변수에 씁니다. 형식 - 수신 시 데이터가 특정 형식으로 변환됨을 의미합니다. 따라서 scanf C 함수는 다음과 같이 설명됩니다.

scanf("%형식", &variable1[, &variable2,[…]]),

여기서 변수는 주소로 전달됩니다. 이런 식으로 함수에 변수를 전달하는 이유는 분명합니다. 작업 결과 오류가 있음을 나타내는 값을 반환하므로 변수 값을 변경하는 유일한 방법은 주소로 전달하는 것입니다. 또한 이 방법 덕분에 함수는 모든 유형의 데이터를 처리할 수 있습니다.

일부 프로그래머는 다른 언어와의 유사성 때문에 scanf() 또는 printf()와 같은 함수를 프로시저로 참조합니다.

Scanf를 사용하면 char, int, float, string 등 언어의 모든 기본 유형을 입력할 수 있습니다. 변수의 경우 문자열 유형주소 기호("&")를 지정할 필요가 없습니다. 유형 변수 string은 배열이고 그 이름은 컴퓨터 메모리에 있는 배열의 첫 번째 요소 주소입니다.

입력 형식 또는 제어 문자열

설명에서 scanf C 함수를 사용하는 예를 살펴보는 것으로 시작하겠습니다.

#포함 int main() ( int x; while (scanf("%d", &x) == 1) printf("%d\n", x); return 0; //리눅스 시스템의 요구 사항)

입력 형식은 %[*][width][modifiers] 유형의 네 가지 매개변수로 구성됩니다. 이 경우 "%" 기호와 유형은 필수 매개변수입니다. 즉, 형식의 최소 형식은 "%s", "%d" 등입니다.

일반적으로 형식 문자열을 구성하는 문자는 다음과 같이 나뉩니다.

  • 형식 지정자 - % 문자로 시작하는 모든 것.
  • 구분 기호 또는 공백 문자 - 공백, 탭(\t), 새로운 라인(\N);
  • 공백 이외의 문자.

기능이 안전하지 않을 수 있습니다.

scanf() 대신 scanf_s() 함수를 사용하십시오.

(Visual Studio의 게시물)

유형 또는 형식 지정자, 변환 문자 또는 제어 문자

scanf C 선언은 최소한 "%" 기호로 시작하는 표현식 끝에 지정되는 형식 지정자를 포함해야 합니다. 일반적으로 키보드에서 입력할 때 예상되는 데이터 유형을 프로그램에 알려줍니다. 아래 표에 있는 모든 형식 지정자의 목록입니다.

의미

프로그램이 문자 입력을 기다리고 있습니다. 쓸 변수는 char 유형이어야 합니다.

프로그램이 입력을 기다리고 있습니다 십진수정수형. 변수는 int 유형이어야 합니다.

프로그램은 지수 형식의 부동 소수점(쉼표) 숫자 입력을 예상합니다. 변수는 float 유형이어야 합니다.

프로그램은 부동 소수점 숫자(쉼표)의 입력을 예상합니다. 변수는 float 유형이어야 합니다.

7

프로그램은 부동 소수점 숫자(쉼표)의 입력을 예상합니다. 변수는 float 유형이어야 합니다.

프로그램이 입력을 기다리고 있습니다 8진수. 변수는 int 유형이어야 합니다.

프로그램이 문자열 입력을 기다리고 있습니다. 문자열은 발견된 첫 번째 구분 문자까지의 모든 문자 집합입니다. 변수는 문자열 유형이어야 합니다.

프로그램은 16진수를 입력해야 합니다. 변수는 int 유형이어야 합니다.

변수는 포인터 입력을 예상합니다. 변수는 포인터 유형이어야 합니다.

scanf 함수가 지금까지 읽은 문자 수와 동일한 정수 값을 변수에 씁니다.

프로그램은 부호 없는 정수를 읽습니다. 변수 유형은 부호 없는 정수여야 합니다.

프로그램은 이진수가 입력될 것으로 예상합니다. 변수는 int 유형이어야 합니다.

스캔할 문자 집합입니다. 프로그램은 입력 스트림에 지정된 세트의 문자가 있는 한 scanf 사이에 지정된 제한된 풀에서 문자 입력을 기다립니다.

형식 문자열의 문자

별표(*)

별표(*)는 할당 작업을 억제해야 함을 나타내는 플래그입니다. "%" 기호 바로 뒤에 별표가 표시됩니다. 예를 들어,

Scanf("%d%*c%d", &x, &y); //두 정수 사이의 문자를 무시합니다. scanf("%s%*d%s", str, str2); //두 문자열 사이의 정수를 무시합니다.

즉, 콘솔에 "45-20" 줄을 입력하면 프로그램이 다음을 수행합니다.

  1. 변수 "x"에는 값 45가 할당됩니다.
  2. 변수 "y"에는 값 20이 할당됩니다.
  3. 그리고 빼기 기호(대시) "-"는 "%*c" 덕분에 무시됩니다.

너비(또는 여백 너비)

"%" 기호와 다음을 지정하는 형식 지정자 사이의 정수입니다. 최대 금액현재 읽기 작업에 대해 읽을 문자입니다.

몇 가지를 염두에 두십시오. 중요한 포인트:

  1. scanf는 20자를 계산하지 않았더라도 구분 문자를 만나면 중단됩니다.
  2. 20자 이상을 입력하면 처음 20자만 str에 씁니다.

유형 수정자(또는 정밀도)

이들은 입력에 필요한 데이터 유형을 수정하는 특수 플래그입니다. 플래그는 유형 지정자의 왼쪽에 지정됩니다.

  • L 또는 l(작은 L) "l"이 지정자 d, i, o, u, x와 함께 사용되면 플래그는 프로그램에 long int 입력이 예상됨을 알려줍니다. e 또는 f 지정자와 함께 "l"을 사용할 때 플래그는 프로그램에 이중 값을 예상해야 함을 알려줍니다. "L"을 사용하면 long double이 예상됨을 프로그램에 알립니다. "c" 및 "s" 지정자와 함께 "l"을 사용하면 프로그램에 wchar_t와 같은 2바이트 문자가 필요함을 알립니다. 예: "%lc", "%ls", "%l".
  • h는 short 유형을 나타내는 플래그입니다.
  • hh - 변수가 signed char 또는 unsigned char 유형의 값에 대한 포인터임을 나타냅니다. 플래그는 지정자 d, i, o, u, x, n과 함께 사용할 수 있습니다.
  • ll(두 개의 작은 L)은 변수가 signed int 또는 unsigned long long int 유형의 값에 대한 포인터임을 나타냅니다. 플래그는 지정자와 함께 사용됩니다: d, i, o, u, x, n.
  • j - 변수가 intmax_t 또는 uintmax_t 유형에 대한 포인터임을 나타냅니다. 헤더 파일 stdint.h 지정자와 함께 사용: d, i, o, u, x, n.
  • z - 변수가 stddef.h에 정의되어 있는 size_t 유형에 대한 포인터임을 나타냅니다. 지정자와 함께 사용: d, i, o, u, x, n.
  • t - 변수가 ptrdiff_t 유형에 대한 포인터임을 나타냅니다. 이 유형에 대한 정의는 stddef.h에 있습니다. 지정자와 함께 사용: d, i, o, u, x, n.

보다 명확하게, 수식어가 있는 그림은 표의 형태로 제시될 수 있다. 프로그래머를 위한 scanf C에 대한 이러한 설명은 더 명확할 것입니다.

다른 캐릭터

형식에서 발견된 모든 문자는 삭제됩니다. 제어 문자열에 공백 또는 구분 문자(줄 바꿈, 공백, 탭)가 있으면 함수의 다른 동작이 발생할 수 있습니다. 한 버전에서 scanf()는 구분 기호가 아닌 다른 문자를 만날 때까지 구분 기호를 저장하지 않고 읽습니다. 다른 버전에서는 공백(그들만)이 역할을 하지 않고 표현식 "%d + %d" "%d+%d"와 같습니다.

함수의 작동을 생각하고 더 정확하게 이해할 수 있는 여러 가지 예를 살펴보겠습니다.

scanf("%3s", str); //콘솔에 "1d2s3d1;3" 문자열을 입력하면 str scanf("%dminus%d", &x, &y); //두 숫자 사이의 빼기 문자는 삭제됩니다. scanf("%5", str); // 문자는 5자가 될 때까지 str에 입력되고 문자는 0에서 9까지의 숫자입니다. scanf("%lf", &d); //이중 입력이 예상됩니다. scanf("%hd", &x); //예상되는 타입의 개수 short scanf("%hu", &y); //부호 없는 숫자 예상 short scanf("lx", &z); // long int 유형의 예상 개수

주어진 예에서 다른 문자를 사용하여 예상 숫자가 어떻게 변경되는지 확인할 수 있습니다.

scanf C - 초보자를 위한 설명

이번 장초보자에게 유용할 것입니다. 종종 당신은 그렇게 많이 가지고 있지 않아야합니다. 전체 설명 scanf C 함수 작동 방식에 대한 세부 정보.

  • 이 기능은 다소 사용되지 않습니다. 다른 버전의 라이브러리에는 여러 가지 다른 구현이 있습니다. 예를 들어, 개선된 scanf SC 기능에 대한 설명은 Microsoft에서 찾을 수 있습니다.
  • 형식의 지정자 수는 함수에 전달된 인수 수와 일치해야 합니다.
  • 입력 스트림의 요소는 공백, 탭, 줄 바꿈과 같은 구분 기호 문자로만 구분해야 합니다. 쉼표, 세미콜론, 마침표 등 - 이러한 문자는 scanf() 함수의 구분 기호가 아닙니다.
  • scanf가 구분 문자를 만나면 입력이 중지됩니다. 읽을 변수가 두 개 이상인 경우 scanf는 다음 변수 읽기로 이동합니다.
  • 입력 데이터 형식의 약간의 불일치로 인해 프로그램의 예측할 수 없는 결과가 발생합니다. 글쎄, 프로그램이 오류로 끝나는 경우. 그러나 종종 프로그램이 계속 작동하고 잘못 작동합니다.
  • scanf("%20s...",...); 입력 스트림이 20자를 초과하면 scanf는 처음 20자를 읽고 중단하거나 지정된 경우 다음 변수 읽기로 이동합니다. 이 경우 scanf에 대한 다음 호출은 scanf에 대한 이전 호출의 작업이 중지된 지점에서 입력 스트림을 계속 읽습니다. 처음 20자를 읽는 동안 구분 문자가 발견되면 첫 번째 변수에 대해 20자를 읽지 않았더라도 scanf는 중단하거나 다음 변수 읽기로 넘어갑니다. 이 경우 읽지 않은 모든 문자는 다음 변수에 첨부됩니다.
  • 스캔된 문자 집합이 "^" 기호로 시작하면 scanf는 구분 문자 또는 집합의 문자를 만날 때까지 데이터를 읽습니다. 예를 들어 "%[^A-E1-5]"는 A에서 E까지의 영문자 중 하나가 될 때까지 스트림에서 데이터를 읽습니다. 대문자또는 1에서 5까지의 숫자 중 하나.
  • scanf C 함수는 정의에 따라 변수에 대한 성공적인 쓰기 수와 동일한 수를 반환합니다. scanf가 3개의 변수를 쓰면 함수의 성공 결과는 숫자 3을 반환합니다. scanf가 변수를 쓸 수 없으면 결과는 0이 됩니다. 그리고 마지막으로 어떤 이유로 인해 scanf를 전혀 시작할 수 없는 경우 결과는 EOF가 됩니다.
  • scanf() 함수가 작업을 잘못 완료한 경우. 예를 들어, scanf("%d", &x) - 숫자가 필요했지만 입력이 문자를 받았습니다. scanf()에 대한 다음 호출은 이전 함수 호출이 중단된 입력 스트림의 지점에서 시작됩니다. 이 문제를 극복하기 위해서는 문제의 문자를 제거해야 합니다. 이것은 예를 들어 scanf("%*s")를 호출하여 수행할 수 있습니다. 즉, 함수는 문자열을 읽고 버립니다. 이 까다로운 방법으로 필요한 데이터를 계속 입력할 수 있습니다.
  • 일부 scanf() 구현에서는 문자 집합의 "-"를 검색할 수 없습니다.
  • "%c" 지정자는 스트림에서 각 문자를 읽습니다. 즉, 구분 기호도 읽습니다. 구분 문자를 건너뛰고 원하는 문자를 계속 읽으려면 "%1s"를 사용할 수 있습니다.
  • "c" 지정자를 사용할 때 너비 "%10c"를 사용할 수 있지만 다음 형식으로 함수 변수 scanf는 char 유형의 요소 배열을 전달해야 합니다.
  • "%"는 "영어 알파벳의 모든 소문자"를 의미하고 "%"는 'z', 'a', '-'의 세 글자만 의미합니다. 즉, 문자 "-"는 올바른 순서로 있는 두 문자 사이에 있는 경우에만 범위를 의미합니다. "-"가 표현식의 끝, 시작 또는 양쪽의 잘못된 문자 순서에 있는 경우 범위가 아닌 하이픈 문자일 뿐입니다.

결론

이것으로 scanf C에 대한 설명을 마칩니다. 이것은 작은 프로그램프로그래밍의 절차적 방법을 사용할 때. 그러나 가장 큰 단점은 scanf를 사용할 때 발생할 수 있는 예측할 수 없는 오류의 수입니다. 따라서 프로그래밍할 때 scanf C에 대한 설명이 눈 앞에 가장 잘 보입니다. 대규모 전문 프로젝트에서 iostream은 더 높은 수준의 기능을 가지고 있고 오류를 더 잘 잡아내고 처리할 수 있으며 상당한 양의 정보로 작업할 수 있기 때문에 사용됩니다. 또한 러시아어로 된 scanf C에 대한 설명은 기능의 수명으로 인해 많은 온라인 소스와 사용 예에서 사용할 수 있습니다. 따라서 필요한 경우 주제별 포럼에서 항상 답을 찾을 수 있습니다.

C++ 프로그래밍 언어

마지막 업데이트: 2017년 8월 28일

C++ 프로그래밍 언어는 고수준의 범용, 정적으로 유형이 지정된 컴파일된 프로그래밍 언어로, 다양한 응용. C++는 오늘날 가장 인기 있고 널리 사용되는 언어 중 하나입니다.

그것은 프로그래머 Dennis Ritchie에 의해 Bell Labs에서 1969-1973년에 개발된 C 언어에 뿌리를 두고 있습니다. 1980년대 초, 당시 Bell Labs의 덴마크 프로그래머 Bjarne Stroustrup은 C 언어의 확장으로 C++를 개발했습니다. 사실, 처음에 C++는 객체 지향 프로그래밍의 일부 기능으로 C 언어를 단순히 보완했습니다. 그래서 Stroustrup 자신은 처음에 그것을 "C with classes"("C with classes")라고 불렀습니다.

그 후, 새로운 언어가 인기를 얻기 시작했습니다. C에 추가된 것이 아니라 완전히 새로운 프로그래밍 언어가 되도록 하는 새로운 기능이 추가되었습니다. 결과적으로 "C with classes"는 C++로 이름이 바뀌었습니다. 그리고 그 이후로 두 언어는 서로 독립적으로 발전하기 시작했습니다.

C++는 C에서 풍부한 메모리 기능을 상속하는 강력한 언어입니다. 따라서 C++는 특히 시스템 프로그래밍에서 응용 프로그램을 찾는 경우가 많습니다. 운영체제, 드라이버, 다양한 유틸리티, 바이러스 백신 등 참고로 Windows는 대부분 C++로 작성됩니다. 그러나 만 시스템 프로그래밍이 언어의 사용은 제한되지 않습니다. C++는 속도와 성능이 중요한 모든 수준의 프로그램에서 사용할 수 있습니다. 만드는 데 자주 사용됩니다. 그래픽 응용 프로그램, 다양한 응용 프로그램. 또한 풍부하고 풍부한 비주얼로 게임을 만드는 데 특히 자주 사용됩니다. 또한 최근 모바일 방향이 탄력을 받고 있으며 C++에서도 응용 프로그램을 찾았습니다. 그리고 웹 개발에서도 C++를 사용하여 웹 애플리케이션을 만들거나 웹 애플리케이션을 제공하는 일종의 보조 서비스를 만들 수 있습니다. 일반적으로 C++는 거의 모든 종류의 프로그램을 작성할 수 있는 널리 사용되는 언어입니다.

C++는 컴파일된 언어입니다. 즉, 컴파일러는 C++ 소스 코드를 일련의 기계 명령이 포함된 실행 파일로 변환합니다. 하지만 다양한 플랫폼고유한 특성이 있으므로 컴파일된 프로그램은 단순히 한 플랫폼에서 다른 플랫폼으로 전송되어 이미 실행될 수 없습니다. 그러나 소스 코드 수준에서 C++ 프로그램은 일부 OS 특정 기능을 사용하지 않는 한 대부분 이식 가능합니다. 그리고 거의 모든 공통 플랫폼에 대한 컴파일러, 라이브러리 및 개발 도구를 사용할 수 있으므로 동일한 C++ 소스 코드를 이러한 플랫폼의 응용 프로그램으로 컴파일할 수 있습니다.

C와 달리 C++ 언어를 사용하면 서로 상호 작용하는 클래스 및 개체 모음으로 프로그램을 나타내는 개체 지향 스타일로 응용 프로그램을 작성할 수 있습니다. 이렇게 하면 대규모 응용 프로그램을 간단하게 만들 수 있습니다.

개발 이정표

1979-80년에 Bjarne Stroustrup은 "C with classes"라는 C 언어의 확장을 개발했습니다. 1983년에 언어 이름이 C++로 변경되었습니다.

1985년에 C++ 언어의 첫 번째 상용 버전과 공식 표준이 없는 상태에서 이 언어에 대한 첫 번째 설명을 나타내는 책 "C++ 프로그래밍 언어"의 초판이 출시되었습니다.

1989년 출시 새 버전많은 새로운 기능이 포함된 C++ 2.0. 그 후, 언어는 2011년까지 비교적 느리게 발전했습니다. 그러나 동시에 1998년에 ISO(국제표준화기구)에서 언어를 표준화하려는 첫 번째 시도가 있었습니다. 첫 번째 표준은 ISO/IEC 14882:1998 또는 줄여서 C++98이라고 했습니다. 2003년 후반에 C++03 표준의 새 버전이 발표되었습니다.

2011년에 새로운 C++11 표준이 발표되었는데, 여기에는 많은 추가 사항이 포함되어 있고 많은 새로운 기능으로 C++ 언어가 풍부해졌습니다. 2014년에는 C++14라고도 하는 표준에 약간의 추가 작업이 이어졌습니다. 그리고 하나 더 키 릴리스언어는 2017년으로 예정되어 있습니다.

컴파일러 및 개발 환경

C++로 프로그램을 개발하려면 컴파일러가 필요합니다. 컴파일러는 C++ 소스 코드를 실행 파일로 변환한 다음 실행할 수 있습니다. 하지만 에 이 순간거기에는 많은 다른 컴파일러가 있습니다. 그들은 특히 표준의 구현에서 다양한 측면에서 다를 수 있습니다. C++용 컴파일러의 기본 목록은 wikipedia에서 찾을 수 있습니다. 모든 최신 표준을 개발하고 구현하는 컴파일러를 선택하는 것이 개발에 권장됩니다. 예를 들어, 이 튜토리얼 전체에서 GNU 프로젝트에서 개발한 무료로 사용 가능한 g++ 컴파일러가 주로 사용됩니다.

Visual Studio, Netbeans, Eclipse, Qt 등과 같은 IDE를 사용하여 프로그램을 만들 수도 있습니다.