ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘++

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ принятия стандарта языка Π‘ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π² 1989 Π³ΠΎΠ΄Ρƒ, Π² ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ… программирования Π‘ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ нСобоснованныС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ практичСски исчСзли, Π½ΠΎ Π² Ρ€Π°Π½Π½ΠΈΡ… вСрсиях языка ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Ρ€Π°Π·Π½ΠΎΠ±ΠΎΠΉ Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ Π²Π΅Π»ΠΈΠΊ. К ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡŽ, Π½Π°Π±ΠΎΡ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Ρ‹ Π΄Π°ΠΆΠ΅ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… систСм программирования Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Π½Π° ΠΎΠ΄Π½ΠΎΠΌ Ρ‚ΠΈΠΏΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘++ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ВолТский унивСрситСт ΠΈΠΌΠ΅Π½ΠΈ Π’. Н. Π’Π°Ρ‚ΠΈΡ‰Π΅Π²Π° Π€Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚ «Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΈ Ρ‚Π΅Π»Π΅ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ»

ΠšΠ°Ρ„Π΅Π΄Ρ€Π° «Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΈ ΡΠΈΡΡ‚Π΅ΠΌΡ‹ управлСния»

ΠšΠ£Π Π‘ΠžΠ’ΠΠ― Π ΠΠ‘ΠžΠ’Π ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅: «Π‘истСмноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС»

Π’Π΅ΠΌΠ°:

«Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘++»

1. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ языка Π‘ΠΈ

1.1 Π€Π°ΠΉΠ»Ρ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²

1.2 О ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…

1.3 Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ ANSI C

2. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ math. h

3. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ошибки

4. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ

4.1 ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

4.2 ОписаниС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

5. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

6. Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2

C++ являСтся языком «ΠΎΠ±Ρ‰Π΅Π½ΠΈΡ» Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ «Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΌ» тСкстов Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C++ являСтся транслятор, Π² ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π½Π° ΡΠ·Ρ‹ΠΊ процСссора.

Π―Π·Ρ‹ΠΊ программирования позволяСт ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅. Однако Π΅Π³ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности Π½Π΅ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‚ся мноТСством ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ ΡΠ²ΡΠ·Π°Π½Π½Ρ‹Ρ… с Π½ΠΈΠΌΠΈ структур Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°ΠΆΠ΅ самыС абсурдныС с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния программиста, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ сколько-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, прСдлоТСния языка ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌΠΈ для транслятора. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, основанныС Π½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ…, Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠ°ΠΌΠΈ излоТСния мноТСства ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΠΎΡ€ΠΎΠΉ, ΠΈ Π²Ρ‹ΡΠ²Π»ΡΡŽΡ‚ся Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Π΅ Ρ‡Π΅Ρ€Ρ‚Ρ‹ языка.

C++ - это слоТный, логичСски стройный ΠΈ ΠΊΡ€Π°ΡΠΈΠ²Ρ‹ΠΉ язык. Π•Π³ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ Π·Π½Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΌΠ°ΡΡ‚Срскому владСнию этим языком. И Π·Π΄Π΅ΡΡŒ ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎ ΡΠΈΠ»Π°ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ любой Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° — это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ инструкций, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для выполнСния ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ. Π’ Π½Π°ΡΡ‚оящСС врСмя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ„ΠΎΡ€ΠΌΠ»ΡΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ тСкста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ записываСтся Π² Ρ„Π°ΠΉΠ»Ρ‹. Π­Ρ‚ΠΎΡ‚ тСкст являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ программиста ΠΈ, нСсмотря Π½Π° ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΡƒ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ языка, остаётся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ для программиста.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ нСсколько этапов. Π—Π° ΡΡ‚Π°ΠΏΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ слСдуСт этап программирования. На ΡΡ‚ΠΎΠΌ этапС ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Π°ΠΌΠΈ этот тСкст воспринимаСтся Π»Π΅Π³Ρ‡Π΅ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ мнСмоничСскиС сокращСния ΠΈ ΠΈΠΌΠ΅Π½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

Π€Π°ΠΉΠ» с ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΌ тСкстом ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ обрабатываСтся транслятором, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ осущСствляСт ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΡΠ·Ρ‹ΠΊΠ° программирования Π² ΠΏΠΎΠ½ΡΡ‚Π½ΡƒΡŽ машинС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄ΠΎΠ². ΠŸΡ€ΠΎΡ†Π΅ΡΡ трансляции раздСляСтся Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ этапов.

На ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС исходный тСкст подвСргаСтся лСксичСской ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° раздСляСтся Π½Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ дСлится Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ€Π½Ρ‹Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ (лСксСмы). КаТдая лСксСма распознаётся ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ся Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС. Π­Ρ‚ΠΎΡ‚ этап Ρ€Π°Π±ΠΎΡ‚Ρ‹ транслятора Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ лСксичСским Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ.

Π—Π°Ρ‚Π΅ΠΌ наступаСт этап синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°. На ΡΡ‚ΠΎΠΌ этапС ΠΈΠ· Π»Π΅ΠΊΡΠ΅ΠΌ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ выраТСния, Π° ΠΈΠ· Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ — ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. Π’ Ρ…ΠΎΠ΄Π΅ трансляции ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² Π½Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρ‹. ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ достиТСния ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ Π½Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° являСтся ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ синтаксичСской ошибки Π² Ρ‚СкстС исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ПослС синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° наступаСт этап поэтапной Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°. На ΡΡ‚ΠΎΠΌ этапС происходит Π·Π°ΠΌΠ΅Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² языка высокого уровня инструкциями ассСмблСра, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄.

БистСмы программирования, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ язык программирования C++, ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ стандартныС ΠΏΡ€ΠΈΡ‘ΠΌΡ‹ ΠΈ ΡΡ€Π΅Π΄ΡΡ‚Π²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ процСсс программирования Π±ΠΎΠ»Π΅Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ, Π° ΡΠ°ΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±ΠΎΠ»Π΅Π΅ Π»Ρ‘Π³ΠΊΠΎΠΉ для восприятия.

Π―Π·Ρ‹ΠΊΠΈ программирования ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Однако Π±Ρ‹Π»ΠΎ Π±Ρ‹ странно ΠΏΠΈΡΠ°Ρ‚ΡŒ всякий Ρ€Π°Π· ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅ΠΉ ΠΈΠ»ΠΈ Π½Π° ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€ — эта ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° трСбуСтся практичСски Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅).

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΡƒΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°Π²Π½ΠΎ ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ€Π΅ΡˆΠ΅Π½Π°.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ каТдая систСма, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ язык программирования (транслятор, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅) ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡŽ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½ΠΎΠΉ стСпСни готовности. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ тСкстов ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, располагаСмый Π² ΠΎΡΠΎΠ±Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…. Π’Π°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.

Для использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° программисту Π±Ρ‹Π²Π°Π΅Ρ‚ достаточно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Для использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π±Ρ‹Π²Π°Π΅Ρ‚ достаточно стандартного Π½Π°Π±ΠΎΡ€Π° языковых срСдств. РСшСниС всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ транслятор ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ Π±Π΅Ρ€ΡƒΡ‚ Π½Π° ΡΠ΅Π±Ρ. РазумССтся, программисту Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ извСстно ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

1. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ языка Π‘ΠΈ

1.1 Π€Π°ΠΉΠ»Ρ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²

ИспользованиС тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² (header-Ρ„Π°ΠΉΠ»ΠΎΠ²), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Ρ‚Скст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ include прСпроцСссора Π‘ΠΈ, являСтся Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΎΠΉ программирования Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Π² Ρ‚ΠΎΠΌ числС ΠΈ ΡΠΈΡΡ‚Π΅ΠΌΠ½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²) Π² ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π Π°Π½Π΅Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ², Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, содСрТали опрСдСлСния Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡ‡Π΅ΡΠΊΠΈΡ… констант (констант, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ сопоставлСны ΠΈΠΌΠ΅Π½Π° посрСдством Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ define прСпроцСссора Π‘ΠΈ), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΈΠ½Ρ‚СрфСйсах ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² позволяло программистам Π½Π΅ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹ΠΌ функциям ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

Однако, Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ соотвСтствовал Π΅Π΅ ΠΈΠ½Ρ‚СрфСйсу, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, содСрТащСС Π΅Π΅ ΠΈΠ½Ρ‚СрфСйс, Π² Ρ„Π°ΠΉΠ»Π΅ компиляции отсутствовало. Π’ Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС ошибки Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° устойчиво ΠΏΡ€ΠΎΡΠ²Π»ΡΠ»ΠΈΡΡŒ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, хотя Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π±Ρ‹Π»ΠΎ просто ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ. Π’ Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π° ΠΏΡ€ΠΈ пСрСносС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π»Π°Π΄Π°Π»ΠΈ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ интСрфСйсами Π² Ρ€Π°Π·Π½Ρ‹Ρ… срСдах, ΠΈ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ срСдС ошибки Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… Π½Π΅ Π±Ρ‹Π»ΠΎ.

Π­Ρ‚Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ (хотя ΠΈ Π½Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ) Π·Π° ΡΡ‡Π΅Ρ‚ ввСдСния Π² ΡΠ·Ρ‹ΠΊ Π‘ΠΈ ΠΏΠΎΠ½ΡΡ‚ия ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π“Ρ€ΡƒΠ±ΠΎ говоря, ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ — это Ρ‡Π°ΡΡ‚ΡŒ Π΅Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡ, содСрТащая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ интСрфСйс (Π±Π΅Π· Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ). НаличиС ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° любой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ допускаСтся Π² Π»ΡŽΠ±ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ компиляции, Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ содСрТащСм Π²Ρ‹Π·ΠΎΠ² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Однако, Ссли Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ содСрТится Π² Ρ„Π°ΠΉΠ»Π΅ компиляции, Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π²Ρ‹Π·ΠΎΠ²Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‚ΠΎΡ‡Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйсу Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Π² Π΅Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ΅.

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠΉ Ρ…ΠΎΠ΄ рассуТдСний ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½. Для Π³Ρ€ΡƒΠΏΠΏΡ‹ родствСнных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ дСлаСтся ΠΎΠ±Ρ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ², содСрТащий Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ опрСдСлСния Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡ‡Π΅ΡΠΊΠΈΡ… констант, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² этих Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ПослС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Ρ„Π°ΠΉΠ» компиляции Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π½Π° ΡΡ‚Π°Π΄ΠΈΠΈ компиляции Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Ρ‹ всС синтаксичСскиС ошибки обращСния ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹ΠΌ функциям. Однако это Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ. Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ программиста Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² Ρ‚Скст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ всС Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ². ΠŸΡƒΡΡ‚ΡŒ этот вопрос Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ программист Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ПослСднСС Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ². Π’ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ врСмя ΠΎΠ½ΠΈ содСрТат большоС количСство ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² условной компиляции, относящихся большСй Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ символичСских констант. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Π²Π΅Ρ€ΡΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы значСния констант, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ смыслом, часто ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, прикладная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. НаличиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² условной компиляции Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

1.2 О ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…

Π‘++ ΠΈ Π΅Π³ΠΎ стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ спроСктированы Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ. Π˜ΠΌΠ΅ΡŽΡ‰Π°ΡΡΡ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ рСализация языка Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Ρ‚ΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ систСм, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… C. Из Π‘++ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ C Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈ с Π‘++ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… срСдств, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° C.

Π’ ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ ΡΡ‚андартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π±ΠΎΠ»Π΅Π΅ сильно ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° с ΡΠ·Ρ‹ΠΊΠΎΠΌ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками программирования высокого уровня. Π‘Π΅Π· использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написана Π½ΠΈ ΠΎΠ΄Π½Π° ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ, Π² Ρ‡Π°ΡΡ‚ности ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² ΡΠ°ΠΌΠΎΠΌ языкС Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… срСдств Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка Π‘ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ любой систСмы программирования языка Π‘ΠΈ Π΄Π»Ρ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ систСмы программирования ΠΈΠ»ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ доступ ΠΊ ΡΠΏΠ΅Ρ†ΠΈΡ„ичСским возмоТностям ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, ΠΈΠ»ΠΈ связаны с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ пСрСносимоС ядро Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ; ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ пСрСнСсСны Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ систСму программирования, Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму ΠΈΠ»ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° с Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΠΌΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ. ΠŸΠ»Π°Ρ‚Π° Π·Π° ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ — Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ спСцифичСскими срСдствами, прСдоставляСмыми ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ срСдой.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ„ункциям ядра Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ структурам Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, ΠΊ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… устройств. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ относятся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, исходя ΠΈΠ· Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ систСмы программирования — ΠΊΠ°ΠΊ ΠΈΠΌ Π²ΠΈΠ΄ΠΈΡ‚ся ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ срСдств для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² — сравнитС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ memset ΠΈ setmem.

Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ принятия стандарта языка Π‘ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π² 1989 Π³ΠΎΠ΄Ρƒ, Π² ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ… программирования Π‘ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ нСобоснованныС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ практичСски исчСзли, Π½ΠΎ Π² Ρ€Π°Π½Π½ΠΈΡ… вСрсиях языка ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Ρ€Π°Π·Π½ΠΎΠ±ΠΎΠΉ Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ Π²Π΅Π»ΠΈΠΊ. К ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡŽ, Π½Π°Π±ΠΎΡ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Ρ‹ Π΄Π°ΠΆΠ΅ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… систСм программирования Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Π½Π° ΠΎΠ΄Π½ΠΎΠΌ Ρ‚ΠΈΠΏΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ². Π­Ρ‚ΠΎ Ρ‡Π΅Ρ‚ΠΊΠΎ прослСТиваСтся Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ систСм программирования Turbo C ΠΎΡ‚ Borland ΠΈ Microsoft C: Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ интСрфСйс для Π²Ρ‹Π·ΠΎΠ²Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π½ΠΎ ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ названия.

Π­Ρ‚ΠΈ нСсогласованности объяснялись, с ΠΎΠ΄Π½ΠΎΠΉ стороны, коммСрчСскими сообраТСниями стрСмлСниСм ΡƒΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ Ρ€Ρ‹Π½ΠΎΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, Π½Π°Ρ‡Π°Π²ΡˆΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠΉ систСмы программирования, ΠΏΠΎΠΊΡƒΠΏΠ°Π»ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ„ΠΈΡ€ΠΌΡ‹, Π° Ρ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΏΠΎΠ·Π΄Π½ΠΈΠΌ появлСниСм стандарта Π½Π° ΡΠ·Ρ‹ΠΊ ΠΈ Π½Π° Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡ‹Π΅ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ ΠΎΡ‚ Π²Π΅Ρ€ΡΠΈΠΈ ΠΊ Π²Π΅Ρ€ΡΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ систСмы программирования. (Напомним, Ρ‡Ρ‚ΠΎ стандарт языка Π±Ρ‹Π» принят ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΡŒ Π»Π΅Ρ‚ послС Π΅Π³ΠΎ появлСния ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π΄Π΅ΡΡΡ‚ΡŒ Π»Π΅Ρ‚ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΡƒΠΆΠ΅ Π½Π°Ρ‡Π°Π»ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ) ΠŸΡ€ΠΈ этом, Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, происходило постСпСнноС сблиТСниС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… систСм программирования ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ каТдая ΠΈΠ· Π½ΠΈΡ… заимствовала Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ†Π΅Π½Π½Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ Ρƒ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠ². Π’Π°ΠΊ, различия ΠΌΠ΅ΠΆΠ΄Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ послСдних систСм программирования Turbo C ΠΈ Microsoft C ΠΏΡ€Π°ΠΊΡ‚ичСски ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚.

1.3 Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ ANSI C

Π—Π΄Π΅ΡΡŒ содСрТатся нСстрогиС Π²Ρ‹Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ· ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π° ISO/IEC 9899:1993 — Programming language C, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… соглашСний ΠΎ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ….

1. КаТдая функция описываСтся Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, Π³Π΄Π΅ содСрТатся ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ (описания) Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… схоТих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°) ΠΈ, ΠΏΡ€ΠΈ нСобходимости, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΡƒΡ‚Π΅ΠΌ указания Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ прСпроцСссора #include Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ;

2. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΌΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ:, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, , ;

3. ВсС стандартныС Π±Π°Π±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² Π»ΡŽΠ±ΠΎΠΌ мСстС, прСдусмотрСнном синтаксисом языка, ΠΊΡ€ΠΎΠΌΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ зависит ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ NDEBUG). Π­Ρ‚ΠΎ Π½Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ влияния Π½Π° ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Однако ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ любой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π΅Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ, Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ€Π°Π½ΡŒΡˆΠ΅ Π²Ρ‹Π·ΠΎΠ²Π° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ;

4. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… лСксичСски ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡΠΌΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ — Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, прСпроцСссор Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ ΠΈΠΌΠ΅Π½Π° макросов Π½Π° Π²Π½ΠΎΠ²ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅, Π° Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ выраТСния;

5. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ опрСдСлСния Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π±Π΅Π· указания external (external linkage).

2. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ math. h

Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: ACOS

#include

double acos (x);

double x;

ОписаниС: Ѐункция acos Π²ΠΎΠ·Π²Ρ€aΡ‰aΠ΅Ρ‚ арккосинус x Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅ ΠΎΡ‚ 0 Π΄ΠΎ n. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ -1 ΠΈ 1.

Π’ΠΎΠ·Π²Ρ€aΡ‰aΠ΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: Ѐункция acos Π²ΠΎΠ·Π²Ρ€aΡ‰aΠ΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ aрккосинусa. Если x ΠΌΠ΅Π½ΡŒΡˆΠ΅ -1 ΠΈΠ»ΠΈ большС 1, acos устaΠ½aΠ²Π»ΠΈΠ²aΠ΅Ρ‚ errno Π² EDOM, ΠΏΠ΅Ρ‡aΡ‚aΠ΅Ρ‚ сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅ DOMAIN Π² stderr ΠΈ Π²ΠΎΠ·Π²Ρ€aΡ‰aΠ΅Ρ‚ 0.

ΠžΠ±Ρ€aΠ±ΠΎΡ‚ΠΊa ошибок ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²aΠ½a ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ matherr.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΠ³Ρ€aΠΌΠΌa Π²Ρ‹Π΄Π°Π΅Ρ‚ подсказки для Π²Π²ΠΎΠ΄a Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊa Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅ ΠΎΡ‚ -1 Π΄ΠΎ 1.

#include

int errno;

main ()

{ float x, y;

for (errno=EDOM;errno==EDOM;y=acos (x))

{ printf («Cosine=»);

scanf («%f» ,&x);

errno = 0; }

printf («Arc cosine of %f = %fn», x, y); }

ΠžΠ±Ρ€aΠ·Π΅Ρ† Π²Ρ‹Π²ΠΎΠ΄a:

Cosine = 3

acos: DOMAIN error

Cosine = -1.0

Arc cosine of -1.0 = 3.141 593

Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: ASIN

#include

double asin (x);

double x;

ОписаниС. Ѐункция asin вычисляСт арксинус x Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅n/2 Π΄ΠΎ n/2. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ -1 ΠΈ 1.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: Ѐункция asin Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ арксинуса. Если x ΠΌΠ΅Π½ΡŒΡˆΠ΅ -1 ΠΈΠ»ΠΈ большС 1, asin устанавливаСт errno Π² EDOM, ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅ DOMAIN Π² stderr ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0.

ΠžΠ±Ρ€aΠ±ΠΎΡ‚ΠΊa ошибок ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²aΠ½a ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ matherr.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

#include

int errno;

main ()

{ float x, y;

for (errno=EDOM; errno==EDOM; y=asin (x)) {

printf («Π‘инус = «);

scanf («%f,&x);

errno=0; }

printf («Π°Ρ€ΠΊΡΠΈΠ½ΡƒΡ ΠΎΡ‚ %f=%fn», x, y); }

Π’Π«Π’ΠžΠ”:

Бинус = -1.001

asin: DOMAIN error

Бинус = -1

Арксинус ΠΎΡ‚ -1.0 = -1.570 796

Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: ATAN-ATAN2

#include

double atan (x);

double (x);

double atan2(y, x);

double x;

double y;

ОписаниС: atan ΠΈ atan2 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ арктангСнс x ΠΈ y/x соотвСтствСнно: atan Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΡ‚ΠΏΠΈ/2 Π΄ΠΎ ΠΏΠΈ/2; atan2 Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΡ‚ΠΏΠΈ Π΄ΠΎ ΠΏΠΈ.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: atan ΠΈ atan2 Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ арктангСнса.0, Ссли ΠΎΠ±Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ atan2 Π½ΡƒΠ»Π΅Π²Ρ‹Π΅; ΠΏΡ€ΠΈ этом errno устанавливаСтся Π² EDOM ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚аСтся сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅ DOMAIN Π² stderr.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибки ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ matherr.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

#include

printf («%.7fn», atan (1.0));

printf («%.7fn» atan2(-1.0,1.0);

Π’Π«Π’ΠžΠ”:

0.7 853 982

— 0.7 853 982

Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: CABS

#include

double cabs (z);

struct compex z;

ОписаниС: Cabs функция вычисляСт Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ комплСксного числа. КомплСксноС число Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ структуру Ρ‚ΠΈΠΏΠ° complex, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² math. h Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅:

struct complex { double x, y; };

Π’Ρ‹Π·ΠΎΠ² cabs эквивалСтно sgrt (z.x*z.x+x.y*z.y)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: Cabs Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. НСт ΠΊΠΎΠ΄ΠΎΠ² ошибок.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

#include

struct complex value;

double d;

value.x=3.0;

value.y=4.0;

d=cabs (value);

Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: CEIL

#include

double ceil (x);

double x;

ОписаниС: Ceil функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ самоС малСнькоС Ρ†Π΅Π»ΠΎΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: Число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. НСт ΠΊΠΎΠ΄ΠΎΠ² ошибок.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

#include

double y;

y=ceil (1.05); /*y=2.0 */

y=ceil (-1.05); /*y=-1.0 */

Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: FABS

#include

double fabs (x);

double x; Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ

ОписаниС: Ѐункция fabs Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ своСго Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: Ѐункция fabs Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ своСго Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния Π² ΡΠ»ΡƒΡ‡Π°Π΅ ошибки Π½Π΅Ρ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

#include

double x, y;

y = fabs (x);.

Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: FLOOR

#include

double floor (x);

double x; Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

ОписаниС: Ѐункция floor Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ наибольшСС Ρ†Π΅Π»ΠΎΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ x.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: Ѐункция floor Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния Π² ΡΠ»ΡƒΡ‡Π°Π΅ ошибки Π½Π΅Ρ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

#include

double y;

y = floor (2.8); /* y = 2.0 */

y = floor (-2.8); /* y = -3.0 */

Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: FMOD

#include

double fmod (x, y);

double x; Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

double y;

ОписаниС: Ѐункция fmod вычисляСт остаток ΠΎΡ‚ Π΄Π΅Π»Π΅Π½ΠΈΡ x Π½Π° y Ρ ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, Π³Π΄Π΅ x=iy+f, i — Ρ†Π΅Π»ΠΎΠ΅, f — ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π·Π½Π°ΠΊ, Ρ‡Ρ‚ΠΎ x; Π° Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x ΠΌΠ΅Π½ΡŒΡˆΠ΅, Ρ‡Π΅ΠΌ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ y.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.: Ѐункция fmod Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ остаток с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. Если y Ρ€Π°Π²Π½ΠΎ 0, функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

#include

double x, y, z;

x = -10.0;

y = 3.0;

z = fmod (x, y); /* z = -1.0 */.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

#include

int errno;

main ()

{ float x, y;

for (errno=EDOM; errno==EDOM; y=asin (x)) {

printf («Sine=»);

scanf («%f», &x);

errno = 0; }

printf («Arc sine of %fn», x, y);}

На Π²Ρ‹Ρ…ΠΎΠ΄Π΅:

Sine = -1.001

asin: DOMAIN error

Sine = -1

Arc sine of -1.0=-1.570 796

Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: LDEXP

#include

double ldext (x, exp);

double x; Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ

int *exp; цСлая экспонСнта

ОписаниС.: Ѐункция ldexp Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ x, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π½Π° 2 Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΠΈ exp.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: ldexp Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ x, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π½Π° 2 Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΠΈ exp. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ пСрСполнСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ +HUGE ΠΈΠ»ΠΈHUGE (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Π·Π½Π°ΠΊΠ° x) ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ errno Π² ERANGE.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

#include

double x, y;

int p;

x = 1.5;

p = 5;

y = ldexp (x, p); /* y = 48.0 */

Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: POW

#include

double pow (x, y);

double x; Π²ΠΎΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ число

double y; ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ числа x

ОписаниС: Ѐункция pow вычисляСт x, Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ y.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: Ѐункция pow Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΠΈ y. Если y Ρ€Π°Π²Π½Π° 0, pow Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1. Если x Ρ€Π°Π²Π½ΠΎ 0 ΠΈ y ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ, pow устанавливаСт errno Π² ERANGE ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ HUGE. Если x ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Π° y Π½Π΅ являСтся Ρ†Π΅Π»ΠΎΠΉ, функция ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅ DOMAIN Π² stderr, устанавливаСт errno Π² ERANGE ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Π»ΠΈΠ±ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ HUGE. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ пСрСполнСния ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ значимости Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ сообщСния Π½Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚аСтся.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

#include

double x = 2.0, y = 3.0, z;

z = pow (x, y); /* z = 8.0 */

Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: SIN-SINH

#include

double sin (x); вычисляСт синус x

double sinh (x); вычисляСт гипСрболичСский синус x

double x; Ρ€Π°Π΄ΠΈΠ°Π½

ОписаниС: Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ sin ΠΈ sinh Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ соотвСтствСнно синус ΠΈ Π³ΠΈΠΏΠ΅Ρ€Π±ΠΎΠ»ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ синус x.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.:Ѐункция sin Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ синус x. Если x Π±ΠΎΠ»ΡŒΡˆΠΎΠΉ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ частичная потСря значимости Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π’ ΡΡ‚ΠΎΠΌ случаС sin Π²Ρ‹Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ PLOSS, Π½ΠΎ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π½Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚. Если x Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ большой, Ρ‡Ρ‚ΠΎ тСряСтся общая Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Ρ‚ΠΎΠ³Π΄Π° sin ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅ TLOSS Π² stderr ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0. Π’ ΠΎΠ±ΠΎΠΈΡ… случаях errno устанавливаСтся Π² ERANGE. Ѐункция sinh Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ гипСрболичСский синус x. Если Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ большой, sinh Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ HUGE (ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Π·Π½Π°ΠΊΠ° x) ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ errno Π² ERANGE.

ΠžΠ±Ρ€aΠ±ΠΎΡ‚ΠΊa ошибок ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²aΠ½a ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ matherr.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

#include

double pi = 3.1 415 926 535,x, y;

x = pi/2;);

y = sin (x); /* y Ρ€Π°Π²Π΅Π½ 1.0 */

y = sinh (x); /* y Ρ€Π°Π²Π΅Π½ 2.3 */

Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: SQRT

#include

double sqrt (x);

double x; Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ

ОписаниС: Ѐункция sqrt вычисляСт ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ x.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: Ѐункция sqrt Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСния ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ корня. Если x — ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, функция ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅ DOMAIN Π² stderr, устанавливаСт errno Π² EDOM ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0.

ΠžΠ±Ρ€aΠ±ΠΎΡ‚ΠΊa ошибок ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²aΠ½a ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ matherr.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

#include

#include

double x, y, z;

if ((z = sqrt (x+y))==o.0)

if ((x+y) < 0.0)

perror («sqrt of a negative number»);

Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: TAN-TANH

#include

double tan (x); вычисляСт тангСнс x

double tanh (x); вычисляСт гипСрболичСский тангСнс x

double x; Ρ€Π°Π΄ΠΈΠ°Π½

ОписаниС: Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ tan ΠΈ tanh Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ соотвСтствСнно тангСнс ΠΈ Π³ΠΈΠΏΠ΅Ρ€Π±ΠΎΠ»ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ тангСнс x.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: Ѐункция tan Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ тангСнс x. Если x Π±ΠΎΠ»ΡŒΡˆΠΎΠΉ, ΠΏΡ€ΠΈ вычислСниях ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ частичная потСря значимости. Π’ ΡΡ‚ΠΎΠΌ случаС tan Π²Ρ‹Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ PLOSS, Π½ΠΎ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π½Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚. Если x Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ большой, Ρ‡Ρ‚ΠΎ общая Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° тСряСтся, Ρ‚ΠΎΠ³Π΄Π° tan ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅ TLOSS Π² stderr ΠΈ Π²ΠΎΠ·Π² Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0. Π’ ΠΎΠ±ΠΎΠΈΡ… случаях errno устанавливаСтся Π² ERANGE. Ѐункция tanh Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ гипСрболичСский тангСнс x.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния Π² ΡΠ»ΡƒΡ‡Π°Π΅ ошибки Π½Π΅Ρ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

#include

double pi, x, y;

pi = 3.1 415 926 535;

x = tan (pi/4.0); /* x Ρ€Π°Π²Π΅Π½ 1.0 */

y = tanh (x); /* y Ρ€Π°Π²Π΅Π½ 1.6 */

3. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ошибки

Ошибки, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ матСматичСскими ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π‘ΠΈ. Π­Ρ‚ΠΈ ошибки ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π², ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ matherr.

Π’Π°Π±Π»ΠΈΡ†Π° 1.

Ошибка

ОписаниС

DOMAIN

АргумСнт для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ находится Π²Π½Π΅ области опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

(Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ log (-1));

OVERFLOW

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ большой для прСдоставлСния Π΅Π³ΠΎ Π² Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ.

(Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ exp (1000));

PLOSS

Π’ΠΎΠ·Π½ΠΈΠΊΠ»Π° частичная потСря значимости.

SING

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°: Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, пСрСсылаСтся значСния 0 ΠΊ Ρ‚ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ значСния).

(Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ pow (0,-2));

TLOSS

Π’ΠΎΠ·Π½ΠΈΠΊΠ»Π° общая потСря значимости.

(Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ sin (10e70))

UNDERFLOW

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ малСнький для прСдоставлСния Π΅Π³ΠΎ Π² Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ.

(Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ exp (-1000));

Имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: matherr

ОписаниС: ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, модифицируСмая ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Ѐункция matherr вызываСтся для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… функциями ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ матСматичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Бинтаксис #include

int matherr (struct exception *e);

matherr слуТит Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Π»ΠΎΠ²ΡƒΡˆΠΊΠΈ, (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ опрСдСляСмой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ) ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ сами (смотритС ΠΏΡ€ΠΈΠΌΠ΅Ρ€). matherr соТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для отслСТивания ошибок области опрСдСлСния ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, происходящих Π² ΠΌΠ°Ρ‚СматичСских функциях. Она Π½Π΅ ΠΎΡ‚слСТиваСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌΠΈ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π° 0). Для отслСТивания Ρ‚Π°ΠΊΠΈΡ… ошибок смотри Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ signal.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ matherr ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для вашСго случая (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π»Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ошибок); модифицированная функция matherr Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ 0, Ссли ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΈ 1, Ссли ошибка ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π°. Если функция matherr Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅ Π½Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚аСтся, ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ errno Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ‚ся.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° структура exception (опрСдСлСнная Π² Ρ„Π°ΠΉΠ»Π΅ math. h):

struct exception {

int type;

char *Function;

double arg1, arg2, retval;

};

БоставныС части структуры exception ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π’Π°Π±Π»ΠΈΡ†Π° 2.

Имя

Π§Ρ‚ΠΎ это

Type

Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠ΅ΠΉ матСматичСской ошибки; Ρ‚ΠΈΠΏ enum ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² typedef_mexcep (смотритС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ послС Π΄Π°Π½Π½ΠΎΠ³ΠΎ списка).

Function

ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ строку с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ΠΌ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ имя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠΉ матСматичСской Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Π²Ρ‹Π΄Π°Π»Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ.

arg1,arg2

Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ (ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Π²Π°Π»ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ; Ссли Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ пСрСдаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΠΎΠ½ Ρ…ранится Π² arg1.

Retval

стандартноС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ matherr; Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ typedef_mexcep, Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² Ρ„Π°ΠΉΠ»Π΅ math. h, пСрСчисляСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ символичСскиС константы, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ собой Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ матСматичСскиС ошибки: (см. Π’Π°Π±Π»ΠΈΡ†Ρƒ 1).

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ matherr, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ находится Π½Π° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΠ²Π½Ρ‹Ρ… дисках с ΡΠΈΡΡ‚Π΅ΠΌΠΎΠΉ Turbo C++.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ UNIX Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ matherr нСсовмСстим со ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΎΠΌ ANSI C. Если Π²Π°ΠΌ трСбуСтся вСрсия Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ matherr для систСмы UNIX, ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ matherr. c, поставляСмой Π½Π° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΠ²Π½Ρ‹Ρ… дискСтах ΠΏΠ°ΠΊΠ΅Ρ‚Π° Turbo C.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ функция matherr Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 1 Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ошибка UNDERFLOW ΠΈΠ»ΠΈ TLOSS, ΠΈΠ½Π°Ρ‡Π΅ 0. Ѐункция matherr Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ e->retval, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ посрСдством Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ matherr пСрСдаСтся Π² Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Когда функция matherr Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0, (ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚), функция _matherr устанавливаСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ errno ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅. Когда функция matherr Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, (ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ ошибка ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π°), глобальная пСрСмСнная errno Π½Π΅ ΡƒΡΡ‚анавливаСтся ΠΈ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅ Π½Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ся.

ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ matherr доступна Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… компиляторах Π‘ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½Π° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ся стандартом ANSI C.

matherr Π² ΡΡ‚ΠΈΠ»Π΅ систСмы UNIX (которая ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ сообщСниС ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) поставляСтся вмСстС с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ Turbo C++ Π² Ρ„Π°ΠΉΠ»Π΅ MATHERR.C. matherr ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… вСрсиях Turbo C++.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

#include

#include

#include

int matherr (struct exception *a);

{

if (a -> type == DOMAIN)

{

if (strcmp (a -> name, «sqrt») == 0)

{

a -> retval = sqrt (-(a -> arg1));

return (1);

}

}

return (0);

}

int main (void)

{

double x, y;

x = -2.0;

y = sqrt (x);

printf («Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, скоррСктированноС matherr: %lfn», y);

return 0;

}

4. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ

4.1 ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ выполнСния Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ я ΠΏΠΎΡΡ‚Π°Π²ΠΈΠ» для сСбя Ρ†Π΅Π»ΡŒΡŽ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ°Ρ‚СматичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΡΠΈΡΡ‚Π΅ΠΌΠ½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ языка Π‘++, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ гСомСтричСскиС, тригономСтричСскиС ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ нСстандартныС матСматичСскиС расчёты. Π’ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ я Π±ΡƒΠ΄Ρƒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ расчёты ΠΏΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ, Π²Π²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹.

Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована студСнтами для изучСния матСматичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… занятиях ΠΏΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ тСорСтичСского ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΈ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Сния практичСских Π½Π°Π²Ρ‹ΠΊΠΎΠ² ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «Π‘истСмноС ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅», Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой MS DOS.

4.2 ОписаниС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Моя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для дСмонстрации Ρ€Π°Π±ΠΎΡ‚Ρ‹ созданной ΠΌΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ псСвдографичСскоС мСню, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ²:

ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΊΡ€ΡƒΠ³Π°.

ΠžΠ±ΡŠΡ‘ΠΌ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€Π°.

ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€Π°.

ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ‚Ρ€Π°ΠΏΠ΅Ρ†ΠΈΠΈ.

ΠžΠ±ΡŠΡ‘ΠΌ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹.

ΠžΠ±ΡŠΡ‘ΠΌ ΡˆΠ°Ρ€Π°.

ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ сфСры.

Π€Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π».

Π’Ρ‹Ρ…ΠΎΠ΄.

ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Enter, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Ρ€Π°ΡΡ‡Ρ‘Ρ‚Π°ΠΌ ΠΈΠ»ΠΈ, Ссли Π²Ρ‹Π±Ρ€Π°Π½ ΠΏΡƒΠ½ΠΊΡ‚ «Π’Ρ‹Ρ…ΠΎΠ΄», Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Для Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ ESC.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ встроСнныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π‘++.

Π’Π°Π±Π»ΠΈΡ†Π°. 3

НазваниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

ОписаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Iostream.h

ΠŸΠΎΡ‚ΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π° Π²Ρ‹Π²ΠΎΠ΄Π°

Conio.h

ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

Math.h

ИспользованиС матСматичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

А Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΈΠΌΠΎ стандартных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, подгруТаСтся matfac. cpp — разработанная ΠΌΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°.

ΠŸΠΎΡ‡Ρ‚ΠΈ Π² Π»ΡŽΠ±ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ ΠΎΠ±ΠΎΠΉΠ΄Π΅ΡˆΡŒΡΡ Π±Π΅Π· собствСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠ½ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° становится Π±ΠΎΠ»Π΅Π΅ понятна ΠΈ ΡƒΠ΄ΠΎΠ±Π½Π° Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ.

Π’ ΠΌΠΎΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ нСсколько своих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

f1-f8 — Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ описанным Π²Ρ‹ΡˆΠ΅ ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌ мСню (ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΊΡ€ΡƒΠ³Π°, ΠžΠ±ΡŠΡ‘ΠΌ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€Π°, …, Π’Ρ‹Ρ…ΠΎΠ΄.).

sw — функция для Π²Ρ‹Π·ΠΎΠ²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (f1-f8).

mn — функция для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ мСню.

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sw ΠΈ mn Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ пСрСмСнная ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ мСню, Π° Ρ‚Π°ΠΊΠΆΠ΅ массив строк.

НСпосрСдствСнно ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ f1-f8 ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ся описанныС мною Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· matfac.cpp.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² #include Π² Π³ΠΎΠ»ΠΎΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹: matfac.cpp. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Ρ‡Ρ‚ΠΎ всС ΠΎΠ½ΠΈ находятся Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ диска Π‘:. Если это Π½Π΅ Ρ‚Π°ΠΊ, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #include.

Листинги исполняСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ kurs. cpp ΠΈ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ модуля matfac. cpp прСдставлСны Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ… 1 ΠΈ 2.

5. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΌΠ½ΠΎΠΉ Π±Ρ‹Π» рассмотрСн стандартный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ°Ρ‚СматичСскими функциями Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C++ «math.h». А Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ собствСнный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для вычислСния ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ, ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠ² гСомСтричСских Ρ„ΠΈΠ³ΡƒΡ€ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Данная Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° ΠΌΠ½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ³Π»ΡƒΠ±Π»Π΅Π½Π½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΌΠ°Ρ‚СматичСскими функциями, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ тонкости языка. Π’ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Π±Ρ‹Π»Π° создана ΠΈ ΠΎΠΏΠΈΡΠ°Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ гСомСтричСскиС Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹.

Данная Ρ€Π°Π±ΠΎΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… цСлях, Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΠ΄Π° модуля ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ°Ρ‚СматичСскими функциями, Π½Π° Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… занятиях ΠΏΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ тСорСтичСского ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΈ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Сния практичСских Π½Π°Π²Ρ‹ΠΊΠΎΠ² ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «Π‘истСмноС ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅».

6. Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

1. М. И. Болски. Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ. 1988 Π³.

2. Π‘. И. Π‘Π΅Ρ€Π΅Π·ΠΈΠ½. ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ курс Π‘ ΠΈ Π‘++. М., 2001 Π³.

3. Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ рСсурсы (www.citforum.ru)

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1

Листинг основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (kurs).

#include

#include

#include

#include

//#include

void f1(char menu [9][30])// ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΊΡ€ΡƒΠ³Π°

{

float r;

gotoxy (15,10);

cout<

<

cout<<" Π’Π²Π΅Π΄ΠΈΡ‚Π΅ радиус n" ;cin>>r;

cout<< menu[1]<<" ="<

getch ();

}

void f2(char menu [9][30])// ΠžΠ±ΡŠΡ‘ΠΌ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€Π°

{

float r, h;

gotoxy (15,10);

cout<

<

cout<<" Π’Π²Π΅Π΄ΠΈΡ‚Π΅ радиус n" ;cin>>r;

cout<<" Π’Π²Π΅Π΄ΠΈΡ‚Π΅ высоту n" ;cin>>h;

cout<< menu[2]<<" ="<

getch ();

}

void f3(char menu [9][30])// ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€Π°

{

float r, h;

gotoxy (15,10);

cout<

<

cout<<" Π’Π²Π΅Π΄ΠΈΡ‚Π΅ радиус n" ;cin>>r;

cout<<" Π’Π²Π΅Π΄ΠΈΡ‚Π΅ высоту n" ;cin>>h;

cout<< menu[3]<<" ="<

getch ();

}

void f4(char menu [9][30])// ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ‚Ρ€Π°ΠΏΠ΅Ρ†ΠΈΠΈ

{

float a, b, h;

gotoxy (15,10);

cout<

<

cout<<" Π’Π²Π΅Π΄ΠΈΡ‚Π΅ сторону a n" ;cin>>a;

cout<<" Π’Π²Π΅Π΄ΠΈΡ‚Π΅ сторону b n" ;cin>>b;

cout<<" Π’Π²Π΅Π΄ΠΈΡ‚Π΅ высоту h n" ;cin>>h;

cout<< menu[4]<<" ="<

getch ();

}

void f5(char menu [9][30])// ΠžΠ±ΡŠΡ‘ΠΌ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹

{

float a, b, h;

gotoxy (15,10);

cout<

<

cout<<" Π’Π²Π΅Π΄ΠΈΡ‚Π΅ a n" ;cin>>a;

cout<<" Π’Π²Π΅Π΄ΠΈΡ‚Π΅ b n" ;cin>>b;

cout<<" Π’Π²Π΅Π΄ΠΈΡ‚Π΅ h n" ;cin>>h;

cout<< menu[5]<<" ="<

getch ();

}

void f6(char menu [9][30])// ΠžΠ±ΡŠΡ‘ΠΌ ΡˆΠ°Ρ€Π°

{

float r;

gotoxy (15,10);

cout<

<

cout<<" Π’Π²Π΅Π΄ΠΈΡ‚Π΅ радиус n" ;cin>>r;

cout<< menu[6]<<" ="<

getch ();

}

void f7(char menu [9][30])// ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ сфСры

{float r;

gotoxy (15,10);

cout<

<

cout<<" Π’Π²Π΅Π΄ΠΈΡ‚Π΅ радиус rn" ;cin>>r;

cout<< menu[7]<<" ="<

getch ();

}

void f8(char menu [9][30])// Π€Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»

{float r;

gotoxy (15,10);

cout<

<

cout<<" Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число n" ;cin>>r;

cout<< menu[8]<<" ="<< fac®;

getch ();

}

short sw (short k, char menu[9][30])//Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

{

short kod=1;

switch (k)

{

case (1):f1(menu);break;

case (2):f2(menu);break;

case (3):f3(menu);break;

case (4):f4(menu);break;

case (5):f5(menu);break;

case (6):f6(menu);break;

case (7):f7(menu);break;

case (8):f8(menu);break;

case (9):cout<

<

}

}

void mn (short k, char menu [9][30])//мСню

{

clrscr ();

textattr (7);

for (int i=1;i<10;i++)

{

gotoxy (15,i+5);

if (k==i) {

textattr (2);

cprintf (menu[i]);

textattr (7);

} else cprintf (menu[i]);

}

}

void main ()

{

clrscr ();

char menu [9][30]; //массив строк

strcpy (menu[1]," ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΊΡ€ΡƒΠ³Π°");

strcpy (menu[2]," ΠžΠ±ΡŠΡ‘ΠΌ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€Π°");

strcpy (menu[3]," ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€Π°");

strcpy (menu[4]," ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ‚Ρ€Π°ΠΏΠ΅Ρ†ΠΈΠΈ");

strcpy (menu[5]," ΠžΠ±ΡŠΡ‘ΠΌ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹");

strcpy (menu[6]," ΠžΠ±ΡŠΡ‘ΠΌ ΡˆΠ°Ρ€Π°");

strcpy (menu[7]," ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ сфСры");

strcpy (menu[8]," Π€Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»");

strcpy (menu[9]," Π’Ρ‹Ρ…ΠΎΠ΄");

short k=1, kod=1;

mn (k, menu);

do

{

kod=getch ();

switch (kod)//ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°ΠΆΠ°Ρ‚Ρ‹Π΅ клавиши

{

// case (27):{ return;};break;//ESC

case (80):{k++;if (k>9) k=9; mn (k, menu);};break;//стрСлка Π²Π²Π΅Ρ€Ρ…

case (72):{k—;if (k<1) k=1; mn (k, menu);};break;// стрСлка Π²Π½ΠΈΠ·

case (13): clrscr ();kod=sw (k, menu);mn (k, menu);break;//enter

}

} while (kod≠27); //ESC

}

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2

Листинг модуля «matfac.cpp».

#include

#define M_PI 3.14 159 265 358 979 323 904

float fac (float n) //factorial1

{

float f=0;

if (n≠0)

{

f=1;

for (int i=1;i<=n;i++)

{

f*=i;

}

} else f=0;

return f;

}

float Sokr (float r) //ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Π³Ρ€ΡƒΠ³Π°2

{

return (M_PI*r*r);

}

float VCil (float r, float h) //ΠΎΠ±ΡŠΡ‘ΠΌ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€Π°3

{

return (M_PI*r*r*h);

}

float SCil (float r, float h) //ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€Π°4

{

return (M_PI*2*r*(r+h));

}

float STrap (float a, float b, float h) //ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ‚Ρ€Π°ΠΏΠ΅Ρ†ΠΈΠΈ5

{

return ((a+b)/(2*h));

}

float VPir (float a, float b, float h) //ΠΎΠ±ΡŠΡ‘ΠΌ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹6

{

return ((a*b*h)/3);

}

float VSfer (float r) //ΠΎΠ±ΡŠΡ‘ΠΌ ΡˆΠ°Ρ€Π°7

{

return (4*M_PI*r*r)/3;

}

float SSfer (float r) //ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ сфСры8

{

return (4*M_PI*r*r);

}

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ