Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Простой Python просто с нуля

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
def Trinomial(): result = a*x**2 + b*x + c return result
a = 1; b = 2; c = 3; x = 1.0
f = Trinomial() print 'f = ', f
6.0
Ʉɨɞ ɢɡɦɟɧɢɥɫɹ, ɚ ɪɟɡɭɥɶɬɚɬ ɧɟɬ. ɉɨɩɭɬɧɨ ɦɵ ɜɩɟɪɜɵɟ ɜɫɬɪɟɬɢɥɢɫɶ ɫ ɨɱɟɧɶ ɜɚɠɧɵɦ ɩɨɧɹɬɢɟɦ – ɝɥɨɛɚɥɶɧɵɦɢ ɩɟɪɟɦɟɧɧɵɦɢ. ȿɫɥɢ ɛɵɬɶ ɬɨɱɧɵɦ, ɬɚɤ ɷɬɨ ɧɚɡɵɜɚɟɬɫɹ ɜ ɬɪɚɞɢɰɢɨɧɧɵɯ ɹɡɵɤɚɯ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ, ɚ ɜ ɉɢɬɨɧɟ ɷɬɨɬ ɬɟɪɦɢɧ ɧɟ ɨɱɟɧɶ ɭɩɨɬɪɟɛɢɬɟɥɟɧ. Ɇɨɠɧɨ ɫɤɚɡɚɬɶ ɢ ɩɨ-ɞɪɭɝɨɦɭ.
a, b, c, x –
ɜɧɟɲɧɢɟ ɩɟɪɟɦɟɧɧɵɟ. ȼɧɟɲɧɢɦɢ ɨɧɢ ɹɜɥɹɸɬɫɹ ɩɨ ɨɬɧɨɲɟɧɢɸ ɤ ɧɚɲɟɣ ɮɭɧɤɰɢɢ, ɩɨɬɨɦɭ ɱɬɨ ɡɧɚɱɟɧɢɹ ɷɬɢɦ ɩɟɪɟɦɟɧɧɵɦ ɩɪɢɫɜɨɟɧɵ ɜɧɟ ɮɭɧɤɰɢɢ. Ʉɨɝɞɚ ɜɧɭɬɪɢ ɮɭɧɤɰɢɢ ɜɫɬɪɟɱɚɟɬɫɹ ɢɦɹ ɩɟɪɟɦɟɧɧɨɣ
A, ɬɨ ɧɟɦɟɞɥɟɧɧɨ
ɬɪɟɛɭɟɬɫɹ ɭɡɧɚɬɶ, ɱɟɦɭ ɠɟ ɨɧɚ ɪɚɜɧɚ. ȼɧɭɬɪɢ ɮɭɧɤɰɢɢ ɧɢɤɚɤɨɣ ɢɧɮɨɪɦɚɰɢɢ ɦɵ ɨɛ ɷɬɨɦ ɧɟ ɧɚɣɞɺɦ, ɩɨɷɬɨɦɭ ɢɳɟɦ ɫɧɚɪɭɠɢ – ɢ ɧɚɯɨɞɢɦ. Ⱥ ɬɚɦ, ɫɧɚɪɭɠɢ ɮɭɧɤɰɢɢ, ɜɫɟ ɷɬɢ ɱɟɬɵɪɟ ɢɦɟɧɢ ɹɜɥɹɸɬɫɹ ɫɨɜɟɪɲɟɧɧɨ ɨɛɵɱɧɵɦɢ ɩɟɪɟɦɟɧɧɵɦɢ.
ɉɪɨɞɨɥɠɚɟɦ ɨɩɵɬɵ.
def Trinomial(): a = 3 #!!! b = 4 #!!! result = a*x**2 + b*x + c return result
a = 1; b = 2; c = 3; x = 1.0
f = Trinomial() print 'f = ', f
10.0
ə ɫɩɟɰɢɚɥɶɧɨ, ɞɥɹ ɧɚɝɥɹɞɧɨɫɬɢ, ɫɤɨɩɢɪɨɜɚɥ ɜɟɫɶ ɤɨɞ, ɯɨɬɹ ɞɨɛɚɜɢɥɢɫɶ ɬɨɥɶɤɨ ɞɜɟ ɫɬɪɨɤɢ, ɢɯ ɹ ɨɬɦɟɬɢɥ ɤɨɦɦɟɧɬɚɪɢɹɦɢ. ȿɫɥɢ ɜɵ ɩɨɬɪɭɞɢɬɟɫɶ
151
ɫɚɦɨɫɬɨɹɬɟɥɶɧɨ ɩɨɞɫɱɢɬɚɬɶ ɪɟɡɭɥɶɬɚɬ, ɬɨ ɭɜɢɞɢɬɟ, ɱɬɨ ɞɟɣɫɬɜɭɸɬ ɬɟ ɡɧɚɱɟɧɢɹ ɩɟɪɟɦɟɧɧɵɯ
A ɢ B, ɤɨɬɨɪɵɟ ɡɚɞɚɧɵ ɜɧɭɬɪɢ ɮɭɧɤɰɢɢ. Ɍɟɯ
ɩɟɪɟɦɟɧɧɵɯ, ɤɨɬɨɪɵɟ ɫɧɚɪɭɠɢ, ɢɡɧɭɬɪɢ ɧɟ ɜɢɞɧɨ. ɗɬɨ ɬɚɤ ɤɪɚɫɢɜɨ ɢ ɧɚɡɵɜɚɟɬɫɹ – ɨɛɥɚɫɬɶ ɜɢɞɢɦɨɫɬɢ, ɚ ɩɟɪɟɦɟɧɧɵɟ, ɤɨɬɨɪɵɟ ɜɧɭɬɪɢ, ɧɚɡɵɜɚɸɬɫɹ ɥɨɤɚɥɶɧɵɟ ɩɟɪɟɦɟɧɧɵɟ. Ʌɨɤɚɥɶɧɵɟ ɨɧɢ, ɪɚɡɭɦɟɟɬɫɹ, ɬɨɥɶɤɨ ɩɨ ɨɬɧɨɲɟɧɢɸ ɤ ɜɧɟɲɧɟɦɭ ɦɢɪɭ, ɞɥɹ ɫɚɦɨɣ ɮɭɧɤɰɢɢ ɷɬɨ ɫɚɦɵɟ ɨɛɵɱɧɵɟ ɩɟɪɟɦɟɧɧɵɟ.
Ɂɚɞɚɸ ɯɢɬɪɵɣ ɜɨɩɪɨɫ – ɚ ɱɬɨ, ɟɫɥɢ ɧɚɩɢɫɚɬɶ ɜɨɬ ɬɚɤ:
def Trinomial(): a = a + 1 #!!! result = a*x**2 + b*x + c return result
ȼɨɡɧɢɤɚɟɬ ɫɨɛɥɚɡɧ ɩɪɟɞɩɨɥɨɠɢɬɶ, ɱɬɨ ɛɭɞɟɬ ɜɡɹɬɨ ɜɧɟɲɧɟɟ ɡɧɚɱɟɧɢɟ ɩɟɪɟɦɟɧɧɨɣ
A, ɪɚɜɧɨɟ ɟɞɢɧɢɰɟ, ɤ ɧɟɦɭ ɛɭɞɭɬ ɞɨɛɚɜɥɟɧɚ ɟɳɺ ɟɞɢɧɢɰɚ ɢ ɜ
ɫɭɦɦɟ ɩɨɥɭɱɢɦ ɞɜɚ. Ɉɬɜɟɬ ɧɟɩɪɚɜɢɥɶɧɵɣ. Ȼɭɞɟɬ ɜɨɬ ɷɬɨ:
UnboundLocalError: local variable 'a' referenced before assignment
ɇɚɦ ɤɚɤ ɛɵ ɧɚɦɟɤɚɸɬ, ɱɬɨ ɩɟɪɟɦɟɧɧɚɹ
A ɧɟ ɨɩɪɟɞɟɥɟɧɚ, ɞɪɭɝɢɦɢ ɫɥɨɜɚɦɢ,
ɧɟ ɢɦɟɟɬ ɧɢɤɚɤɨɝɨ ɡɧɚɱɟɧɢɹ. ɉɢɬɨɧ ɫɥɟɞɭɟɬ ɬɚɤɨɣ ɯɢɬɪɨɣ ɥɨɝɢɤɟ – ɤɚɤ ɬɨɥɶɤɨ ɢɦɹ ɩɟɪɟɦɟɧɧɨɣ
A ɩɨɹɜɢɥɨɫɶ ɫɥɟɜɚ ɨɬ ɨɩɟɪɚɬɨɪɚ ɩɪɢɫɜɚɢɜɚɧɢɹ, ɨɧɚ,
ɷɬɚ ɩɟɪɟɦɟɧɧɚɹ, ɛɵɥɚ ɫɨɡɞɚɧɚ ɢ ɹɜɥɹɟɬɫɹ ɥɨɤɚɥɶɧɨɣ ɞɥɹ ɷɬɨɣ ɮɭɧɤɰɢɢ. ɋɥɟɞɨɜɚɬɟɥɶɧɨ, ɬɚ ɩɟɪɟɦɟɧɧɚɹ
A, ɤɨɬɨɪɚɹ ɫɩɪɚɜɚ ɨɬ ɨɩɟɪɚɬɨɪɚ
ɩɪɢɫɜɚɢɜɚɧɢɹ, ɷɬɨ ɬɚ ɠɟ ɫɚɦɚɹ ɩɟɪɟɦɟɧɧɚɹ, ɱɬɨ ɢ ɫɥɟɜɚ. Ɍɚɤ ɱɟɦɭ ɠɟ ɨɧɚ ɪɚɜɧɚ? Ⱥ ɧɢɱɟɦɭ! ȿɺ ɡɧɚɱɟɧɢɟ – ɩɨɤɚ ɟɳɺ – ɧɟ ɨɩɪɟɞɟɥɟɧɨ. Ʉɚɤ ɬɨɥɶɤɨ ɜɵ ɷɬɨ ɩɨɣɦɺɬɟ, ɜɫɺ ɷɬɨ ɞɥɹ ɜɚɫ ɩɨɤɚɠɟɬɫɹ ɩɪɨɫɬɵɦ ɢ ɟɫɬɟɫɬɜɟɧɧɵɦ. Ɉɞɧɚɤɨ ɹ ɨɱɟɧɶ ɭɩɨɪɧɵɣ ɢ ɡɚɧɭɞɧɵɣ. ȼɧɟɫɺɦ ɫɨɜɫɟɦ ɧɟɛɨɥɶɲɨɟ ɢɡɦɟɧɟɧɢɟ ɜ ɤɨɞ:
def Trinomial(): c = a + 1 result = a*x**2 + b*x + c return result
5.0
ȼɫɺ ɯɨɪɨɲɨ, ɧɢɤɚɤɢɯ ɩɪɟɬɟɧɡɢɣ ɤ ɤɨɞɭ. ɏɨɬɹ ɧɚɦ ɯɨɱɟɬɫɹ ɩɪɨɝɪɚɦɦɢɪɨɜɚɬɶ ɢ ɩɪɨɝɪɚɦɦɢɪɨɜɚɬɶ, ɩɪɢɯɨɞɢɬɫɹ ɧɟɦɧɨɝɨ ɩɨɞɭɦɚɬɶ. ɉɟɪɟɦɟɧɧɚɹ
C ɩɨɹɜɢɥɚɫɶ ɫɥɟɜɚ ɨɬ ɨɩɟɪɚɬɨɪɚ ɩɪɢɫɜɚɢɜɚɧɢɹ, ɡɧɚɱɢɬ ɫɨɡɞɚɧɚ
ɧɨɜɚɹ ɩɟɪɟɦɟɧɧɚɹ ɜɧɭɬɪɢ ɧɚɲɟɣ ɮɭɧɤɰɢɢ. Ⱦɥɹ ɩɪɢɫɜɚɢɜɚɧɢɹ ɟɣ ɡɧɚɱɟɧɢɹ
152
ɢɫɩɨɥɶɡɭɟɬɫɹ ɩɟɪɟɦɟɧɧɚɹ
A, ɤɨɬɨɪɨɣ ɜɧɭɬɪɢ ɮɭɧɤɰɢɢ ɧɟɬ. Ɂɧɚɱɢɬ ɟɺ ɢɳɭɬ
ɫɧɚɪɭɠɢ – ɢ ɧɚɯɨɞɹɬ. Ɍɚɤɢɦ ɜɨɬ ɨɛɪɚɡɨɦ ɨɧɨ ɢ ɪɚɛɨɬɚɟɬ.
Ʉɚɤ ɹ ɭɠɟ ɝɨɜɨɪɢɥ, ɟɫɥɢ ɜɵ ɯɨɬɢɬɟ ɜɫɺ ɭɫɜɨɢɬɶ ɛɵɫɬɪɨ ɢ ɥɟɝɤɨ, ɷɬɨ ɪɚɡɞɟɥ ɦɨɠɧɨ ɩɪɨɩɭɫɬɢɬɶ. Ⱦɚɥɶɲɟ ɛɭɞɟɬ ɟɳɺ ɧɟɫɤɨɥɶɤɨ ɫɤɭɱɧɵɯ ɨɩɵɬɨɜ.
Ɂɚɞɚɞɢɦ ɫɟɛɟ ɩɪɨɫɬɨɹ ɜɨɩɪɨɫ – ɦɨɠɧɨ ɥɢ ɢɡɦɟɧɢɬɶ ɢɡɧɭɬɪɢ ɮɭɧɤɰɢɢ ɡɧɚɱɟɧɢɹ ɜɧɟɲɧɢɯ ɩɟɪɟɦɟɧɧɵɯ? ȿɫɥɢ ɜɵ ɭɠɟ ɡɧɚɟɬɟ, ɤɚɤɢɦ ɛɭɞɟɬ ɨɬɜɟɬ, ɬɨ ɨɱɟɧɶ ɯɨɪɨɲɨ.
def Trinomial(): a = 1000000 b = 1100000 result = a*x**2 + b*x + c return result
a = 1; b = 2; c = 3; x = 1.0
print 'before ', a,b,c,x
f = Trinomial() print 'f = ', f
before 1 2 3 1.0 f = 2100003.0 after 1 2 3 1.0
Ɂɧɚɱɟɧɢɹ ɩɟɪɟɦɟɧɧɵɯ ɭɫɩɟɲɧɨ ɦɟɧɹɸɬɫɹ ɜɧɭɬɪɢ ɮɭɧɤɰɢɢ, ɧɨ ɫɧɚɪɭɠɢ ɨɫɬɚɸɬɫɹ ɩɪɟɠɧɢɦɢ. Ɉɧɨ ɢ ɩɨɧɹɬɧɨ. ɉɪɢ ɩɨɩɵɬɤɟ ɢɡɦɟɧɢɬɶ ɡɧɚɱɟɧɢɟ ɜɧɭɬɪɢ ɮɭɧɤɰɢɢ ɧɢɱɟɝɨ ɧɟ ɦɟɧɹɟɬɫɹ, ɚ ɜɨɡɧɢɤɚɟɬ ɧɨɜɚɹ ɩɟɪɟɦɟɧɧɚɹ – ɜɫɟ ɢɡɦɟɧɟɧɢɹ ɤɨɬɨɪɨɣ ɞɟɣɫɬɜɭɸɬ ɬɨɥɶɤɨ ɜɧɭɬɪɢ ɷɬɨɣ ɮɭɧɤɰɢɢ.
ȼɵ ɞɭɦɚɟɬɟ, ɜɚɦ ɜɫɺ ɭɠɟ ɩɨɧɹɬɧɨ? Ʉɚɤ ɛɵ ɧɟ ɬɚɤ.
def Change(): a = [4,5,6] b.append(99)
a = [1,2,3] b = [101,102,103]
print 'before ', a, b Change() print 'after ', a, b
153
before [1, 2, 3] [101, 102, 103] after [1, 2, 3] [101, 102, 103, 99]
ɉɟɪɜɵɣ ɫɩɢɫɨɤ ɧɟ ɢɡɦɟɧɢɥɫɹ. ȼɬɨɪɨɣ – ɞɚ. ȼ ɫɥɭɱɚɟ ɩɟɪɜɨɝɨ ɫɩɢɫɤɚ ɦɨɠɧɨ ɪɚɫɫɭɠɞɚɬɶ ɩɨ ɚɧɚɥɨɝɢɢ ɫ ɱɢɫɥɨɜɵɦɢ ɩɟɪɟɦɟɧɧɵɦɢ. ɂɦɹ ɫɩɢɫɤɚ ɩɨɹɜɢɥɨɫɶ ɫɥɟɜɚ ɨɬ ɨɩɟɪɚɬɨɪɚ ɩɪɢɫɜɚɢɜɚɧɢɹ, ɡɧɚɱɢɬ ɷɬɨ ɧɨɜɚɹ ɩɟɪɟɦɟɧɧɚɹ, ɧɟ ɢɦɟɸɳɚɹ ɧɢɤɚɤɨɝɨ ɨɬɧɨɲɟɧɢɹ ɤ ɬɨɣ, ɱɬɨ ɜɨ ɜɧɟɲɧɟɦ ɦɢɪɟ. Ⱦɚɥɶɲɟ ɧɚɞɨ ɧɚɩɪɹɱɶ ɜɟɫɶ ɢɧɬɟɥɥɟɤɬ ɝɨɥɨɜɧɨɝɨ ɦɨɡɝɚ. ɋɩɢɫɨɤ ɩɨ ɢɦɟɧɢ ɢɡɦɟɧɢɥɫɹ, ɷɬɨ ɮɚɤɬ. ɇɨ ɩɟɪɟɦɟɧɧɚɹ ɩɨ ɢɦɟɧɢ
B ɧɟ ɢɡɦɟɧɢɥɚɫɶ! ȿɫɥɢ
ɨɛɴɹɫɧɹɬɶ ɜɫɟɪɶɺɡ ɢ ɝɥɭɛɨɤɨ, ɬɨ ɧɚɞɨ ɝɨɜɨɪɢɬɶ ɨ ɬɨɦ, ɱɬɨ ɜɫɺ, ɱɬɨ ɟɫɬɶ ɜ ɉɢɬɨɧɟ, ɹɜɥɹɟɬɫɹ ɨɛɴɟɤɬɚɦɢ. ɢ ɞɨɥɝɨ ɪɚɫɫɤɚɡɵɜɚɬɶ, ɱɬɨ ɬɚɤɨɟ ɷɬɢ ɨɛɴɟɤɬɵ. ȿɫɥɢ ɩɨ-ɩɪɨɫɬɨɦɭ, ɬɨ ɢɦɹ ɩɟɪɟɦɟɧɧɨɣ ɧɟ ɫɬɨɢɬ ɫɥɟɜɚ ɨɬ ɨɩɟɪɚɬɨɪɚ ɩɪɢɫɜɚɢɜɚɧɢɹ. Ɇɵ ɜɧɨɫɢɦ ɢɡɦɟɧɟɧɢɹ, ɨɛɪɚɬɢɜɲɢɫɶ ɤ ɦɟɬɨɞɭ
b.append.
Ɇɟɬɨɞɵ ɟɫɬɶ ɭ ɤɚɠɞɨɝɨ ɨɛɴɟɤɬɚ. Ɉɛɴɟɤɬ ɨɫɬɚɺɬɫɹ ɩɪɟɠɧɢɦ, ɧɨ ɫɨɞɟɪɠɢɦɨɟ ɟɝɨ ɦɨɠɟɬ ɢɡɦɟɧɢɬɶɫɹ.
Ɉɝɥɹɞɟɜɲɢɫɶ ɩɨ ɫɬɨɪɨɧɚɦ, ɹ ɡɚɦɟɬɢɥ ɦɭɫɨɪɧɭɸ ɤɨɪɡɢɧɭ, ɨɧɚ ɠɟ ɭɪɧɚ. Ⱦɚɠɟ ɞɜɟ ɦɭɫɨɪɧɵɟ ɤɨɪɡɢɧɵ. Ɉɞɧɭ ɮɢɡɢɱɟɫɤɭɸ, ɜ ɭɝɥɭ, ɞɪɭɝɭɸ ɜɢɪɬɭɚɥɶɧɭɸ, ɧɚ ɷɤɪɚɧɟ. ɋ ɜɢɪɬɭɚɥɶɧɨɣ ɜɫɺ ɹɫɧɨ ɢ ɧɟɢɧɬɟɪɟɫɧɨ, ɨɧɚ ɹɜɥɹɟɬɫɹ ɨɛɴɟɤɬɨɦ ɜɨ ɜɫɟɯ ɫɦɵɫɥɚɯ, ɞɥɹ ɩɪɨɝɪɚɦɦɢɫɬɚ ɷɬɨ ɨɱɟɜɢɞɧɨ. Ɋɟɚɥɶɧɚɹ ɤɨɪɡɢɧɚ ɭɫɬɪɨɟɧɚ ɦɧɨɝɨ ɩɪɨɳɟ. Ɉɧɚ ɱɺɪɧɚɹ ɢ ɫɬɨɢɬ ɜ ɤɨɧɤɪɟɬɧɨɦ ɫɟɜɟɪɨ-ɡɚɩɚɞɧɨɦ ɭɝɥɭ. ɇɚɡɨɜɺɦ ɤɨɪɡɢɧɭ ɫɟɜɟɪɨ-ɡɚɩɚɞɧɚɹ. ȼ ɷɬɨɦ ɭɝɥɭ ɟɫɬɶ ɦɟɫɬɨ ɬɨɥɶɤɨ ɞɥɹ ɨɞɧɨɣ ɤɨɪɡɢɧɵ, ɬɚɤ ɱɬɨ ɫɟɜɟɪɨ-ɡɚɩɚɞɧɚɹ ɤɨɪɡɢɧɚ ɦɨɠɟɬ ɛɵɬɶ ɬɨɥɶɤɨ ɨɞɧɚ. ə ɦɨɝɭ ɩɪɢɧɟɫɬɢ ɞɪɭɝɭɸ ɤɨɪɡɢɧɭ, ɡɟɥɺɧɭɸ, ɢ ɩɨɫɬɚɜɢɬɶ ɟɺ ɜ ɫɟɜɟɪɨ-ɡɚɩɚɞɧɵɣ ɭɝɨɥ, ɡɚɦɟɧɢɜ ɟɸ ɱɺɪɧɭɸ. Ⱦɥɹ ɞɜɭɯ ɬɚɦ ɦɟɫɬɚ ɧɟɬ. Ⱥ ɜɨɬ ɧɚɛɪɨɫɚɬɶ ɜ ɭɪɧɭ ɹ ɦɨɝɭ ɱɬɨ ɭɝɨɞɧɨ, ɜ ɪɚɡɭɦɧɵɯ ɩɪɟɞɟɥɚɯ. ɉɨɬɨɦ ɩɪɢɞɺɬ ɭɛɨɪɳɢɰɚ ɢ ɜɫɺ ɜɵɬɪɹɯɧɟɬ. ɋɨɞɟɪɠɢɦɨɟ ɦɟɧɹɟɬɫɹ, ɦɭɫɨɪɧɚɹ ɤɨɪɡɢɧɚ ɨɫɬɚɺɬɫɹ. ȼɨɬ ɢ ɫɨ ɫɩɢɫɤɚɦɢ ɬɨ ɠɟ ɫɚɦɨɟ. Ɉɛɞɭɦɚɣɬɟ.
ɑɟɬɜɺɪɬɨɟ. ɉɨɝɨɜɨɪɢɦ ɨ ɩɨɯɨɠɟɦ, ɬɨɥɶɤɨ ɜ ɨɬɧɨɲɟɧɢɢ ɩɚɪɚɦɟɬɪɨɜ. ɋɪɚɡɭ ɫɤɚɠɭ, ɱɬɨ ɬɚɦ ɜɫɺ ɨɱɟɧɶ ɩɨɯɨɠɟ ɧɚ ɨɛɵɱɧɵɟ ɩɟɪɟɦɟɧɧɵɟ.
def simpleProc( n, s, L ): n = 1 s = '1' L = [1]
nOut = 12345 sOut = '12345' LOut = [1,2,3,4,5]
B
154
print 'before', nOut, sOut, LOut simpleProc( nOut, sOut, LOut) print 'after ', nOut, sOut, LOut
before 12345 12345 [1, 2, 3, 4, 5] after 12345 12345 [1, 2, 3, 4, 5]
ɉɨɩɵɬɤɢ ɩɪɨɫɬɨ ɢ ɛɟɡ ɡɚɬɟɣ ɢɡɦɟɧɢɬɶ ɡɧɚɱɟɧɢɹ ɩɚɪɚɦɟɬɪɨɜ ɧɟ ɪɚɛɨɬɚɸɬ. Ⱥ ɜɨɬ ɨɛɪɚɳɟɧɢɟ ɤ ɦɟɬɨɞɚɦ ɫɩɢɫɤɚ ɢ ɤ ɮɭɧɤɰɢɹɦ ɫɩɢɫɤɨɜ ɪɚɛɨɬɚɟɬ ɨɱɟɧɶ ɯɨɪɨɲɨ:
def simpleProc( n, s, L ): del L[2] L.append(6)
before 12345 12345 [1, 2, 3, 4, 5] after 12345 12345 [1, 2, 4, 5, 6]
Ʉɚɤɢɟ ɜɵɜɨɞɵ? ȿɫɥɢ ɜɵ ɬɨɥɶɤɨ ɧɚɱɢɧɚɟɬɟ ɩɪɨɝɪɚɦɦɢɪɨɜɚɬɶ, ɬɨ ɞɥɹ ɜɚɫ ɜɫɺ ɞɨɥɠɧɨ ɛɵɬɶ ɩɪɨɫɬɵɦ ɢ ɩɨɧɹɬɧɵɦ. ȿɫɥɢ ɜɵ ɭɠɟ ɡɧɚɤɨɦɵ ɫ ɞɪɭɝɢɦɢ ɹɡɵɤɚɦɢ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ, ɬɨ ɨɱɟɧɶ ɦɧɨɝɨɟ ɧɚ ɷɬɨɦ ɷɬɚɩɟ ɦɨɠɟɬ ɩɨɤɚɡɚɬɶɫɹ ɫɬɪɚɧɧɵɦ ɢ ɞɚɠɟ ɞɢɤɢɦ. ɋɟɣɱɚɫ ɹ ɜɫɟɯ ɩɨɦɢɪɸ ɢ ɞɚɠɟ ɞɚɦ ɨɱɟɧɶ ɩɨɥɟɡɧɵɟ ɫɨɜɟɬɵ. ɋɨɜɟɬɵ ɷɬɢ ɨɬɧɨɫɹɬɫɹ ɧɟ ɬɨɥɶɤɨ ɤ ɉɢɬɨɧɭ, ɨɧɢ ɨɬɧɨɫɹɬɫɹ ɤ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɸ ɧɚ ɥɸɛɨɦ ɹɡɵɤɟ, ɬɪɚɞɢɰɢɨɧɧɨɦ ɢɥɢ ɧɟ ɨɱɟɧɶ. ȼɨɡɦɨɠɧɨ ɝɞɟ-ɬɨ ɟɫɬɶ ɢ ɫɨɜɫɟɦ ɧɟɬɪɚɞɢɰɢɨɧɧɵɟ ɹɡɵɤɢ, ɧɨ ɹ ɞɨ ɧɢɯ ɟɳɺ ɧɟ ɞɨɛɪɚɥɫɹ. ɇɟɤɨɬɨɪɭɸ ɧɚɞɟɠɞɭ, ɜɩɪɨɱɟɦ, ɩɨɞɚɺɬ ɤɥɚɫɫɢɱɟɫɤɢɣ LISP.
ɋɨɜɟɬɵ. ɇɢɤɨɝɞɚ. ȼɵ ɫɥɵɲɢɬɟ ɦɟɧɹ, ɛɚɧɞɟɪɥɨɝɢ? © Ʉɢɩɥɢɧɝ ɢ ɉɭɬɢɧ. ɇɢɤɨɝɞɚ ɧɟ ɩɵɬɚɣɬɟɫɶ ɢɡɦɟɧɹɬɶ ɡɧɚɱɟɧɢɹ ɜɧɟɲɧɢɯ ɩɟɪɟɦɟɧɧɵɯ, ɧɚɯɨɞɹɫɶ ɜɧɭɬɪɢ ɮɭɧɤɰɢɢ, ɞɚɠɟ ɟɫɥɢ ɹɡɵɤ ɷɬɨ ɩɨɡɜɨɥɹɟɬ. ȿɫɥɢ ɧɟ ɩɨɡɜɨɥɹɟɬ, ɬɟɦ ɛɨɥɟɟ ɧɟ ɩɵɬɚɣɬɟɫɶ. ȿɫɥɢ ɜɨɡɦɨɠɧɵ ɤɚɤɢɟ-ɬɨ ɮɨɤɭɫɵ, ɤɚɤ ɜ ɉɢɬɨɧɟ, ɫ ɜɵɡɨɜɚɦɢ ɦɟɬɨɞɨɜ ɫɩɢɫɤɨɜ, ɧɟ ɩɵɬɚɣɬɟɫɶ ɬɨɠɟ. ɂ ɛɭɞɟɬɟ ɩɪɨɝɪɚɦɦɢɪɨɜɚɬɶ ɞɨɥɝɨ ɢ ɫɱɚɫɬɥɢɜɨ. Ɋɚɡɭɦɟɟɬɫɹ, ɟɫɥɢ ɛɭɞɟɬɟ ɜɵɩɨɥɧɹɬɶ ɢ ɞɪɭɝɢɟ ɫɨɜɟɬɵ, ɤɨɬɨɪɵɟ ɹ ɜɚɦ ɞɚɦ.
Ɇɨɠɧɨ ɥɢ ɦɟɧɹɬɶ ɡɧɚɱɟɧɢɹ ɩɚɪɚɦɟɬɪɨɜ ɮɭɧɤɰɢɢ? ȼ ɬɪɚɞɢɰɢɨɧɧɵɯ ɹɡɵɤɚɯ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ ɷɬɨ ɞɟɥɚɟɬɫɹ ɫɩɥɨɲɶ ɢ ɪɹɞɨɦ. ɉɪɢɱɢɧɚ – ɯɨɪɨɲɨ, ɟɫɥɢ ɮɭɧɤɰɢɹ ɜɵɱɢɫɥɹɟɬ ɫɢɧɭɫ ɢ ɜɨɡɜɪɚɳɚɟɬ ɬɨɥɶɤɨ ɨɞɧɨ ɱɢɫɥɨ. Ɍɨɠɟ ɯɨɪɨɲɨ, ɟɫɥɢ ɮɭɧɤɰɢɹ ɜɵɱɢɫɥɹɟɬ ɬɨɱɤɭ ɜ N-ɦɟɪɧɨɦ ɩɪɨɫɬɪɚɧɫɬɜɟ ɢ ɜɨɡɜɪɚɳɚɟɬ ɫɩɢɫɨɤ ɤɨɨɪɞɢɧɚɬ. ɏɭɠɟ, ɟɫɥɢ ɮɭɧɤɰɢɹ ɜɵɱɢɫɥɹɟɬ, ɨɩɪɟɞɟɥɹɟɬ, ɧɚɯɨɞɢɬ ɱɬɨ-ɬɨ ɫɨɜɟɪɲɟɧɧɨ ɪɚɡɧɨɪɨɞɧɨɟ. ȼɨɡɧɢɤɚɟɬ ɠɟɥɚɧɢɟ ɜɟɪɧɭɬɶ ɜɫɺ ɷɬɨ ɜ ɜɢɞɟ ɧɟɫɤɨɥɶɤɢɯ ɩɚɪɚɦɟɬɪɨɜ. Ⱦɚɠɟ ɧɟ ɡɚɞɭɦɵɜɚɹɫɶ ɧɚɞ ɬɟɦ, ɱɬɨ ɜ ɉɢɬɨɧɟ ɷɬɨ
155
ɨɱɟɧɶ ɧɟɩɪɨɫɬɨ – ɡɚɩɨɦɧɢɦ, ɬɚɤ ɞɟɥɚɬɶ ɧɟ ɧɚɞɨ. ȿɫɥɢ ɬɚɤ ɞɟɥɚɬɶ ɧɚɞɨ, ɡɧɚɱɢɬ ɱɬɨ-ɬɨ ɜ ɩɪɨɝɪɚɦɦɟ ɧɟ ɬɚɤ.
ɉɹɬɨɟ. Ɉ ɜɥɨɠɟɧɧɵɯ ɮɭɧɤɰɢɹɯ. ɉɨɦɧɢɬɟ ɜɵɱɢɫɥɟɧɢɟ ɫɢɧɭɫɚ? ȼ ɩɪɨɰɟɫɫɟ ɩɪɨɢɫɯɨɞɢɥɨ ɨɛɪɚɳɟɧɢɟ ɤ ɮɭɧɤɰɢɢ ɜɵɱɢɫɥɟɧɢɹ ɮɚɤɬɨɪɢɚɥɚ. ɉɪɢɦɟɪ ɧɟ ɫɨɜɫɟɦ ɭɞɚɱɧɵɣ, ɩɨɬɨɦɭ ɱɬɨ ɮɭɧɤɰɢɹ ɞɥɹ ɮɚɤɬɨɪɢɚɥɚ ɢɦɟɟɬ ɫɚɦɨɫɬɨɹɬɟɥɶɧɭɸ ɰɟɧɧɨɫɬɶ, ɧɨ ɡɚɬɨ ɨɛɟ ɮɭɧɤɰɢɢ ɭɠɟ ɧɚɩɢɫɚɧɵ. ɉɨɤɚɠɟɦ ɧɚ ɧɢɯ. Ɍɟ ɞɜɟ ɮɭɧɤɰɢɢ, ɫɢɧɭɫ ɢ ɮɚɤɬɨɪɢɚɥ, ɧɚɯɨɞɢɥɢɫɶ ɜ ɬɟɤɫɬɟ ɧɚ ɨɞɧɨɦ ɭɪɨɜɧɟ. ɇɚɱɢɧɚɥɨɫɶ ɨɩɢɫɚɧɢɟ ɩɟɪɜɨɣ ɮɭɧɤɰɢɢ, ɡɚɤɚɧɱɢɜɚɥɨɫɶ, ɡɚ ɧɟɣ ɫɥɟɞɨɜɚɥɚ ɜɬɨɪɚɹ ɮɭɧɤɰɢɹ. ȼɥɨɠɟɧɧɚɹ ɮɭɧɤɰɢɢ, ɤɚɤ ɥɟɝɤɨ ɞɨɝɚɞɚɬɶɫɹ, ɜɥɨɠɟɧɚ ɜ ɞɪɭɝɭɸ ɮɭɧɤɰɢɸ. ȼ ɧɚɲɟɦ ɫɥɭɱɚɟ ɜɥɨɠɟɧɧɨɣ ɮɭɧɤɰɢɟɣ ɛɭɞɟɬ ɮɚɤɬɨɪɢɚɥ.
def ourSin( x ): def Fuct( N ): result = 1 for i in xrange( 2, N+1): result = result * i return result
result = 0 for N in xrange(1,20): result = result + (-1)**(N+1)*(x**(2*N-1))/Fuct(2*N-1) return result
ȼɫɟ ɦɨɞɢɮɢɤɚɰɢɢ ɫɜɟɥɢɫɶ ɤ ɩɟɪɟɦɟɳɟɧɢɸ ɤɨɞɚ ɮɭɧɤɰɢɢ ɫɜɟɪɯɭ ɜɧɢɡ, ɜ ɬɟɥɨ ɫɢɧɭɫɚ ɢ ɫɞɜɢɝɭ ɜɩɪɚɜɨ – ɜ ɉɢɬɨɧɟ, ɧɚɩɨɦɢɧɚɸ, ɷɬɨ ɧɟ ɷɫɬɟɬɢɤɚ, ɚ ɫɭɪɨɜɚɹ ɧɟɨɛɯɨɞɢɦɨɫɬɶ. Ɉɛɪɚɳɟɧɢɟ ɤ ɫɢɧɭɫɭ ɧɢɱɟɦ ɧɟ ɢɡɦɟɧɢɥɨɫɶ, ɚ ɜɨɬ ɤ ɮɚɤɬɨɪɢɚɥɭ ɨɛɪɚɬɢɬɶɫɹ ɢɡɜɧɟ ɛɨɥɶɲɟ ɧɟɥɶɡɹ. Ɋɚɡɭɦɟɟɬɫɹ, ɜɥɨɠɟɧɧɵɯ ɮɭɧɤɰɢɣ ɦɨɠɟɬ ɛɵɬɶ ɫɤɨɥɶɤɨ ɭɝɨɞɧɨ. Ɋɚɡɦɟɳɚɬɶɫɹ ɨɧɢ ɦɨɝɭɬ ɧɚ ɨɞɧɨɦ ɭɪɨɜɧɟ, ɚ ɦɨɝɭɬ ɢ ɜɧɭɬɪɢ ɞɪɭɝ ɞɪɭɝɚ. Ⱦɚɥɶɲɟ ɞɨɥɠɧɨ ɫɥɟɞɨɜɚɬɶ ɡɚɧɭɞɧɨɟ ɨɛɴɹɫɧɟɧɢɟ ɩɪɨ ɨɛɥɚɫɬɢ ɜɢɞɢɦɨɫɬɢ. ɉɢɲɟɦ ɜɨɬ ɬɚɤɨɟ ɱɢɫɬɨ ɞɥɹ ɞɟɦɨɧɫɬɪɚɰɢɢ ɤɨɧɰɟɩɰɢɢ ɤɨɞɚ:
def first(): def second(): x = 1 f = x + y + z print 'f = ', f x = 11 y = 12 second()
x = 101 y = 102
156
z = 103
first()
ɑɬɨ ɛɭɞɟɬ ɜɵɜɟɞɟɧɨ? ɉɪɚɜɢɥɶɧɨ, 116. ɉɟɪɟɦɟɧɧɚɹ
X ɜɨ ɜɧɭɬɪɟɧɧɟɣ
ɮɭɧɤɰɢɢ ɩɟɪɟɤɪɵɜɚɟɬ ɩɟɪɟɦɟɧɧɭɸ ɫ ɬɟɦ ɠɟ ɢɦɟɧɟɦ ɜɨ ɜɧɟɲɧɟɣ ɮɭɧɤɰɢɢ ɢ ɜɨɨɛɳɟ ɫɧɚɪɭɠɢ. ɉɟɪɟɦɟɧɧɨɣ
Y ɜɨ ɜɧɭɬɪɟɧɧɟɣ ɮɭɧɤɰɢɢ ɧɟɬ, ɩɨɷɬɨɦɭ ɨɧɚ
ɛɟɪɺɬɫɹ ɢɡ ɜɧɟɲɧɟɣ ɮɭɧɤɰɢɢ, ɧɨ ɧɟ ɢɡ ɨɫɧɨɜɧɨɝɨ ɬɟɥɚ ɩɪɨɝɪɚɦɦɵ. Ⱥ ɩɟɪɟɦɟɧɧɚɹ
Z – ɟɺ ɜɡɹɬɶ ɛɨɥɶɲɟ ɧɟɨɬɤɭɞɚ, ɬɨɥɶɤɨ ɢɡ ɫɚɦɨɝɨ ɜɧɟɲɧɟɝɨ ɦɢɪɚ.
ȼɵ ɜɫɺ ɩɨɧɹɥɢ? Ɉɱɟɧɶ ɯɨɪɨɲɨ, ɡɚɛɭɞɶɬɟ. ɇɟ ɧɚɞɨ ɨɛɪɚɳɚɬɶɫɹ ɢɡ ɮɭɧɤɰɢɢ ɤ ɜɧɟɲɧɢɦ ɩɟɪɟɦɟɧɧɵɦ. Ⱥ ɞɥɹ ɱɟɝɨ ɹ ɜɫɺ ɷɬɨ ɬɚɤ ɚɤɤɭɪɚɬɧɨ ɨɛɴɹɫɧɹɥ? Ⱥ ɩɨɬɨɦɭ, ɱɬɨ ɫɱɢɬɚɟɬɫɹ – ɧɟɥɶɡɹ ɫɬɚɬɶ ɩɪɨɝɪɚɦɦɢɫɬɨɦ, ɧɟ ɨɫɜɨɢɜ ɜɫɸ ɷɬɭ ɞɪɟɛɟɞɟɧɶ.
Ɍɟɩɟɪɶ ɜɨɩɪɨɫ, ɨɬɧɨɫɹɳɢɣɫɹ ɤ ɬɟɯɧɨɥɨɝɢɹɦ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ. Ɂɚɱɟɦ ɜɨɨɛɳɟ ɧɭɠɧɵ ɜɥɨɠɟɧɧɵɟ ɮɭɧɤɰɢɢ? ɉɟɪɜɨɟ – ɱɬɨɛɵ ɧɟ ɡɚɝɪɭɠɚɬɶ ɢɡɥɢɲɧɟ ɦɨɡɝ ɩɪɨɝɪɚɦɦɢɫɬɚ. Ɂɚɱɟɦ ɩɪɨɝɪɚɦɦɢɫɬɭ ɞɭɦɚɬɶ ɨ ɞɜɭɯ ɮɭɧɤɰɢɹɯ, ɟɫɥɢ ɦɨɠɧɨ ɞɭɦɚɬɶ ɬɨɥɶɤɨ ɨɛ ɨɞɧɨɣ? ȿɫɥɢ ɮɚɤɬɨɪɢɚɥ ɧɚɯɨɞɢɬɫɹ ɜɧɭɬɪɢ ɫɢɧɭɫɚ, ɬɨ ɞɭɦɚɬɶ ɦɨɠɧɨ ɢ ɧɭɠɧɨ ɬɨɥɶɤɨ ɨ ɫɢɧɭɫɟ. Ⱦɥɹ ɤɨɧɤɪɟɬɧɨ ɮɚɤɬɨɪɢɚɥɚ, ɤɚɤ ɹ ɭɠɟ ɫɤɚɡɚɥ, ɷɬɨ ɧɟ ɫɨɜɫɟɦ ɬɚɤ, ɮɚɤɬɨɪɢɚɥ ɩɨɥɟɡɟɧ ɢ ɫɚɦ ɩɨ ɫɟɛɟ. ȼɬɨɪɨɟ – ɷɬɨ ɞɨɛɚɜɥɹɟɬ ɤɨɞɭ ɤɨɦɩɚɤɬɧɨɫɬɢ ɢ ɩɟɪɟɧɨɫɢɦɨɫɬɢ. ȿɫɥɢ ɜɵ ɜɡɞɭɦɚɟɬɟ ɫɤɨɩɢɪɨɜɚɬɶ ɜ ɞɪɭɝɭɸ ɩɪɨɝɪɚɦɦɭ ɮɭɧɤɰɢɸ ɫɢɧɭɫɚ, ɟɫɬɶ ɲɚɧɫ, ɱɬɨ ɜɵ ɩɨɬɟɪɹɟɬɟ ɩɨ ɞɨɪɨɝɟ ɮɭɧɤɰɢɸ ɮɚɤɬɨɪɢɚɥɚ. ȿɫɥɢ ɮɚɤɬɨɪɢɚɥ ɜɧɭɬɪɢ ɫɢɧɭɫɚ, ɬɨ ɩɨɬɟɪɹɬɶ ɟɝɨ ɭɠɟ ɧɟ ɩɨɥɭɱɢɬɫɹ.
ɇɨ, ɜ ɨɛɳɟɦ ɢ ɰɟɥɨɦ, ɢɫɩɨɥɶɡɨɜɚɧɢɟ ɜɥɨɠɟɧɧɵɯ ɮɭɧɤɰɢɣ ɹ ɨɞɨɛɪɹɸ ɬɨɥɶɤɨ ɜ ɫɚɦɵɯ ɤɪɚɣɧɢɯ ɫɢɬɭɚɰɢɹɯ.
Ɏɭɧɤɰɢɢ ɫ ɮɭɧɤɰɢɹɦɢ
ȼ ɩɪɟɞɵɞɭɳɟɦ ɪɚɡɞɟɥɟ ɪɟɱɶ ɲɥɚ ɨ ɮɭɧɤɰɢɹɯ, ɜɧɭɬɪɢ ɤɨɬɨɪɵɯ ɧɚɯɨɞɹɬɫɹ ɞɪɭɝɢɟ ɮɭɧɤɰɢɢ. Ɍɟɦɭ ɨɛɫɭɞɢɥɢ ɢ ɬɟɦɚ ɡɚɤɪɵɬɚ. ɇɨ ɜɡɚɢɦɨɨɬɧɨɲɟɧɢɹ ɮɭɧɤɰɢɣ ɦɨɝɭɬ ɫɬɪɨɢɬɶɫɹ ɢ ɩɨ-ɞɪɭɝɨɦɭ. ȿɫɬɶ ɜɚɪɢɚɧɬ, ɤɨɝɞɚ ɮɭɧɤɰɢɹ ɜɵɡɵɜɚɟɬ ɫɚɦɚ ɫɟɛɹ. ɗɬɨ ɧɚɡɵɜɚɟɬɫɹ ɪɟɤɭɪɫɢɹ ɢ ɷɬɨ ɦɵ ɭɠɟ ɨɛɫɭɠɞɚɥɢ. ɇɨ ɟɳɺ ɨɫɬɚɺɬɫɹ ɫɥɭɱɚɣ, ɤɨɝɞɚ ɮɭɧɤɰɢɹ ɩɨɥɭɱɚɟɬ ɜ ɤɚɱɟɫɬɜɟ ɩɚɪɚɦɟɬɪɚ ɞɪɭɝɭɸ ɮɭɧɤɰɢɸ.
Ɋɟɲɢɦ ɫɨɜɟɪɲɟɧɧɨ ɪɟɚɥɶɧɭɸ ɢ ɩɪɚɤɬɢɱɟɫɤɭɸ ɡɚɞɚɱɭ. Ɉɧɚ ɜɫɬɪɟɱɚɟɬɫɹ ɞɨɫɬɚɬɨɱɧɨ ɱɚɫɬɨ. ȿɫɬɶ ɮɭɧɤɰɢɹ – ɜ ɦɚɬɟɦɚɬɢɱɟɫɤɨɦ ɫɦɵɫɥɟ ɫɥɨɜɚ. Ʉ
ɩɪɢɦɟɪɭ
2
116)(
xxxf . ȼɨɩɪɨɫɝɞɟ ɭ ɧɟɺ ɦɢɧɢɦɭɦ, ɬɨ ɟɫɬɶ ɩɪɢ
157
ɤɚɤɨɦ ɡɧɚɱɟɧɢɢ
x
x
ɮɭɧɤɰɢɹ ɩɪɢɧɢɦɚɟɬ ɫɚɦɨɟ ɦɚɥɟɧɶɤɨɟ ɡɧɚɱɟɧɢɟ? Ɉɛɥɚɫɬɶ ɦɚɬɟɦɚɬɢɤɢ, ɤɨɬɨɪɚɹ ɷɬɢɦ ɡɚɧɢɦɚɟɬɫɹ, ɧɚɡɵɜɚɟɬɫɹ ɧɟɥɢɧɟɣɧɨɟ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɟ. ɋɥɨɜɨ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɟ ɡɞɟɫɶ ɢɦɟɟɬ ɩɪɢɦɟɪɧɨ ɬɨ ɠɟ ɨɬɧɨɲɟɧɢɟ ɤ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɸ ɧɚ ɤɨɦɩɶɸɬɟɪɟ, ɱɬɨ ɢ ɦɚɬɟɦɚɬɢɱɟɫɤɚɹ ɮɭɧɤɰɢɹ ɤ ɩɢɬɨɧɨɜɫɤɨɣ, ɬɨ ɟɫɬɶ ɩɨɱɬɢ ɧɢɤɚɤɨɟ. Ɉ ɬɨɦ, ɤɚɤ ɢɫɤɚɬɶ ɦɢɧɢɦɭɦ, ɧɚɩɢɫɚɧɵ ɫɨɬɧɢ ɤɧɢɝ ɢ ɞɟɫɹɬɤɢ ɬɵɫɹɱ ɫɬɚɬɟɣ, ɩɨɬɨɦɭ ɱɬɨ ɷɬɨ ɞɟɣɫɬɜɢɬɟɥɶɧɨ ɧɭɠɧɨ ɢ ɞɟɣɫɬɜɢɬɟɥɶɧɨ ɜɚɠɧɨ.
Ⱦɥɹ ɤɨɧɤɪɟɬɧɨ ɧɚɲɟɣ ɮɭɧɤɰɢɢ ɦɢɧɢɦɭɦ ɦɨɠɧɨ ɧɚɣɬɢ ɱɢɫɬɨ ɦɚɬɟɦɚɬɢɱɟɫɤɢɦ ɫɩɨɫɨɛɨɦ, ɛɟɡ ɩɪɢɜɥɟɱɟɧɢɹ ɤɨɦɩɶɸɬɟɪɚ. ȼɫɟɝɨ-ɬɨ ɧɚɞɨ ɜɡɹɬɶ ɩɪɨɢɡɜɨɞɧɭɸ, ɩɪɢɪɚɜɧɹɬɶ ɟɺ ɤ ɧɭɥɸ ɢ ɪɟɲɢɬɶ ɭɪɚɜɧɟɧɢɟ. ɉɨɥɭɱɢɦ ɨɬɜɟɬ, ɱɬɨ ɦɢɧɢɦɭɦ ɞɨɫɬɢɝɚɟɬɫɹ ɩɪɢ
ɢ ɪɚɜɟɧ ɞɜɭɦ. ȼ ɪɟɚɥɶɧɨɣ ɠɢɡɧɢ
3
ɜɫɺ ɬɚɤ ɥɟɝɤɨ ɧɟ ɪɟɲɚɟɬɫɹ, ɩɪɨɫɬɨ ɩɨɬɨɦɭ, ɱɬɨ ɢɥɢ ɮɭɧɤɰɢɹ ɧɟ ɜɩɨɥɧɟ ɚɧɚɥɢɬɢɱɟɫɤɚɹ, ɢɥɢ ɞɚɧɧɵɟ ɩɨɫɬɭɩɚɸɬ ɜ ɪɟɚɥɶɧɨɦ ɜɪɟɦɟɧɢ ɨɬ ɧɟɤɨɬɨɪɨɝɨ ɩɪɢɛɨɪɚ – ɢ ɮɭɧɤɰɢɢ-ɬɨ ɧɢɤɚɤɨɣ ɢ ɧɟɬ. ȼɨɬ ɢɫɯɨɞɹ ɢɡ ɷɬɨɝɨ, ɢ ɪɟɲɢɦ ɧɚɲɭ ɡɚɞɚɱɭ.
ɇɨ, ɤɨɧɟɱɧɨ, ɧɚɣɬɢ ɦɢɧɢɦɭɦ ɞɥɹ ɨɞɧɨɣ ɢ ɬɨɥɶɤɨ ɨɞɧɨɣ ɮɭɧɤɰɢɢ ɫɨɜɟɪɲɟɧɧɨ ɧɟɢɧɬɟɪɟɫɧɨ. Ɇɵ ɧɚɩɢɲɟɦ ɮɭɧɤɰɢɸ, ɤɨɬɨɪɚɹ ɩɨɥɭɱɚɟɬ ɧɚ ɜɯɨɞ ɤɚɤɭɸ-ɬɨ ɞɪɭɝɭɸ ɮɭɧɤɰɢɸ, ɤ ɩɪɢɦɟɪɭ ɧɚɲ ɤɜɚɞɪɚɬɧɵɣ ɬɪɺɯɱɥɟɧ ɢɥɢ ɱɬɨ ɭɝɨɞɧɨ, ɢ ɢɳɟɬ ɟɺ ɦɢɧɢɦɭɦ. ɉɪɢ ɧɚɩɢɫɚɧɢɢ ɥɸɛɨɣ ɫɟɪɶɺɡɧɨɣ ɩɪɨɝɪɚɦɦɵ ɧɚɱɢɧɚɬɶ ɫɥɟɞɭɟɬ ɫ ɨɮɨɪɦɥɟɧɢɹ ɟɺ ɩɪɨɝɪɚɦɦɧɨɝɨ ɢɧɬɟɪɮɟɣɫɚ – ɬɨ ɟɫɬɶ ɤɬɨ ɤɨɝɨ ɜɵɡɵɜɚɟɬ ɢ ɫ ɤɚɤɢɦɢ ɩɚɪɚɦɟɬɪɚɦɢ.
def func( x): y = x**2 - 6*x + 11 return y
def opt( f, a,b, eps): #??? return x
a = -100.0; b = +100.0 eps = 0.01 x = opt( func, a,b, eps) print 'min x = ', x
ɇɚ ɦɟɫɬɟ ɜɨɩɪɨɫɢɬɟɥɶɧɵɯ ɡɧɚɤɨɜ ɞɨɥɠɟɧ ɛɵɬɶ ɫɚɦɵɣ ɜɚɠɧɵɣ ɤɨɞ ɩɨɢɫɤɚ ɦɢɧɢɦɭɦɚ. Ɍɟɩɟɪɶ ɨ ɬɨɦ, ɱɟɦ ɩɨɢɫɤ ɦɢɧɢɦɭɦɚ ɦɚɬɟɦɚɬɢɱɟɫɤɢ ɨɬɥɢɱɚɟɬɫɹ ɨɬ ɩɨɢɫɤɚ ɦɢɧɢɦɭɦɚ ɩɪɚɤɬɢɱɟɫɤɢ. ȼ ɦɚɬɟɦɚɬɢɤɟ ɯɨɬɹ ɢ ɧɟ ɜɫɟɝɞɚ, ɧɨ ɱɚɫɬɨ ɦɢɧɢɦɭɦ ɢɳɟɬɫɹ ɞɥɹ ɮɭɧɤɰɢɢ ɜɨɨɛɳɟ, ɬɨ ɟɫɬɶ ɜɟɡɞɟ, ɝɞɟ ɨɧɚ ɨɩɪɟɞɟɥɟɧɚ. ɇɚ ɩɪɚɤɬɢɤɟ ɩɨɱɬɢ ɜɫɟɝɞɚ ɦɢɧɢɦɭɦ ɢɳɭɬ ɧɚ ɡɚɞɚɧɧɨɦ ɤɨɧɤɪɟɬɧɨɦ
158
ɢɧɬɟɪɜɚɥɟ, ɢɧɚɱɟ ɧɟ ɩɨɥɭɱɚɟɬɫɹ. ɂɧɬɟɪɜɚɥ ɡɚɞɚɺɬɫɹ ɫɬɪɨɤɨɣ
= +100.0.
Ɉɛɪɚɬɢɬɟ ɜɧɢɦɚɧɢɟ, ɱɬɨ ɜ ɨɞɧɨɣ ɫɬɪɨɤɟ ɰɟɥɵɯ ɞɜɚ ɨɩɟɪɚɬɨɪɚ,
a = -100.0; b
ɪɚɡɞɟɥɺɧɧɵɟ ɬɨɱɤɨɣ ɫ ɡɚɩɹɬɨɣ. ɂ ɡɚɦɟɬɶɬɟ, ɱɬɨ ɱɢɫɥɚ ɡɚɞɚɧɵ ɜ ɩɥɚɜɚɸɳɟɦ ɮɨɪɦɚɬɟ, ɫ ɬɨɱɤɨɣ. ɂɧɚɱɟ ɫ ɧɢɦɢ ɨɛɪɚɳɚɥɢɫɶ ɛɵ ɤɚɤ ɫ ɰɟɥɵɦɢ ɢ ɜ ɪɟɡɭɥɶɬɚɬɟ ɩɨɫɥɟɞɭɸɳɟɝɨ ɞɟɥɟɧɢɹ ɩɨɥɭɱɚɥɢɫɶ ɛɵ ɰɟɥɵɟ ɪɟɡɭɥɶɬɚɬɵ, ɱɬɨ ɧɚɫ ɫɨɜɫɟɦ ɧɟ ɭɫɬɪɚɢɜɚɟɬ.
ɉɨɢɫɤ ɦɢɧɢɦɭɦɚ ɞɥɹ ɮɭɧɤɰɢɢ ɨɞɧɨɣ ɩɟɪɟɦɟɧɧɨɣ ɧɚɡɵɜɚɟɬɫɹ ɨɞɧɨɦɟɪɧɚɹ
ɨɩɬɢɦɢɡɚɰɢɹ. Ɇɵ ɢɫɩɨɥɶɡɭɟɦ ɦɟɬɨɞ, ɧɚɡɵɜɚɟɦɵɣ ɞɢɯɨɬɨɦɢɹ, ɩɨ ɞɪɭɝɨɦɭɞɟɥɟɧɢɟ ɧɚɞɜɨɟ. ɂɞɟɹ ɦɟɬɨɞɚ ɨɱɟɧɶ ɩɪɨɫɬɚ, ɜɩɪɨɱɟɦ ɤɚɤ ɢ ɜɫɟɯ ɞɪɭɝɢɯ
ɦɟɬɨɞɨɜ ɨɞɧɨɦɟɪɧɨɣ ɨɩɬɢɦɢɡɚɰɢɢ. ɗɬɨ ɬɨɬ ɫɚɦɵɣ ɫɥɭɱɚɣ, ɤɨɝɞɚ ɨɩɢɫɚɧɢɟ ɦɟɬɨɞɚ ɫɥɨɜɚɦɢ ɞɥɢɧɧɟɟ ɟɝɨ ɩɪɨɝɪɚɦɦɧɨɝɨ ɤɨɞɚ. ȼ ɧɚɱɚɥɟ ɭ ɧɚɫ ɟɫɬɶ ɢɧɬɟɪɜɚɥ
ɞɜɟ ɬɨɱɤɢ
],[ ba ɫɨɞɟɪɠɚɳɢɣ ɢɫɤɨɦɵɣ ɦɢɧɢɦɭɦ. ȼɵɛɢɪɚɟɦ ɧɚ ɢɧɬɟɪɜɚɥɟ
x ɢ 2x . ȼɵɛɪɚɬɶ ɨɞɧɭ ɬɨɱɤɭ ɦɨɠɧɨ ɦɧɨɝɢɦɢ ɫɩɨɫɨɛɚɦɢ,
1
ɜɵɛɪɚɬɶ ɞɜɟ ɬɨɱɤɢ ɷɬɨ ɧɚɫɬɨɹɳɟɟ ɢɫɤɭɫɫɬɜɨ – ɢɦɟɧɧɨ ɷɬɨ ɨɩɪɟɞɟɥɹɟɬ, ɤɚɤɢɦ ɢɦɟɧɧɨ ɦɟɬɨɞɨɦ ɦɵ ɩɨɥɶɡɭɟɦɫɹ. Ɍɨ, ɤɚɤ ɦɵ ɜɵɛɪɚɥɢ ɧɚɱɚɥɶɧɵɟ ɬɨɱɤɢ, ɨɤɚɡɵɜɚɟɬ ɫɟɪɶɺɡɧɟɣɲɟɟ ɜɥɢɹɧɢɟ ɧɚ ɷɮɮɟɤɬɢɜɧɨɫɬɶ ɪɚɛɨɬɵ ɩɪɨɝɪɚɦɦɵ. ɉɨɫɤɨɥɶɤɭ ɧɚɲɚ ɩɪɨɝɪɚɦɦɚ ɜ ɩɪɨɦɵɲɥɟɧɧɵɯ ɰɟɥɹɯ ɩɪɢɦɟɧɹɬɶɫɹ ɧɟ ɛɭɞɟɬ, ɜɫɺ, ɱɬɨ ɦɵ ɯɨɬɢɦ, – ɱɬɨɛɵ ɷɬɢ ɞɜɟ ɬɨɱɤɢ ɧɟ ɫɨɜɩɚɞɚɥɢ ɢ ɱɬɨɛɵ ɜɵɩɨɥɧɹɥɨɫɶ ɭɫɥɨɜɢɟ
xx .
21
Ⱦɚɥɶɲɟ ɦɵ ɫɦɨɬɪɢɦ, ɤɚɤɚɹ ɢɡ ɬɨɱɟɤ ɛɨɥɶɲɟ – ɢɦɟɧɧɨ ɛɨɥɶɲɟ, ɯɨɬɹ, ɧɚɩɨɦɢɧɚɸ, ɦɵ ɢɳɟɦ ɦɢɧɢɦɭɦ. ɉɭɫɬɶ
)()(
xfxf t . ȼɨɡɦɨɠɧɨɟ
21
ɪɚɜɟɧɫɬɜɨ ɡɧɚɱɟɧɢɣ ɡɞɟɫɶ ɪɨɥɢ ɧɟ ɢɝɪɚɟɬ. ɉɨɫɤɨɥɶɤɭ ɮɭɧɤɰɢɹ ɜɨɝɧɭɬɚɹ
)()()(
(ɦɚɬɟɦɚɬɢɱɟɫɤɢɣ ɬɟɪɦɢɧ), ɢɦɟɟɦ ɩɨɞɭɦɚɜ, ɩɪɢɯɨɞɢɦ ɤ ɜɵɜɨɞɭ, ɱɬɨ ɧɚ ɭɱɚɫɬɤɟ
xfxfaf tt . ɋɨɜɫɟɦ ɧɟɦɧɨɝɨ
21
],[1xa ɦɢɧɢɦɭɦɚ ɛɵɬɶ ɧɟ
ɦɨɠɟɬ, ɧɭ ɧɢɤɚɤ ɧɟ ɦɨɠɟɬ. ɉɨɷɬɨɦɭ ɱɢɫɥɨ a ɜɵɛɵɜɚɟɬ ɢɡ ɫɨɪɟɜɧɨɜɚɧɢɹ ɡɚ ɡɜɚɧɢɟ ɦɢɧɢɦɭɦɚ ɢ ɦɵ ɡɚɦɟɧɹɟɦ ɟɝɨ ɧɚ
x ɛɵɥɨ ɛɵ ɨɛɪɚɬɧɵɦ, ɢɡ ɝɨɧɤɢ ɜɵɥɟɬɟɥɨ ɱɢɫɥɨ b ɢ ɡɚɦɟɧɢɥɨɫɶ ɧɚ 2x .
ɢ
2
x . ȿɫɥɢ ɛɵ ɫɨɨɬɧɨɲɟɧɢɟ ɦɟɠɞɭ1x
1
ɉɨɡɞɪɚɜɥɹɸ, ɜɵ ɬɨɥɶɤɨ ɱɬɨ ɩɨɡɧɚɤɨɦɢɥɢɫɶ ɫ ɨɞɧɢɦ ɢɡ ɜɚɠɧɟɣɲɢɯ ɚɥɝɨɪɢɬɦɨɜ ɧɟɥɢɧɟɣɧɨɝɨ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ.
# ɢɧɮɨɪɦɚɰɢɹ ɞɥɹ ɦɚɬɟɦɚɬɢɱɟɫɤɢ ɨɞɚɪɺɧɧɵɯ ɍ ɧɚɫ ɮɭɧɤɰɢɹ ɨɞɧɨɣ ɩɟɪɟɦɟɧɧɨɣ. Ɉɛɵɱɧɨ ɩɪɢɯɨɞɢɬɫɹ ɢɫɤɚɬɶ ɦɢɧɢɦɭɦ ɞɥɹ ɮɭɧɤɰɢɢ ɩɪɨɢɡɜɨɥɶɧɨɝɨ ɱɢɫɥɚ ɩɟɪɟɦɟɧɧɵɯ. ɇɭ ɤɚɤ ɩɪɨɢɡɜɨɥɶɧɨɝɨ? ɇɢɤɚɤɨɣ, ɞɚɠɟ ɫɨɜɪɟɦɟɧɧɵɣ ɤɨɦɩɶɸɬɟɪ – ɞɨɫɬɭɩɧɵɣ ɩɪɨɫɬɨɦɭ ɧɟɮɬɹɧɢɤɭ – ɧɟ ɩɨɬɹɧɟɬ ɩɨɢɫɤ ɞɥɹ ɞɟɫɹɬɢ ɩɟɪɟɦɟɧɧɵɯ. ɉɹɬɶ-ɲɟɫɬɶ ɷɬɨ ɪɟɚɥɶɧɨ. Ɍɟɦ ɧɟ ɦɟɧɟɟ, ɩɨɢɫɤ ɜɫɟɝɞɚ ɦɧɨɝɨɦɟɪɟɧ. Ɉɞɧɚɤɨ, ɜɧɭɬɪɢ ɛɨɥɶɲɢɧɫɬɜɚ ɫɩɨɫɨɛɨɜ
159
ɨɩɬɢɦɢɡɚɰɢɢ ɜ ɤɨɧɰɟ ɤɨɧɰɨɜ ɨɛɧɚɪɭɠɢɜɚɟɬɫɹ ɨɞɧɨɦɟɪɧɚɹ ɨɩɬɢɦɢɡɚɰɢɹ. Ʉɚɤ ɫɤɚɡɚɥ ɜɟɥɢɤɢɣ ɪɭɫɫɤɨ-ɟɜɪɟɣɫɤɢɣ ɤɨɦɢɤ Ⱥɪɤɚɞɢɣ Ɋɚɣɤɢɧ, ɨ ɤɨɬɨɪɵɦ ɜɵ, ɜɨɡɦɨɠɧɨ, ɢ ɧɟ ɫɥɵɲɚɥɢ – ȼɧɭɬɪɢ ɫɪɟɞɧɟɜɟɤɨɜɨɝɨ ɪɵɰɚɪɹ ɧɚɲɢ ɨɩɢɥɤɢ. ȼ ɦɚɬɟɦɚɬɢɤɟ ɨɧɨ ɱɚɫɬɨ ɬɚɤ. Ⱥ ɭɠ ɜ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɢ ɜɫɟɝɞɚ. ɂ ɟɳɺ, ɟɫɥɢ ɮɭɧɤɰɢɹ ɥɢɧɟɣɧɚɹ, ɬɨ ɜɫɺ ɛɭɞɟɬ ɫɨɜɫɟɦ ɩɨ-ɞɪɭɝɨɦɭ. ɂ ɡɚɧɢɦɚɟɬɫɹ ɷɬɢɦ ɨɬɞɟɥɶɧɚɹ ɜɟɬɜɶ ɩɪɢɤɥɚɞɧɨɣ ɦɚɬɟɦɚɬɢɤɢ, ɩɨɞ ɧɚɡɜɚɧɢɟɦ ɥɢɧɟɣɧɨɟ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɟ. # ɤɨɧɟɰ ɂɧɮɨɪɦɚɰɢɢ
ɉɪɢɫɬɭɩɚɟɦ ɤ ɪɟɚɥɢɡɚɰɢɢ. ɇɚɲɚ ɛɭɞɭɳɚɹ ɮɭɧɤɰɢɹ ɧɚɡɵɜɚɟɬɫɹ
opt, ɷɬɨ ɨɬ
ɢɦɩɨɪɬɧɨɝɨ ɫɥɨɜɚ optimization, ɬɨ ɟɫɬɶ ɨɩɬɢɦɢɡɚɰɢɹ. ɇɚ ɜɯɨɞ ɟɺ ɩɟɪɟɞɚɸɬɫɹ ɱɟɬɵɪɟ ɩɚɪɚɦɟɬɪɚ, ɩɟɪɜɵɣ ɢɡ ɤɨɬɨɪɵɯ ɫɚɦ ɩɨ ɫɟɛɟ ɮɭɧɤɰɢɹ, ɚ ɞɜɚ ɩɨɫɥɟɞɭɸɳɢɯ – ɩɥɚɜɚɸɳɢɟ ɱɢɫɥɚ. Ɉɛɪɚɬɢɬɟ ɜɧɢɦɚɧɢɟ – ɷɬɨ ɬɨɥɶɤɨ ɦɵ ɡɧɚɟɦ, ɱɬɨ ɨɧɢ ɩɨ ɫɭɬɢ ɫɜɨɟɣ ɩɥɚɜɚɸɳɢɟ. ɉɨ ɢɯ ɜɧɟɲɧɟɦɭ ɜɢɞɭ ɜ ɜɵɡɨɜɟ ɮɭɧɤɰɢɢ ɨɛ ɷɬɨɦ ɞɨɝɚɞɚɬɶɫɹ ɧɟɥɶɡɹ. ɇɨ ɜɵ-ɬɨ, ɤɨɧɟɱɧɨ, ɞɨɝɚɞɚɥɢɫɶ ɩɨ ɢɯ ɢɦɟɧɚɦ, ɱɬɨ ɷɬɨ ɝɪɚɧɢɰɵ ɢɧɬɟɪɜɚɥɚ, ɜɧɭɬɪɢ ɤɨɬɨɪɨɝɨ ɦɵ ɛɭɞɟɦ ɢɫɤɚɬɶ ɦɢɧɢɦɭɦ. ɑɟɬɜɺɪɬɵɣ ɩɚɪɚɦɟɬɪ ɩɨɤɚ ɢɦɟɟɬ ɧɟɦɧɨɝɨ ɫɦɭɬɧɭɸ ɮɨɪɦɭɥɢɪɨɜɤɭ – ɷɬɨ ɬɨɱɧɨɫɬɶ. Ⱥ ɱɬɨ ɬɚɤɨɟ ɬɨɱɧɨɫɬɶ, ɦɵ ɪɟɲɢɦ ɩɨ ɯɨɞɭ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ. ɉɨɤɚ ɹɫɧɨ ɨɞɧɨ – ɱɟɦ ɦɟɧɶɲɟ ɷɬɨ ɡɧɚɱɟɧɢɟ, ɬɟɦ ɛɥɢɠɟ ɦɵ ɞɨɥɠɧɵ ɛɵɬɶ ɤ ɪɟɡɭɥɶɬɚɬɭ.
ɋ ɱɟɝɨ ɦɵ ɧɚɱɧɺɦ? ɇɚɱɧɺɦ ɦɵ ɫ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ ɜɥɨɠɟɧɧɨɣ ɮɭɧɤɰɢɢ – ɬɨɣ ɫɚɦɨɣ, ɨɬ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɢ ɤɨɬɨɪɵɯ ɹ ɫɨɜɫɟɦ ɧɟɞɚɜɧɨ ɩɪɟɞɥɚɝɚɥ ɨɬɤɚɡɚɬɶɫɹ. ɗɬɚ ɜɥɨɠɟɧɧɚɹ ɮɭɧɤɰɢɹ ɛɭɞɟɬ ɜɵɩɨɥɧɹɬɶ ɧɟɨɛɹɡɚɬɟɥɶɧɵɣ, ɧɨ ɨɱɟɧɶ ɩɨɥɟɡɧɵɣ ɫɟɪɜɢɫ – ɨɧɚ ɛɭɞɟɬ ɩɨɤɚɡɵɜɚɬɶ, ɤɚɤ ɢɞɺɬ ɧɚɲ ɩɪɨɰɟɫɫ ɨɩɬɢɦɢɡɚɰɢɢ ɢ ɧɚɫɤɨɥɶɤɨ ɦɵ ɩɪɢɛɥɢɡɢɥɢɫɶ ɤ ɰɟɥɢ. ɗɬɨ ɧɟ ɢɫɤɭɫɫɬɜɟɧɧɨɟ ɬɪɟɛɨɜɚɧɢɟ, ɥɸɛɚɹ ɪɟɚɥɶɧɚɹ ɩɪɨɝɪɚɦɦɚ ɨɩɬɢɦɢɡɚɰɢɢ ɞɨɥɠɧɚ ɜɵɜɨɞɢɬɶ ɢɧɮɨɪɦɚɰɢɸ ɬɚɤɨɝɨ ɪɨɞɚ. ɂɧɚɱɟ ɧɟɬɟɪɩɟɥɢɜɵɣ ɩɨɥɶɡɨɜɚɬɟɥɶ ɦɨɠɟɬ ɧɚɱɚɬɶ ɧɟɪɜɧɢɱɚɬɶ ɢ ɛɢɬɶ ɤɨɩɵɬɨɦ.
ȼɥɨɠɟɧɧɚɹ ɮɭɧɤɰɢɹ ɛɭɞɟɬ ɜɥɨɠɟɧɚ ɜ ɨɫɧɨɜɧɭɸ ɮɭɧɤɰɢɸ, ɜ ɬɭ, ɤɨɬɨɪɚɹ ɢ ɡɚɧɢɦɚɟɬɫɹ ɨɩɬɢɦɢɡɚɰɢɟɣ ɢ ɩɪɢɨɛɪɟɬɚɟɬ ɜɨɬ ɬɚɤɨɣ ɜɢɞ:
def opt( f, a,b, eps): def ShowProcess(): stroka = 'SP. ' + 'a = ' + str(a) + ' b = ' + str(b) print stroka # ɱɬɨ-ɬɨ ɡɚɝɚɞɨɱɧɨɟ return x
160
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]