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

UptoLike

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

x ɉɟɪɟɨɩɪɟɞɟɥɹɟɦɵɟ ɨɩɟɪɚɰɢɢ new ɢ delete ɞɨɥɠɧɵ ɛɵɬɶ static-
ɤɨɦɩɨɧɟɧɬɚɦɢ ɤɥɚɫɫɚ.
ȼ ɨɫɬɚɥɶɧɨɦ ɤ ɩɟɪɟɨɩɪɟɞɟɥɹɟɦɵɦ ɨɩɟɪɚɰɢɹɦ ɩɪɟɞɴɹɜɥɹɸɬɫɹ ɬɟ ɠɟ
ɬɪɟɛɨɜɚɧɢɹ, ɱɬɨ ɢ ɤ ɮɭɧɤɰɢɹɦ.
5. ɒɚɛɥɨɧɵ ɮɭɧɤɰɢɣ ɢ ɤɥɚɫɫɨɜ
5.1. ɒɚɛɥɨɧɵ ɮɭɧɤɰɢɣ
ɑɚɫɬɨ ɜɫɬɪɟɱɚɸɬɫɹ ɮɭɧɤɰɢɢ, ɪɟɚɥɢɡɭɸɳɢɟ ɨɞɧɢ ɢ ɬɟ ɠɟ ɞɟɣɫɬɜɢɹ ɞɥɹ
ɚɪɝɭɦɟɧɬɨɜ ɪɚɡɥɢɱɧɵɯ ɬɢɩɨɜ. ɇɚɩɪɢɦɟɪ, ɫɨɪɬɢɪɨɜɤɚ ɦɚɫɫɢɜɚ ɩɨ ɜɨɡɪɚɫɬɚ-
ɧɢɸ ɟɝɨ ɷɥɟɦɟɧɬɨɜ ɦɨɠɟɬ ɜɵɩɨɥɧɹɬɶɫɹ ɨɞɧɢɦ ɢ ɬɟɦ ɠɟ ɦɟɬɨɞɨɦ ɢ ɞɥɹ ɞɚɧ-
ɧɵɯ ɬɢɩɚ
int, ɢ ɞɥɹ ɞɚɧɧɵɯ ɬɢɩɚ double. Ɋɚɡɥɢɱɢɟ ɫɨɫɬɨɢɬ ɬɨɥɶɤɨ ɜ ɬɢ-
ɩɚɯ ɩɚɪɚɦɟɬɪɨɜ ɢ ɧɟɤɨɬɨɪɵɯ ɜɧɭɬɪɟɧɧɢɯ ɩɟɪɟɦɟɧɧɵɯ.
ȼ ɛɨɥɟɟ ɩɨɡɞɧɢɟ ɜɟɪɫɢɢ ɹɡɵɤɚ ɋ++ ɜɤɥɸɱɟɧɨ ɫɩɟɰɢɚɥɶɧɨɟ ɫɪɟɞɫɬɜɨ,
ɩɨɡɜɨɥɹɸɳɟɟ ɩɚɪɚɦɟɬɪɢɡɨɜɚɬɶ ɨɩɪɟɞɟɥɟɧɢɟ ɮɭɧɤɰɢɢ, ɱɬɨɛɵ ɤɨɦɩɢɥɹɬɨɪ
ɦɨɝ ɩɨɫɬɪɨɢɬɶ ɤɨɧɤɪɟɬɧɭɸ ɪɟɚɥɢɡɚɰɢɸ ɮɭɧɤɰɢɢ ɞɥɹ ɭɤɚɡɚɧɧɨɝɨ ɬɢɩɚ ɩɚ-
ɪɚɦɟɬɪɨɜ ɮɭɧɤɰɢɢ. ɉɚɪɚɦɟɬɪɢɡɨɜɚɧɧɨɟ ɨɩɪɟɞɟɥɟɧɢɟ ɮɭɧɤɰɢɢ ɫɬɪɨɢɬɫɹ ɩɨ
ɫɯɟɦɟ:
template <class ɢɦɹ_ɤɥɚɫɫɚ>
Ɂɚɝɨɥɨɜɨɤ ɮɭɧɤɰɢɢ
{
/* Ɍɟɥɨ ɮɭɧɤɰɢɢ */
}
ɂɦɹ ɤɥɚɫɫɚ ɹɜɥɹɟɬɫɹ ɩɚɪɚɦɟɬɪɨɦ ɢ ɡɚɞɚɟɬɫɹ ɢɞɟɧɬɢɮɢɤɚɬɨɪɨɦ, ɥɨɤɚ-
ɥɢɡɨɜɚɧɧɵɦ ɜ ɩɪɟɞɟɥɚɯ ɨɩɪɟɞɟɥɟɧɢɹ ɮɭɧɤɰɢɢ. ɏɨɬɹ ɛɵ ɨɞɢɧ ɢɡ ɩɚɪɚɦɟɬ-
ɪɨɜ ɮɭɧɤɰɢɢ ɞɨɥɠɟɧ ɢɦɟɬɶ ɬɢɩ, ɫɨɨɬɜɟɬɫɬɜɭɸɳɢɣ ɷɬɨɦɭ ɢɞɟɧɬɢɮɢɤɚɬɨɪɭ.
ɉɚɪɚɦɟɬɪɢɡɨɜɚɧɧɨɟ ɨɩɪɟɞɟɥɟɧɢɟ ɮɭɧɤɰɢɢ ɫɨɪɬɢɪɨɜɤɢ ɦɚɫɫɢɜɚ ɦɟɬɨ-
ɞɨɦ ɩɟɪɟɫɬɚɧɨɜɨɤ ɦɨɠɟɬ ɛɵɬɶ ɩɨɫɬɪɨɟɧɨ ɫɥɟɞɭɸɳɢɦ ɨɛɪɚɡɨɦ:
template <class T >
void sort (T a[], int n)
{
T temp;
int sign;
for (int k=0; k>n; k++)
{
sign = 0;
for (i=0; i<n-k; i++)
if (a [i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
sign++;
}
56
   x ɉɟɪɟɨɩɪɟɞɟɥɹɟɦɵɟ ɨɩɟɪɚɰɢɢ new ɢ delete ɞɨɥɠɧɵ ɛɵɬɶ static-
     ɤɨɦɩɨɧɟɧɬɚɦɢ ɤɥɚɫɫɚ.
    ȼ ɨɫɬɚɥɶɧɨɦ ɤ ɩɟɪɟɨɩɪɟɞɟɥɹɟɦɵɦ ɨɩɟɪɚɰɢɹɦ ɩɪɟɞɴɹɜɥɹɸɬɫɹ ɬɟ ɠɟ
ɬɪɟɛɨɜɚɧɢɹ, ɱɬɨ ɢ ɤ ɮɭɧɤɰɢɹɦ.


5. ɒɚɛɥɨɧɵ ɮɭɧɤɰɢɣ ɢ ɤɥɚɫɫɨɜ
5.1. ɒɚɛɥɨɧɵ ɮɭɧɤɰɢɣ

    ɑɚɫɬɨ ɜɫɬɪɟɱɚɸɬɫɹ ɮɭɧɤɰɢɢ, ɪɟɚɥɢɡɭɸɳɢɟ ɨɞɧɢ ɢ ɬɟ ɠɟ ɞɟɣɫɬɜɢɹ ɞɥɹ
ɚɪɝɭɦɟɧɬɨɜ ɪɚɡɥɢɱɧɵɯ ɬɢɩɨɜ. ɇɚɩɪɢɦɟɪ, ɫɨɪɬɢɪɨɜɤɚ ɦɚɫɫɢɜɚ ɩɨ ɜɨɡɪɚɫɬɚ-
ɧɢɸ ɟɝɨ ɷɥɟɦɟɧɬɨɜ ɦɨɠɟɬ ɜɵɩɨɥɧɹɬɶɫɹ ɨɞɧɢɦ ɢ ɬɟɦ ɠɟ ɦɟɬɨɞɨɦ ɢ ɞɥɹ ɞɚɧ-
ɧɵɯ ɬɢɩɚ int, ɢ ɞɥɹ ɞɚɧɧɵɯ ɬɢɩɚ double. Ɋɚɡɥɢɱɢɟ ɫɨɫɬɨɢɬ ɬɨɥɶɤɨ ɜ ɬɢ-
ɩɚɯ ɩɚɪɚɦɟɬɪɨɜ ɢ ɧɟɤɨɬɨɪɵɯ ɜɧɭɬɪɟɧɧɢɯ ɩɟɪɟɦɟɧɧɵɯ.
    ȼ ɛɨɥɟɟ ɩɨɡɞɧɢɟ ɜɟɪɫɢɢ ɹɡɵɤɚ ɋ++ ɜɤɥɸɱɟɧɨ ɫɩɟɰɢɚɥɶɧɨɟ ɫɪɟɞɫɬɜɨ,
ɩɨɡɜɨɥɹɸɳɟɟ ɩɚɪɚɦɟɬɪɢɡɨɜɚɬɶ ɨɩɪɟɞɟɥɟɧɢɟ ɮɭɧɤɰɢɢ, ɱɬɨɛɵ ɤɨɦɩɢɥɹɬɨɪ
ɦɨɝ ɩɨɫɬɪɨɢɬɶ ɤɨɧɤɪɟɬɧɭɸ ɪɟɚɥɢɡɚɰɢɸ ɮɭɧɤɰɢɢ ɞɥɹ ɭɤɚɡɚɧɧɨɝɨ ɬɢɩɚ ɩɚ-
ɪɚɦɟɬɪɨɜ ɮɭɧɤɰɢɢ. ɉɚɪɚɦɟɬɪɢɡɨɜɚɧɧɨɟ ɨɩɪɟɞɟɥɟɧɢɟ ɮɭɧɤɰɢɢ ɫɬɪɨɢɬɫɹ ɩɨ
ɫɯɟɦɟ:
     template 
     Ɂɚɝɨɥɨɜɨɤ ɮɭɧɤɰɢɢ
        {
        /* Ɍɟɥɨ ɮɭɧɤɰɢɢ */
        }
    ɂɦɹ ɤɥɚɫɫɚ ɹɜɥɹɟɬɫɹ ɩɚɪɚɦɟɬɪɨɦ ɢ ɡɚɞɚɟɬɫɹ ɢɞɟɧɬɢɮɢɤɚɬɨɪɨɦ, ɥɨɤɚ-
ɥɢɡɨɜɚɧɧɵɦ ɜ ɩɪɟɞɟɥɚɯ ɨɩɪɟɞɟɥɟɧɢɹ ɮɭɧɤɰɢɢ. ɏɨɬɹ ɛɵ ɨɞɢɧ ɢɡ ɩɚɪɚɦɟɬ-
ɪɨɜ ɮɭɧɤɰɢɢ ɞɨɥɠɟɧ ɢɦɟɬɶ ɬɢɩ, ɫɨɨɬɜɟɬɫɬɜɭɸɳɢɣ ɷɬɨɦɭ ɢɞɟɧɬɢɮɢɤɚɬɨɪɭ.
    ɉɚɪɚɦɟɬɪɢɡɨɜɚɧɧɨɟ ɨɩɪɟɞɟɥɟɧɢɟ ɮɭɧɤɰɢɢ ɫɨɪɬɢɪɨɜɤɢ ɦɚɫɫɢɜɚ ɦɟɬɨ-
ɞɨɦ ɩɟɪɟɫɬɚɧɨɜɨɤ ɦɨɠɟɬ ɛɵɬɶ ɩɨɫɬɪɨɟɧɨ ɫɥɟɞɭɸɳɢɦ ɨɛɪɚɡɨɦ:
     template 
     void sort (T a[], int n)
        {
        T temp;
        int sign;
        for (int k=0; k>n; k++)
           {
           sign = 0;
           for (i=0; ia[i+1])
                 {
                 temp=a[i];
                 a[i]=a[i+1];
                 a[i+1]=temp;
                 sign++;
                 }

                                 56