Основы языка программирования C++ с применением объектно-ориентированного программирования. Чернышов М.К. - 32 стр.

UptoLike

Составители: 

ɜɵɡɵɜɚɬɶ ɋɢ-ɩɪɨɝɪɚɦɦɵ ɢɡ ɤɨɦɚɧɞɧɨɣ ɫɬɪɨɤɢ MS DOS ɫ ɩɟɪɟɞɚɱɟɣ ɜ ɩɪɨ-
ɝɪɚɦɦɭ ɧɟɨɛɯɨɞɢɦɵɯ ɚɪɝɭɦɟɧɬɨɜ. ɋɬɚɧɞɚɪɬɧɵɣ ɩɪɨɬɨɬɢɩ ɮɭɧɤɰɢɢ
main
ɢɦɟɟɬ ɜɢɞ.
int main (int argc, char *argv[], char *envp[])
ȼ ɤɨɧɤɪɟɬɧɨɣ ɩɪɨɝɪɚɦɦɟ ɦɨɠɧɨ ɨɛɴɹɜɥɹɬɶ ɮɭɧɤɰɢɸ main ɛɟɡ ɜɨɡɜɪɚ-
ɳɚɟɦɨɝɨ ɡɧɚɱɟɧɢɹ (ɜɨɡɜɪɚɳɚɸɳɭɸ ɬɢɩ
void) ɫ ɢɫɩɨɥɶɡɨɜɚɧɢɟɦ ɬɨɥɶɤɨ
ɞɜɭɯ ɩɟɪɜɵɯ ɩɚɪɚɦɟɬɪɨɜ ɢɥɢ ɜɨɨɛɳɟ ɛɟɡ ɩɚɪɚɦɟɬɪɨɜ. ɉɚɪɚɦɟɬɪɵ
argc ɢ
argv ɫɥɭɠɚɬ ɞɥɹ ɩɟɪɟɞɚɱɢ ɜ ɩɪɨɝɪɚɦɦɭ ɚɪɝɭɦɟɧɬɨɜ ɜ ɜɢɞɟ ɦɚɫɫɢɜɚ ɫɬɪɨɤ.
ɉɚɪɚɦɟɬɪ
argc ɫɨɞɟɪɠɢɬ ɱɢɫɥɨ ɷɥɟɦɟɧɬɨɜ ɷɬɨɝɨ ɦɚɫɫɢɜɚ, argv - ɷɬɨ ɦɚɫɫɢɜ
ɭɤɚɡɚɬɟɥɟɣ ɧɚ ɩɟɪɟɞɚɜɚɟɦɵɟ ɫɬɪɨɤɢ, ɩɪɢɱɟɦ ɩɟɪɜɵɣ ɷɥɟɦɟɧɬ ɦɚɫɫɢɜɚ, ɧɚ
ɤɨɬɨɪɵɣ ɭɤɚɡɵɜɚɟɬ
argv[0], ɫɨɞɟɪɠɢɬ ɢɦɹ ɩɪɨɝɪɚɦɦɵ (ɢɦɹ exe-ɮɚɣɥɚ
ɩɪɨɝɪɚɦɦɵ), ɨɫɬɚɥɶɧɵɟ ɷɥɟɦɟɧɬɵ ɩɪɟɞɫɬɚɜɥɹɸɬ ɫɨɛɨɣ ɚɪɝɭɦɟɧɬɵ ɢɡ ɤɨ-
ɦɚɧɞɧɨɣ ɫɬɪɨɤɢ MS DOS. ɉɚɪɚɦɟɬɪ
envp ɢɫɩɨɥɶɡɭɟɬɫɹ ɞɥɹ ɞɨɫɬɭɩɚ ɤ ɷɥɟ-
ɦɟɧɬɚɦ ɬɟɤɭɳɟɣ ɫɪɟɞɵ MS DOS.
2.7. Ȼɢɛɥɢɨɬɟɤɚ ɜɪɟɦɟɧɢ ɜɵɩɨɥɧɟɧɢɹ
ȼ ɨɩɪɟɞɟɥɟɧɢɢ ɹɡɵɤɨɜ ɋɢ ɢ ɋɢ++ ɨɬɫɭɬɫɬɜɭɸɬ ɨɩɟɪɚɬɨɪɵ ɜɜɨɞɚ-
ɜɵɜɨɞɚ, ɨɩɟɪɚɰɢɢ ɧɚɞ ɫɬɪɨɤɨɜɵɦɢ ɞɚɧɧɵɦɢ ɢ ɦɧɨɝɢɟ ɞɪɭɝɢɟ ɫɪɟɞɫɬɜɚ,
ɢɦɟɸɳɢɟɫɹ ɜ ɞɪɭɝɢɯ ɹɡɵɤɚɯ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ. ɗɬɨɬ ɧɟɞɨɫɬɚɬɨɤ ɤɨɦɩɟɧ-
ɫɢɪɭɟɬɫɹ ɞɨɛɚɜɥɟɧɢɟɦ ɜ ɫɢɫɬɟɦɵ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ ɋɢ ɢ ɋɢ++ ɛɢɛɥɢɨɬɟɤ
ɮɭɧɤɰɢɣ, ɩɨɞɤɥɸɱɚɟɦɵɯ ɤ ɪɚɛɨɱɢɦ ɩɪɨɝɪɚɦɦɚɦ ɩɪɢ ɪɟɞɚɤɬɢɪɨɜɚɧɢɢ ɫɜɹ-
ɡɟɣ ɢ ɧɚɡɵɜɚɟɦɵɯ ɛɢɛɥɢɨɬɟɤɚɦɢ ɜɪɟɦɟɧɢ ɜɵɩɨɥɧɟɧɢɹ. Ɉɬɞɟɥɟɧɢɟ ɷɬɢɯ
ɛɢɛɥɢɨɬɟɤ ɨɬ ɤɨɦɩɢɥɹɬɨɪɚ ɩɨɡɜɨɥɹɟɬ ɜ ɧɟɨɛɯɨɞɢɦɵɯ ɫɥɭɱɚɹɯ ɢɫɩɨɥɶɡɨɜɚɬɶ
ɪɚɡɥɢɱɧɵɟ ɜɚɪɢɚɧɬɵ ɷɬɢɯ ɛɢɛɥɢɨɬɟɤ, ɧɚɩɪɢɦɟɪ, ɞɥɹ ɪɚɡɥɢɱɧɵɯ ɦɨɞɟɥɟɣ
ɗȼɆ ɢɥɢ ɨɩɟɪɚɰɢɨɧɧɵɯ ɫɢɫɬɟɦ.
ɑɚɫɬɶ ɮɭɧɤɰɢɣ ɢɡ ɛɢɛɥɢɨɬɟɤ ɜɪɟɦɟɧɢ ɜɵɩɨɥɧɟɧɢɹ ɫɬɚɧɞɚɪɬɢɡɨɜɚɧɚ, ɜ
ɫɬɚɧɞɚɪɬɟ ɡɚɮɢɤɫɢɪɨɜɚɧɵ ɢɦɹ ɮɭɧɤɰɢɢ, ɟɟ ɧɚɡɧɚɱɟɧɢɟ, ɩɟɪɟɱɟɧɶ ɢ ɬɢɩɵ
ɩɚɪɚɦɟɬɪɨɜ, ɚ ɬɚɤɠɟ ɬɢɩ ɜɨɡɜɪɚɳɚɟɦɨɝɨ ɡɧɚɱɟɧɢɹ. Ⱦɪɭɝɢɟ ɮɭɧɤɰɢɢ ɨɪɢɟɧ-
ɬɢɪɨɜɚɧɵ ɧɚ ɤɨɧɤɪɟɬɧɵɟ ɦɨɞɟɥɢ ɗȼɆ ɢ ɨɩɟɪɚɰɢɨɧɧɵɟ ɫɢɫɬɟɦɵ, ɫɩɨɫɨɛɵ
ɢɯ ɜɵɡɨɜɚ ɢ ɢɫɩɨɥɶɡɨɜɚɧɢɹ ɦɨɝɭɬ ɛɵɬɶ ɪɚɡɥɢɱɧɵɦɢ ɜ ɫɢɫɬɟɦɚɯ ɩɪɨɝɪɚɦ-
ɦɢɪɨɜɚɧɢɹ ɪɚɡɧɵɯ ɮɢɪɦ.
ɑɬɨɛɵ ɨɛɟɫɩɟɱɢɬɶ ɜɨɡɦɨɠɧɨɫɬɶ ɤɨɧɬɪɨɥɹ ɩɪɚɜɢɥɶɧɨɫɬɢ ɜɵɡɨɜɚ ɮɭɧɤ-
ɰɢɣ ɩɪɢ ɤɨɦɩɢɥɹɰɢɢ ɩɪɨɝɪɚɦɦɵ, ɜ ɫɢɫɬɟɦɭ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ ɜɯɨɞɹɬ
ɮɚɣɥɵ ɡɚɝɨɥɨɜɤɨɜ ɮɭɧɤɰɢɣ ɜɪɟɦɟɧɢ ɜɵɩɨɥɧɟɧɢɹ. ȼ ɮɚɣɥɚɯ ɡɚɝɨɥɨɜɤɨɜ ɨɩ-
ɪɟɞɟɥɹɸɬɫɹ ɩɪɨɬɨɬɢɩɵ ɛɢɛɥɢɨɬɟɱɧɵɯ ɮɭɧɤɰɢɣ, ɚ ɬɚɤɠɟ ɤɨɧɫɬɚɧɬɵ ɢ ɬɢɩɵ
ɞɚɧɧɵɯ, ɢɫɩɨɥɶɡɭɟɦɵɟ ɷɬɢɦɢ ɮɭɧɤɰɢɹɦɢ.
ɇɢɠɟ ɩɪɢɜɟɞɟɧɵ ɢɦɟɧɚ ɧɟɤɨɬɨɪɵɯ ɮɚɣɥɨɜ ɡɚɝɨɥɨɜɤɨɜ ɢ ɧɚɡɧɚɱɟɧɢɟ
ɨɩɢɫɚɧɧɵɯ ɜ ɧɢɯ ɩɪɨɬɨɬɢɩɨɜ ɝɪɭɩɩ ɮɭɧɤɰɢɣ.
ɋɬɚɧɞɚɪɬɨɦ ɋɢ ɨɩɪɟɞɟɥɟɧɵ ɫɥɟɞɭɸɳɢɟ ɮɚɣɥɵ ɡɚɝɨɥɨɜɤɨɜ:
ASSERT.H: ɫɨɞɟɪɠɢɬ ɦɚɤɪɨɫɵ ɞɥɹ ɫɨɨɛɳɟɧɢɣ ɨɛ ɨɲɢɛɤɚɯ ɩɪɢ ɜɵɩɨɥɧɟɧɢɢ
ɭɫɥɨɜɢɹ, ɡɚɞɚɜɚɟɦɨɝɨ ɩɪɨɝɪɚɦɦɢɫɬɨɦ.
CTYPE.H: ɮɭɧɤɰɢɢ ɞɥɹ ɩɪɨɜɟɪɤɢ ɢ ɩɪɟɨɛɪɚɡɨɜɚɧɢɹ ɞɚɧɧɵɯ ɬɢɩɚ char.
32
ɜɵɡɵɜɚɬɶ ɋɢ-ɩɪɨɝɪɚɦɦɵ ɢɡ ɤɨɦɚɧɞɧɨɣ ɫɬɪɨɤɢ MS DOS ɫ ɩɟɪɟɞɚɱɟɣ ɜ ɩɪɨ-
ɝɪɚɦɦɭ ɧɟɨɛɯɨɞɢɦɵɯ ɚɪɝɭɦɟɧɬɨɜ. ɋɬɚɧɞɚɪɬɧɵɣ ɩɪɨɬɨɬɢɩ ɮɭɧɤɰɢɢ main
ɢɦɟɟɬ ɜɢɞ.
     int main (int argc, char *argv[], char *envp[])
    ȼ ɤɨɧɤɪɟɬɧɨɣ ɩɪɨɝɪɚɦɦɟ ɦɨɠɧɨ ɨɛɴɹɜɥɹɬɶ ɮɭɧɤɰɢɸ main ɛɟɡ ɜɨɡɜɪɚ-
ɳɚɟɦɨɝɨ ɡɧɚɱɟɧɢɹ (ɜɨɡɜɪɚɳɚɸɳɭɸ ɬɢɩ void) ɫ ɢɫɩɨɥɶɡɨɜɚɧɢɟɦ ɬɨɥɶɤɨ
ɞɜɭɯ ɩɟɪɜɵɯ ɩɚɪɚɦɟɬɪɨɜ ɢɥɢ ɜɨɨɛɳɟ ɛɟɡ ɩɚɪɚɦɟɬɪɨɜ. ɉɚɪɚɦɟɬɪɵ argc ɢ
argv ɫɥɭɠɚɬ ɞɥɹ ɩɟɪɟɞɚɱɢ ɜ ɩɪɨɝɪɚɦɦɭ ɚɪɝɭɦɟɧɬɨɜ ɜ ɜɢɞɟ ɦɚɫɫɢɜɚ ɫɬɪɨɤ.
ɉɚɪɚɦɟɬɪ argc ɫɨɞɟɪɠɢɬ ɱɢɫɥɨ ɷɥɟɦɟɧɬɨɜ ɷɬɨɝɨ ɦɚɫɫɢɜɚ, argv - ɷɬɨ ɦɚɫɫɢɜ
ɭɤɚɡɚɬɟɥɟɣ ɧɚ ɩɟɪɟɞɚɜɚɟɦɵɟ ɫɬɪɨɤɢ, ɩɪɢɱɟɦ ɩɟɪɜɵɣ ɷɥɟɦɟɧɬ ɦɚɫɫɢɜɚ, ɧɚ
ɤɨɬɨɪɵɣ ɭɤɚɡɵɜɚɟɬ argv[0], ɫɨɞɟɪɠɢɬ ɢɦɹ ɩɪɨɝɪɚɦɦɵ (ɢɦɹ exe-ɮɚɣɥɚ
ɩɪɨɝɪɚɦɦɵ), ɨɫɬɚɥɶɧɵɟ ɷɥɟɦɟɧɬɵ ɩɪɟɞɫɬɚɜɥɹɸɬ ɫɨɛɨɣ ɚɪɝɭɦɟɧɬɵ ɢɡ ɤɨ-
ɦɚɧɞɧɨɣ ɫɬɪɨɤɢ MS DOS. ɉɚɪɚɦɟɬɪ envp ɢɫɩɨɥɶɡɭɟɬɫɹ ɞɥɹ ɞɨɫɬɭɩɚ ɤ ɷɥɟ-
ɦɟɧɬɚɦ ɬɟɤɭɳɟɣ ɫɪɟɞɵ MS DOS.

2.7. Ȼɢɛɥɢɨɬɟɤɚ ɜɪɟɦɟɧɢ ɜɵɩɨɥɧɟɧɢɹ

    ȼ ɨɩɪɟɞɟɥɟɧɢɢ ɹɡɵɤɨɜ ɋɢ ɢ ɋɢ++ ɨɬɫɭɬɫɬɜɭɸɬ ɨɩɟɪɚɬɨɪɵ ɜɜɨɞɚ-
ɜɵɜɨɞɚ, ɨɩɟɪɚɰɢɢ ɧɚɞ ɫɬɪɨɤɨɜɵɦɢ ɞɚɧɧɵɦɢ ɢ ɦɧɨɝɢɟ ɞɪɭɝɢɟ ɫɪɟɞɫɬɜɚ,
ɢɦɟɸɳɢɟɫɹ ɜ ɞɪɭɝɢɯ ɹɡɵɤɚɯ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ. ɗɬɨɬ ɧɟɞɨɫɬɚɬɨɤ ɤɨɦɩɟɧ-
ɫɢɪɭɟɬɫɹ ɞɨɛɚɜɥɟɧɢɟɦ ɜ ɫɢɫɬɟɦɵ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ ɋɢ ɢ ɋɢ++ ɛɢɛɥɢɨɬɟɤ
ɮɭɧɤɰɢɣ, ɩɨɞɤɥɸɱɚɟɦɵɯ ɤ ɪɚɛɨɱɢɦ ɩɪɨɝɪɚɦɦɚɦ ɩɪɢ ɪɟɞɚɤɬɢɪɨɜɚɧɢɢ ɫɜɹ-
ɡɟɣ ɢ ɧɚɡɵɜɚɟɦɵɯ ɛɢɛɥɢɨɬɟɤɚɦɢ ɜɪɟɦɟɧɢ ɜɵɩɨɥɧɟɧɢɹ. Ɉɬɞɟɥɟɧɢɟ ɷɬɢɯ
ɛɢɛɥɢɨɬɟɤ ɨɬ ɤɨɦɩɢɥɹɬɨɪɚ ɩɨɡɜɨɥɹɟɬ ɜ ɧɟɨɛɯɨɞɢɦɵɯ ɫɥɭɱɚɹɯ ɢɫɩɨɥɶɡɨɜɚɬɶ
ɪɚɡɥɢɱɧɵɟ ɜɚɪɢɚɧɬɵ ɷɬɢɯ ɛɢɛɥɢɨɬɟɤ, ɧɚɩɪɢɦɟɪ, ɞɥɹ ɪɚɡɥɢɱɧɵɯ ɦɨɞɟɥɟɣ
ɗȼɆ ɢɥɢ ɨɩɟɪɚɰɢɨɧɧɵɯ ɫɢɫɬɟɦ.
    ɑɚɫɬɶ ɮɭɧɤɰɢɣ ɢɡ ɛɢɛɥɢɨɬɟɤ ɜɪɟɦɟɧɢ ɜɵɩɨɥɧɟɧɢɹ ɫɬɚɧɞɚɪɬɢɡɨɜɚɧɚ, ɜ
ɫɬɚɧɞɚɪɬɟ ɡɚɮɢɤɫɢɪɨɜɚɧɵ ɢɦɹ ɮɭɧɤɰɢɢ, ɟɟ ɧɚɡɧɚɱɟɧɢɟ, ɩɟɪɟɱɟɧɶ ɢ ɬɢɩɵ
ɩɚɪɚɦɟɬɪɨɜ, ɚ ɬɚɤɠɟ ɬɢɩ ɜɨɡɜɪɚɳɚɟɦɨɝɨ ɡɧɚɱɟɧɢɹ. Ⱦɪɭɝɢɟ ɮɭɧɤɰɢɢ ɨɪɢɟɧ-
ɬɢɪɨɜɚɧɵ ɧɚ ɤɨɧɤɪɟɬɧɵɟ ɦɨɞɟɥɢ ɗȼɆ ɢ ɨɩɟɪɚɰɢɨɧɧɵɟ ɫɢɫɬɟɦɵ, ɫɩɨɫɨɛɵ
ɢɯ ɜɵɡɨɜɚ ɢ ɢɫɩɨɥɶɡɨɜɚɧɢɹ ɦɨɝɭɬ ɛɵɬɶ ɪɚɡɥɢɱɧɵɦɢ ɜ ɫɢɫɬɟɦɚɯ ɩɪɨɝɪɚɦ-
ɦɢɪɨɜɚɧɢɹ ɪɚɡɧɵɯ ɮɢɪɦ.
    ɑɬɨɛɵ ɨɛɟɫɩɟɱɢɬɶ ɜɨɡɦɨɠɧɨɫɬɶ ɤɨɧɬɪɨɥɹ ɩɪɚɜɢɥɶɧɨɫɬɢ ɜɵɡɨɜɚ ɮɭɧɤ-
ɰɢɣ ɩɪɢ ɤɨɦɩɢɥɹɰɢɢ ɩɪɨɝɪɚɦɦɵ, ɜ ɫɢɫɬɟɦɭ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ ɜɯɨɞɹɬ
ɮɚɣɥɵ ɡɚɝɨɥɨɜɤɨɜ ɮɭɧɤɰɢɣ ɜɪɟɦɟɧɢ ɜɵɩɨɥɧɟɧɢɹ. ȼ ɮɚɣɥɚɯ ɡɚɝɨɥɨɜɤɨɜ ɨɩ-
ɪɟɞɟɥɹɸɬɫɹ ɩɪɨɬɨɬɢɩɵ ɛɢɛɥɢɨɬɟɱɧɵɯ ɮɭɧɤɰɢɣ, ɚ ɬɚɤɠɟ ɤɨɧɫɬɚɧɬɵ ɢ ɬɢɩɵ
ɞɚɧɧɵɯ, ɢɫɩɨɥɶɡɭɟɦɵɟ ɷɬɢɦɢ ɮɭɧɤɰɢɹɦɢ.
    ɇɢɠɟ ɩɪɢɜɟɞɟɧɵ ɢɦɟɧɚ ɧɟɤɨɬɨɪɵɯ ɮɚɣɥɨɜ ɡɚɝɨɥɨɜɤɨɜ ɢ ɧɚɡɧɚɱɟɧɢɟ
ɨɩɢɫɚɧɧɵɯ ɜ ɧɢɯ ɩɪɨɬɨɬɢɩɨɜ ɝɪɭɩɩ ɮɭɧɤɰɢɣ.
    ɋɬɚɧɞɚɪɬɨɦ ɋɢ ɨɩɪɟɞɟɥɟɧɵ ɫɥɟɞɭɸɳɢɟ ɮɚɣɥɵ ɡɚɝɨɥɨɜɤɨɜ:
ASSERT.H: ɫɨɞɟɪɠɢɬ ɦɚɤɪɨɫɵ ɞɥɹ ɫɨɨɛɳɟɧɢɣ ɨɛ ɨɲɢɛɤɚɯ ɩɪɢ ɜɵɩɨɥɧɟɧɢɢ
ɭɫɥɨɜɢɹ, ɡɚɞɚɜɚɟɦɨɝɨ ɩɪɨɝɪɚɦɦɢɫɬɨɦ.
CTYPE.H: ɮɭɧɤɰɢɢ ɞɥɹ ɩɪɨɜɟɪɤɢ ɢ ɩɪɟɨɛɪɚɡɨɜɚɧɢɹ ɞɚɧɧɵɯ ɬɢɩɚ char.
                                  32