МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ИЖЕВСКАЯ ГОСУДАРСТВЕННАЯ СЕЛЬСКОХОЗЯЙСТВЕННАЯ АКАДЕМИЯ» УТВЕРЖДАЮ Проректор по учебной работе, профессор П.Б.Акмаров _______________ «___»___________2009г. ИНФОРМАТИКА Методические указания для самостоятельной работы студентов очной формы обучения по выполнению индивидуальных заданий Составители: И.Г.Абышева, М.В.Николаева, А.Г.Семёнова Ижевск ФГОУ ВПО Ижевская ГСХА 2009 Методические указания подготовлены в соответствии с Государственным образовательным стандартом высшего профессионального образования, утвержденным 17.03.2000г. Методические указания рассмотрены и рекомендованы к изданию редакционно-издательским советом ФГОУ ВПО Ижевская ГСХА, протокол №_____от_______________2009г. Рецензент: С.А.Данилина − к.э.н., доцент кафедры Бухгалтерский учёт и аудит ФГОУ ВПО Ижевская ГСХА. Составители: Абышева И.Г., Николаева М.В., Семёнова А.Г. – ст.преподаватели каф. ЭКИТ Информатика: Методические указания для самостоятельной работы студентов очной формы обучения по выполнению индивидуальных заданий / Сост. И.Г.Абышева, М.В.Николаева, А.Г.Семёнова. – Ижевск: ФГОУ ВПО Ижевская ГСХА, 2009. – 59 стр. Методические указания содержат варианты заданий для выполнения индивидуальных работ, образцы выполнения заданий по системам счисления и кодированию информации, краткие сведения об алгоритмизации и программированию. Приводится краткое описание техники работы в интегрированной среде на языке программирования Turbo Pascal, справочная информация, примеры блоксхем и программ к выполнению индивидуальных заданий. © ФГОУ ВПО Ижевская ГСХА, 2009 © Абышева И.Г., Николаева М.В., Семёнова А.Г., сост., 2009 2 СОДЕРЖАНИЕ ВВЕДЕНИЕ ...................................................................................................................... 4 ИНДИВИДУАЛЬНАЯ РАБОТА № 1............................................................................ 5 Задание 1. Системы счисления (СС) ............................................................................. 5 Задание 2. Кодирование и единицы измерения информации ..................................... 6 ИНДИВИДУАЛЬНАЯ РАБОТА № 2............................................................................ 7 Задание 1. Запись математических выражений на алгоритмическом языке ............ 7 Задание 2. Запись арифметических выражений в математической форме ............... 8 Задание 3. Циклические вычислительные процессы. Вычисление значений функции при различных значениях аргумента (табулирование функции) ............... 9 Задание 4. Циклические вычислительные процессы. Решение задач, содержащих вычисление конечных сумм и произведений ............................................................. 11 Задание 5. Разветвление в цикле .................................................................................. 12 Задание 6. Обработка одномерных массивов ............................................................. 17 Задание 7. Обработка двумерных массивов ............................................................... 18 МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ВЫПОЛНЕНИЮ ИНДИВИДУАЛЬНЫХ ЗАДАНИЙ ............................................................................. 20 ИНДИВИДУАЛЬНАЯ РАБОТА № 1.......................................................................... 20 Задание 1. Системы счисления .................................................................................... 20 Задание 2. Кодирование и единицы измерения информации ................................... 23 ИНДИВИДУАЛЬНАЯ РАБОТА № 2.......................................................................... 24 Графический способ представления алгоритма ......................................................... 24 Интегрированная среда отладки и создания программ на языке программирования Turbo Pascal .................................................................................. 25 Основные символы ........................................................................................................ 26 Типы данных .................................................................................................................. 27 Ввод и вывод данных .................................................................................................... 28 Задание 1. Запись математических выражений на алгоритмическом языке .......... 29 Задание 2. Запись арифметических выражений в математической форме ............. 29 Задание 3. Циклические вычислительные процессы. Вычисление значений функции при различных значениях аргумента (табулирование функции) ............. 30 Задание 4. Циклические вычислительные процессы. Решение задач, содержащих вычисление конечных сумм и произведений ............................................................. 35 Задание 5. Разветвление в цикле .................................................................................. 38 Задание 6. Обработка одномерных массивов ............................................................. 41 Задание 7. Обработка двумерных массивов ............................................................... 48 Наиболее распространенные сообщения об ошибках ............................................... 56 Контрольные вопросы по теме «Алгоритмизация и программирование» .............. 57 СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ ..................................................... 58 3 ВВЕДЕНИЕ Методические указания предназначены для студентов очной формы обучения, изучающих основы работы на персональных компьютерах в рамках курса «Информатика». Методические указания состоят из двух индивидуальных работ и методических рекомендаций по их выполнению. Индивидуальная работа № 1 состоит из двух заданий на темы: «Системы счисления» и «Кодирование и единицы измерения информации». Целью выполнения индивидуальных заданий является приобретение умений и навыков самостоятельной работы с позиционными системами счисления и использование знаний в применении правил перевода числа из одной системы счисления в другую, выполнение арифметических операций в позиционных системах счисления, понимание процесса кодирования информации и определение количества информации в различных единицах измерения. Индивидуальная работа № 2 состоит из семи заданий на тему: «Алгоритмизация и программирование на языке Turbo Pascal». Задание 1 и 2 «Запись математических выражений на алгоритмическом языке и в математической форме»; Задание 3 и 4 «Циклические вычислительные процессы»; Задание 5 «Разветвление в цикле»; Задание 6 «Обработка одномерных массивов» и Задание 7 «Обработка двумерных массивов». Целью выполнения индивидуальных заданий является приобретение умений и навыков самостоятельной работы по программированию на алгоритмическом языке высокого уровня Turbo Pascal и анализу результатов работы программ, опыта взаимодействия с вычислительной машиной и её устройствами. Для выполнения заданий 3 − 7 необходимо выполнить следующие этапы: 1) Выполнение математической постановки задачи; 2) Разработка алгоритма решения задачи в виде графической схемы; 3) В соответствии с разработанной схемой алгоритма написать текст (листинг) программы; 4) Набор программы и её запуск на выполнение на компьютере; 5) Проверка полученных результатов, если результатов нет или они неверны, исправление ошибок и запуск программы на выполнение. По окончании работы составляется отчет по индивидуальному заданию. Требования по оформлению отчёта: 1) Оформляется на листах формата А4 (21 × 29,7 см); 2) На титульном листе указывается Ф.И.О. студента, номер группы и вариант индивидуального задания; 3) Основная часть может быть оформлена как в напечатанном виде, так и вручную, в которой для каждого задания описываются: а) условие задачи; б) блок-схема решения задачи (выполняется с помощью линейки или ПК); в) текст (листинг) отлаженной на компьютере программы; г) полученные результаты. 4 ИНДИВИДУАЛЬНАЯ РАБОТА № 1 Задание 1. Системы счисления (СС) 1) Данные два числа переведите в восьмеричную СС методом деления целой части и умножения дробной части (с точностью до 2 знаков после запятой). 2) Полученные числа переведите из восьмеричной в двоичную систему счисления, из двоичной в шестнадцатеричную систему счисления (по таблице соответствия). 3) С двоичными числами выполните сложение и вычитание. 4) Результаты сложения и вычитания переведите в десятичную систему счисления. 5) Данные десятичные числа сложите и вычтите, сравните с полученными Вами результатами в пункте №4. Сделайте вывод. № варианта 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 1-е число 179,45 314,26 37,382 93,148 456,13 45,282 823,27 74,361 435,75 45,932 374,12 31,564 381,28 70,415 621,14 42,184 354,15 58,614 539,42 71,145 515,38 67,626 413,15 25,175 545,37 53,124 553,29 61,723 626,54 63,519 915,32 34,822 753,13 57,238 5 2-е число 17,651 46,285 134,75 218,27 75,481 324,97 49,813 196,12 63,127 248,57 82,431 148,13 24,389 358,47 39,723 249,23 19,316 115,45 35,841 114,32 42,623 225,14 48,314 149,78 89,213 218,56 38,173 204,24 29,451 345,14 39,129 149,38 37,325 261,07 Задание 2. Кодирование и единицы измерения информации 1) Определите общее количество информации в битах, байтах, килобайтах, которое содержится в Вашей ФАМИЛИИ, ИМЕНИ, ОТЧЕСТВЕ и № группы. 2) Закодируйте все буквы русского алфавита числами от 1 до 33. Используя полученные числа, запишите последовательность цифр, соответствующих Вашей ФАМИЛИИ и ИМЕНИ. Выберите из этой последовательности четыре трехзначных числа подряд, начиная с первой цифры Вашей ФАМИЛИИ. Считать полученные числа целыми. Переведите их в двоичную систему счисления методом деления, а в восьмеричную, шестнадцатеричную системы счисления по таблице соответствия. Проверьте правильность перевода (2-ой, 8-ой и 16-ой СС). 6 ИНДИВИДУАЛЬНАЯ РАБОТА № 2 Задание 1. Запись математических выражений на алгоритмическом языке 1. 2. x y x z 7x e x 1/ 2 xy 12. 3,01x e 2 x y 5 z 1 z 1 a 1 x2 13. 3. ( x n )m 2 x n x y 14. 4. a b n x 1 5. a a b mn sin m 15. ln 2 x 16. (a 2 b 2 k ) (3n x 2 y ) x y 1 xy 7. 8. e 17. 2 x y e x y r x y x 1 arctg 2 z 0,15 sin e z 2 a x y / 2 x 1 y n / 2 e y 1 3 cos x 2 sin 2 y 18. 2x e x y 1 sin( x y) 19. ( tga | b |) 3 ( a b) 2 x x2 1 3 (2 x) 3 sin 2 7 x 9. (ln a e 2 ) 3 ctgb 20. 10. b b2 4ac 2a 21. 2x e x y 1 sin( x y) 22. 11. ln y ln x xy x2 x 1 sin 2 ( x y ) x 2 x3 y x x2 2 x 4 ( x y) m z t 2 xyz 6. sin x 0,49e a 7 2 b 2 ln 2 cos a 2 x y x z 7x e x 1/ 2 xy 23. 29. sin x cos x 2 sin 2 y ln x xy 3,01x e 2 x 24. 25. x x2 1 3 2 x 3 ( tga | b |) 3 ( a b) 2 26. a 27. r x y / 2 x y 3 y 5 z 1 z 1 a 1 x2 31. (a 2 b 2 k )(3n x 2 y ) 2 32. x2 x 1 sin 2 ( x y) 33. xy 1 xy ( x y) 28. ln y x 1 x z t 2 xyz x 1 y n / 2 e y 1 0,15 sin e z 30. 34. arctg 2 z e 2 x y x 2 x3 e x y sin 2 7 x Задание 2. Запись арифметических выражений в математической форме sqrt(exp(x-y)+ +exp(abs(y+z)*ln(x))) 1(11,21) а) b/sqrt(a*a+b) б) 2(12,22) а) (a+b)/(c-1)+sqrt(a)+exp(5*ln(c)) б) exp((1/3)*ln(u))+sqrt(v+z) 3(13,23) а) exp(a*ln(1/b))+exp((b/c)*ln(a)) б) ln(y+sqrt(abs(x)*(1/3))) 4(14,24) а) (a*exp(b*ln(a))+exp(c*ln(b)))/2*x б) 5(15,25) а) exp(b*ln(a))-exp((c/2)*ln(b)) 6(16,26) а) 7(17,27) 8(18,28) 9(19,29) abs((a/b)*exp(c*ln(b)))+ +c/exp(4*ln(d*p)) (exp(y*ln(x))+ а) +exp(z*ln(y)))/a+exp(5*ln(b)) exp((1/3)*ln(x/3))+ а) +exp(3*ln(r))+2*x а) a / b*exp(5*ln(b))+exp(4*ln(х)) 10(20,30) а) (d*c)/(2/r)+exp(3*ln(х)) 8 abs(exp((y/x)*ln(x))-exp((1/3)*ln(y / x))) sqrt(exp(5*ln(x1-x2))+ б) +exp(3*ln(y1 - y2))) exp(abs(x-y))+(x*ln(2*x)+ б) +sin(z)/cos(z)) б) (5*cos(x)/sin(x)–arctan(y))/4 sqrt(exp(a)+(exp(3*ln(x))))/ /cos(exp(4*ln(a))) sqrt(sin(exp(5*ln(u)))+ б) +abs(cos(v))) exp((1 + sin(y))* б) *ln(abs(cos(x)+cos(y)))) б) Задание 3. Циклические вычислительные процессы. Вычисление значений функции при различных значениях аргумента (табулирование функции) Составьте блок-схемы алгоритмов решения задач и программы на языке Turbo Pascal разными способами с использованием: 1) операторов условного (IF) и безусловного переходов (GOTO); 2) цикла с предусловием (WHILE); 3) цикла с постусловием (REPEAT); 4) цикла с параметром (FOR). 1. 8. Z a 5( x3 cos x) , X z z z2 a , a=3,8; a=18; 10≤x≤20 ∆x=2 0≤z≤10 ∆z=2 2. tg (4 3x) 9. cos x b x 2 , ln x 1 b=4,2; 1≤x≤11 ∆x=2 arctg ( y) y 15,8 X , c с=5; -10≤y≤10 ∆y=2 10. ax 6 Z cos x , x 3 x tg ( x) x Y , a a=15; 1≤x≤11 ∆x=2 c Y , x cos2 x tg 2 x с=48; 1≤x≤21 ∆x=4 x Y e x sin x d , ln( x 1) d=28; 1≤x≤31 ∆x=5 11. x2 Z cos( x 1,5)3 , a a=1,1; -6≤x≤6 ∆x=2 12. Y btg 2 x Y x 1 b, b=20; -12≤x≤12 ∆x=3 3. 4. 5. 6. 7. Y ln x ctgx x b , Y a=16; 2≤x≤20 ∆x=3 18 , sin( x / b) b=17,5; 1≤x≤11 ∆x=2 13. Y tg 2 ( x b) b , xb b=3,4; -1≤x≤1 ∆x=0,2 14. Z ( y x) y 1/ x , 1 ( y x) 2 y=18,64; 1≤x≤10 ∆x=1 b=25,6; 1≤x≤81 ∆x=10 9 15. 3 5 a x ln x Y , a 24. Y b( x 1 x 2 ) sin x , 25. Z ln( x y) 12.87 x3 , 26. y=18; 1≤x≤19 ∆x=2 18. Z x(sin x3 cos 2 y) , X ctg (5 y ) a, y Z x cos x , b 22. Y sin( x 2 a) x / a , a=1,1; 1≤x≤1,6 ∆x=0,05 Y tg ( x 2 1) x d, 28. Y e x cos x e a e x , 2,8ax а=0,4; 10≤x≤15 ∆x=2 Y ln x , c c=4,2; 1≤x≤2,4 ∆x=0,1 29. Z x2 cos( x a) 3 , a a=1,1; 0,4≤x≤1,6 ∆x=0,15 30. Y m tgt sin t , m=2; 2,2≤t≤3,2 ∆t=0,1 31. Y x 2 b b 2 sin( b=0,9; 0,8≤x≤1,7 ∆x=0,15 d=5,3; 10≤x≤16 ∆x=0,5 23. x 2 b b 2 sin( x b) / x , Z x 2 ( x 1) / b sin 2 ( x b) , b=3,4; 0,6≤x≤1,4 ∆x=0,05 b=6,5; 2,5≤x≤3 ∆x=0,05 21. Y 27. a=5,8; 10≤y≤50 ∆y=5 20. Y xa a / x , b=17; 2≤x≤3 ∆x=0,1 y=0,5; 0,3≤x≤1,8 ∆x=0,15 19. , a=5; 1≤x≤10 ∆x=1 b=8; -5≤x≤5 ∆x=1 17. ln x ln x c=5; 2≤x≤5 ∆x=0,5 a=3,7; 1≤x≤5 ∆x=0,5 16. Y x2 c 32. 10 ln | a x | , ln( a 2) ln x а=9,5 5≤x≤20 ∆x=2,5 Z xb ), x Задание 4. Циклические вычислительные процессы. Решение задач, содержащих вычисление конечных сумм и произведений Составьте блок-схемы алгоритмов решения задач и программы на языке Turbo Pascal с использованием цикла с предусловием, с постусловием и цикла с параметром. n 2 n 1 4 n 1 n 3 n 1 n 4 25. n 2 n 1 100 n 2 10 26. n 2 х 1 х 1 2 х 1 5 n 2 1 27. n n 1 16. t 2 t 1 t 5 28. 40 17. x 2 5 10 n n 2 10 29. 10 n 1 2 10 6. n 55 2 n1 18. ln 2 n 1 n5 10 10 30. ln n 2 n 1 n2 n 2 1 7. 10 ln 2 n 1 n 2 5 19. x 2 10 31. 1 n 3 n 1 2 n 1 2n 3 2 6 20. n n 5 2 x 32. x 100 x 1 10 17 1. 13. 20 5 2. x 2 2 14. 40 3. 5 2 15. x 2 x 1 x 1 x 8 10 4. x 3 ln x x 1 1 n 20 5. n 1 n 1 n5 20 8. n 2 n 2 n 1 10 2n 10. 2 n 1 4 n 1 20 9. 1 n 1 n ln (n 1) 15 11. 10 12. n2 n ln (n 1) 9 20 x 1 n2 5 21. t 1 x2 x 0,25 n t t 2 8 10 n 1 2 x 1 x 1 2 x 1 n2 n 5 2 t 34. 2 t 3 t 2 15 n 2 n 1 10 n 3 23. n 1 3 n n n 1 33. 20 24. n 1 12 22. 8 n2 10 n 1 1 n 1 n (ln n 100) 20 x 1 n 4 n2 n (n 1) 11 Задание 5. Разветвление в цикле Составьте блок-схемы алгоритмов решения задачи и программы на языке Turbo Pascal с использованием цикла с предусловием, с постусловием, используя, условный оператор IF. 1. Вычислите значения функции Z Z х ( х 2,3) 2 t 1,2 ; x 2 t ; ln(t 2 1) ; t 3 t 3 5. Вычислите значения функции F F at 3 bt х5 х 5; t х 3 3 х 2; 0 х 5 12 2 x 2 ; х0 t [1;8] t 0,5 a 3,2; b 1,7 x [ 5;10] x 1,5 2. Вычислите значения функции T 6. Вычислите значения функции Z t3 T 2 y 5,3 y 2 Z 2 7y x [16; 0] x 2 х 1 2 х 6; y х ln x; 1 x 3 ln( 1 x 2 ) ; х 3 x [2; 4] x 0,5 3. Вычислите значения функции У 7. Вычислите значения функции Т Y 2,2 x 4 0,3x T 12 2 y 2 t 1 2t 6; x t ln t ; 1 t 3 ln (1 t 2 ) ; t 3 t [0; 6] t 0,5 3х 24; y x ; х 3 1; x [2; 9] x 0,5 4. Вычислите значения функции Z 8. Вычислите значения функции W х 2,2 ; х 100 Z 3,5 х ; 100 х 200 ах 3 0,7 х; х 200 a 0,5 W Z 2 0,75 Z 0,25 х 2 7; y 2 х ; 7 x ; х 2 11 х 2 х 11 x 3t 2 0,5 t [5;10] t 0,5 х3 3 х 8 х 8 y3 ; у 1 Z у 2 у; 1 у 2 у ln у; у 2 y [0; 5] y 0,5 12 9. Вычислите значения функции Z Z 5 y 7, 2 y 2 12. Вычислите значения функции F F 5 y2 ах; х3 y х а; х 3 х ; х3 а a 1,5 x [1; 8] x 0,5 2 7 х 2,3 х х2 ; y ах3 7 х ; х 2,3 ln( x 7 x ) ; х 2,3 a 1,5 10. Вычислите значения функции Z 13. Вычислите значение функции Z x [1; 5] x 0,5 Z w2 1 Z 2 y 1 х x a ; хa w х ln (ax) ; х a ax 2 ; хa a 2,5 x [1; 5] x 0,5 x ; x 2,5 x 1 y ln( x 2 1); 1,5 x 2,5 2 x 1; x 1,5 x [1,1; 2,7] x 0,1 11. Вычислите значения функции У 14. Вычислите значения функции W а 2 i bi c; i 2,5 W i ; 2,5 i 3 ai bi 3 ; i3 a 3,4; b 3,5; с 5,2 Y x 12 x x 2 t 2 2 t ; x t ; 1 ln t ; t t Z ln Z Z [1;10] Z t2 2t 5 t 5 i 1 xa x [0;12] x 1 13 15. Вычислите значения функции W 18. Вычислите значения функции У W 3y2 5 Y 8 x 3 0,5 x х0 2 х ; y 3 x 2 2 x; 4 х 2 ; 0 х4 х4 3t 0,6; t 1 x t 8 ; 1 t 3 ln (1 t ) ; t 3 x [5; 5] x 1 t [1; 6] t 0,5 16. Вычислите значения функции Z 19. Вычислите значения функции У Z at 2 bt 1 Y уa у y a ; t ay 2 ; у a у ; уa a a 2,5; b 0,4 y 1; 5 y 0,5 17. Вычислите значения функции Z Z 15 y 7,2 y 2 ах 2 5; х y а2 ; а ln (ax) ; a 4,5 t2 4 t 1 t [1; 6] t 0,5 x х 0,3 х 0,3 х 0,3 х3 1 х2 1 ai 2 bi; 2 x i 0,5 i ; ai i ; a 2,2; b 0,3 i 1; 6 i 0,5 i4 i4 i4 20. Вычислите значения функции У а b х 15 x ; а b y ; 15 x 25 x 1 а ln ( x); x 25 a 8,2; b 0,3 x 3t t t [5; 22] t 3 14 21. Вычислите значения функции У 25. Вычислите значения функции W аt 2 b ; t 0 Y b ; t0 аt ; t0 х t c 2 x [8;10] x 0,2 W Z3 Z2 5 а 7,25 b 13,47 х 2 t; х t Z x3 t 2 ; х t 2 x 3t ; х t t2 c 4,51 x [3; 3] x 0,5 22. Вычислите значения функции F 26. Вычислите значения функции Т F Z 2 0,75 Z 0,25 T 2Q 3 Q 2 y 2 2 у; у 10 Z у 2 у ; 10 у 20 у ln у; у 20 1,5 x 2 ; х2 Q 1,8 ах; х 2 ( x 2) 2 6; х 2 a 2,3 x [1; 5] x 0,5 y 2 x2 5х x [1; 5] x 0,5 23. Вычислите значения функции Z Z 3W 2 27. Вычислите значение функции Z at 2 bt ; t 0,2 W at b ; t 0,2 2 t 0,2 at b a 2,5; b 0,8 t [1;1] t 0,2 24. Вычислите значения функции Z 4f2 Z 2 f х х а ; хa y x ln (ax); х а ах 2 ; хa a 2,5 x [2; 7] x 0,5 Z y4 5 28. Вычислите значения функции S S 12Q 3 7 Q bx ln bx; Q 1 ; bx ln bx; b 1,5 ха; х 0,3 f 5 х; х 0,3 ln (| x a |) ; х 0,3 a 2,3 x [1; 5] x 0,5 x [1; 2,2] x 0,1 15 x 1,4 x 1,4 x 1,4 29. Вычислите значение функции W 32. Вычислите значения функции Z W at 2 bt Z 5 y 7,2 y 2 6 ax b; t х 1; ln x; х 2,5 2,5 х 5 х5 a 3; b 0,5 x [0; 6] x 0,5 ax ; y х a ; ln (a x); х 0,3 х 0,3 х 0,3 a 2,8 x [0,5; 0,5] x 0,1 30. Вычислите значение функции T 33. Вычислите значения функций Z T w3 3 6 х 2 2 х; Z ln x ; 5 x 2 у2 ; у0 w 10 у ; 0 у 2 ln y ; у2 y [1; 6] y 0,5 31. Вычислите значения функции Z х 15 15 х 20 x 20 a 5,3 x at 2 e t t [2; 3] t 0,1 34. Вычислите значения функции F Z a y F bd ln d 2 х 3,2 ax bx c; a y x 1; x 3,2 x a bx ; x 3,2 x 1 a 1,8; b 0,5; с 3,5 a b x 2,3 x ; a b d ; 2,3 х 5 x 1 ax 2 bx; х 5 a 2,7; b 0,3 x [1; 8] x 0,5 x [1; 5] x 0,25 16 Задание 6. Обработка одномерных массивов Составьте блок-схему алгоритма решения задачи и программу на языке Turbo Pascal. 1. В массиве Y(7) найдите положительные элементы и среднее арифметическое этих элементов. 2. В массиве В(5) определите сумму положительных элементов и их количество. 3. В массиве А(8) найдите максимальный и минимальный элементы и их порядковые номера. 4. В массиве S(7) найдите произведение максимального и минимального элементов и их порядковые номера. 5. В массиве X(8) найдите все отрицательные элементы и замените их на 1. 6. В массиве А(6) найдите сумму максимального и минимального элементов и их порядковые номера. 7. В массиве Е(8) определите элементы равные Ø, их количество и порядковые номера. 8. В массиве S(6) найдите максимальный элемент, его порядковый номер и разницу с последним элементом. 9. В массиве В(7) найдите сумму элементов больших 1 и их порядковые номера. 10. В массиве С(8) найдите сумму элементов меньших 1 и их количество. 11. В массиве С(9) найдите произведение положительных элементов и их количество. 12. В массиве В(7) найдите произведение отрицательных элементов и их порядковые номера. 13. В массиве А(6) найдите минимальный элемент, его порядковый номер и разницу с первым элементом. 14. В массиве D(8) найдите произведение элементов больших 1 и их порядковые номера. 15. В массиве D(9) замените все отрицательные элементы противоположными. 16. В массиве В(8) найдите разницу между максимальным элементом и первым. 17. В массиве F(9) найдите минимальный и максимальный элементы, их порядковые номера и разницу между ними. 18. В массиве Е(8) найдите сумму положительных элементов и их порядковые номера. 19. В массиве D(8) найдите сумму положительных элементов, стоящих на чётных местах. 20. В массиве Е(8) найдите произведение отрицательных элементов, стоящих на нечётных местах. 21. В массиве Е(7) определите количество элементов массива, больших среднего арифметического всех его элементов. 22. В массиве H(9) найдите положительные элементы, увеличьте их в два раза и определите их порядковые номера. 23. В массиве В(8) найдите минимальный элемент и замените его на 1. 17 24. В массиве С(9) найдите все отрицательные элементы, возведите их в квадрат и определите их количество. 25. В массиве D(6) найдите разницу между максимальным элементом и вторым элементом массива. 26. В массиве Е(8) найдите сумму элементов массива больших 5 и определите их порядковые номера. 27. В массиве А(6) найдите минимальный и максимальный элементы массива и возведите их в квадрат. 28. В массиве С(7) отсортируйте все элементы по убыванию. 29. В массиве С(10) найдите произведение элементов массива больших 10 и определите их количество. 30. В массиве В(10) найдите сумму элементов меньших 1 и их порядковые номера. 31. В массиве W(9) найдите сумму квадратов положительных элементов. 32. В массиве А(6) замените все положительные элементы на 5. 33. В массиве А(8) найдите сумму максимального элемента с его порядковым номером. 34. В массиве F(9) найдите разницу между минимальным элементом и его порядковым номером. Задание 7. Обработка двумерных массивов Составьте блок-схему алгоритма решения задачи и программу на языке Turbo Pascal. 1. В матрице А(4×4) определите минимальный элемент каждой строки. 2. В матрице В(4×5) определите в каждом столбце произведение положительных элементов. 3. В матрице D(5×5) определите в каждой строке сумму отрицательных элементов. 4. В матрице F(5×6) определите максимальный элемент в каждом столбце. 5. В матрице H(6×5) определите в каждой строке произведение положительных элементов. 6. В матрице С(5×5) элементы, стоящие на главной диагонали, замените минимальным элементом, лежащим ниже главной диагонали. 7. В матрице K(4×4) определите сумму квадратов положительных элементов главной диагонали. 8. В матрице M(4×4) элементы, лежащие выше главной диагонали, замените максимальным элементом главной диагонали. 9. В матрице N(5×4) определите в каждом столбце сумму отрицательных элементов. 10. В матрице P(5×5) определите в каждом столбце количество положительных элементов. 11. В матрице V(6×5) элементы, лежащие ниже главной диагонали, уменьшите на максимальный элемент. 12. В матрице F(4×4) замените строки столбцами. 18 13. В матрице B(5×5) все положительные элементы, стоящие на главной диагонали, замените на Ø. 14. В матрице S(5×6) определите в каждой строке количество отрицательных элементов. 15. В матрице В(5×5) определите произведение элементов четных столбцов. 16. В матрице T(4×4) определите в каждом столбце произведение отрицательных элементов. 17. В матрице D(3×3) найдите произведение элементов больших 1 в каждом столбце. 18. В матрице U(4×5) определите в каждой строке количество положительных элементов. 19. В матрице V(5×5) определите в каждой строке произведение отрицательных элементов. 20. В матрице X(5×5) определите произведение положительных элементов главной диагонали. 21. В матрице Y(4×4) определите минимальный и максимальный элементы и найдите их разницу. 22. В матрице Z(4×5) определите сумму отрицательных элементов чётных строк. 23. В матрице B(5×4) определите сумму положительных элементов нечётных столбцов. 24. В матрице C(5×5) определите сумму отрицательных элементов, лежащих выше главной диагонали. 25. В матрице D(5×6) определите произведение элементов имеющих чётные индексы. 26. В матрице T(4×4) найдите в каждой строке максимальный элемент и поменяйте его местами с элементом главной диагонали. 27. В матрице F(5×5) все положительные элементы, лежащие выше главной диагонали, увеличьте на максимальный элемент. 28. В матрице K(6×6) определите сумму элементов нечётных столбцов. 29. В матрице M(4×4) все элементы уменьшите на минимальный элемент. 30. В матрице P(5×5) определите произведение положительных элементов главной диагонали. 31. В матрице В(5×5) определите сумму отрицательных элементов, лежащих ниже главной диагонали. 32. В матрице S(5×5) определите произведение элементов нечётных строк. 33. В матрице T(5×6) определите произведение элементов чётных столбцов. 34. В матрице R(6×5) определите в каждой строке сумму отрицательных элементов. 19 МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ВЫПОЛНЕНИЮ ИНДИВИДУАЛЬНЫХ ЗАДАНИЙ ИНДИВИДУАЛЬНАЯ РАБОТА № 1 Задание 1. Системы счисления Система счисления (СС) – способ представления чисел посредством цифр (символов). Любая система счисления характеризуется основанием – количеством цифр, используемых для записи числа. Двоичная система счисления используется для представления информации в памяти компьютера, а восьмеричная и шестнадцатеричная − для сокращенной записи двоичных кодов. Между различными системами счисления существует определенная математическая связь, что позволяет осуществлять действия с числами в любой системе счисления и получать верный результат. Правила перевода десятичных чисел в другие системы счисления 1. Чтобы перевести целое десятичное число в двоичную или другую СС, необходимо данное число разделить на основание новой СС, полученное частное снова разделить на это основание и т.д. до тех пор, пока частное не будет меньше делителя. Последнее частное дает старшую цифру числа в новой СС, остальными цифрами будут остатки от деления, взятые в порядке, обратном их получению. 2. Чтобы перевести дробную часть десятичного числа в двоичную или другую СС, необходимо данную дробную часть последовательно умножать на основание новой системы счисления. Умножаются только дробные части числа. Дробь в новой системе запишется в виде целых частей получаемых произведений, начиная с первого сомножителя. Перевод дробных чисел осуществляется с определенной погрешностью. 86,31 (10) → 126,23 (8) 86 (10) → 126 (8) 0,31 (10) → 0,23 (8) 86∟8 80 10∟8 6 8 1 2 0, 31 8 2, 48 * 8 3, 84 3. Для более быстрого перевода чисел между двоичной, восьмеричной и шестнадцатеричной системами счисления используют таблицу соответствия (таблица 2). Чтобы перевести двоичное число в восьмеричную (шестнадцатеричную) систему, необходимо разбить его на группы по три (четыре) разряда, начиная от запятой в разные стороны, и каждой группе поставить в соответствие восьмеричную (шестнадцатеричную) цифру по таблице соответствия. 86,31 (10) → 126,23 (8) → 1010110,010011 (2) → 56,4С (16) * 20 4. Чтобы перевести число из двоичной, восьмеричной или другой СС в десятичную, необходимо данное число разложить в ряд по степеням основания системы счисления. 1010110,010011 (2)→1*26+0*25+1*24+0*23+1*22+1*22+1*21+0*20+0*2-1+1*2-2+ 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 +0*2-3 +0*2-4 +1*2-5 +1*2-6=64+0+16+0+4+2+0+0+0,25+0+0,03+0,02=86,3(10) Арифметические действия в двоичной системе выполняются так же, как и в десятичной. Но если в десятичной СС перенос и заём осуществляется по десять единиц, то в двоичной − по две единицы. В таблице 1 представлены правила сложения и вычитания в двоичной СС. 1) При сложении в двоичной системе СС двух единиц в данном разряде будет Ø и появится перенос единицы в старший разряд. 2) При вычитании из нуля единицы производится заём единицы из старшего разряда, где есть 1. Единица, занятая в этом разряде, даёт две единицы в разряде, где вычисляется действие, а также по единице, во всех промежуточных разрядах. 1. Сложение 2. Вычитание 1001110101, 011 - 11011101011, 001 + 11110110, 010 10101101, 011 1101101011, 101 11000111101, 110 Таблица 1 − Арифметика в двоичной системе счисления Сложение Вычитание 0+0=0 1+0=1 0+1=1 1 + 1 = 10 0–0=0 1–0=1 1–1=0 10 – 1 = 1 Таблица 2 − Таблица соответствия СС Десятичная Двоичная Восьмеричная Шестнадцатеричная 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 000 001 010 011 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 0 1 2 3 4 5 6 7 8 9 А В С D E F 21 ПРИМЕР: Даны два числа: 437,49 и 19,63 1) Перевод десятичного числа в восьмеричную систему счисления: 437,49 437∟8 432 54∟8 5 48 6 6 * 19,63 19∟8 16 2 3 * 0, 49 8 3, 92 * 8 7, 36 437, 49 (10) → 665, 37 (8) 0, 63 8 5, 04 * 8 0, 32 19, 63 (10) → 23, 50 (8) 2) Перевод полученных чисел из восьмеричной системы счисления в двоичную и шестнадцатеричную, используя таблицу соответствия (таблица 2): 437, 49 (10) → 665, 37 (8) → 110110101, 011111 (2) → 1В5, 7С (16) 19, 63 (10) → 23, 50 (8) → 10011, 101000 (2) → 13, А (16) 3) Арифметические действия в двоичной системе счисления: + 110110101, 011111 10011, 101000 111001001, 000111 - 110110101, 011111 10011, 101000 110100001, 110111 4) Перевод числа из двоичной системы счисления в десятичную: 111001001, 000111 → 1*2 8+1*2 7+1*2 6+1*2 3+1*2 0+1*2 -4+1*2 -5 +1*2 -6= 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 = 256+128+64+8+1+0,06+0,03+0,02 = 457,11 (10) 110100001, 110111 → 8 7 6 5 4 3 2 1 0 1*2 8+1*2 7+1*2 5+1*2 0+1*2 -1+1*2 -2+1*2 -4+1*2 -5+1*2 -6= -1 -2 -3 -4 -5 -6 = 256+128+32+1+0,5+0,25+0,06+0,03+0,02 = 417,86 (10) 5) Проверка с полученными результатами: 437, 49 19, 63 457, 12 437, 49 19, 63 417, 86 + - Вывод: В результате проверки получена погрешность в дробной части на 0,01. Погрешность уменьшается от увеличения количества действий умножения в дробной части при переводе чисел из десятичной в другую систему счисления. 22 Задание 2. Кодирование и единицы измерения информации Для автоматизации работы с данными различных типов необходимо унифицировать форму их представления посредством кодирования. В вычислительной технике применяется двоичное кодирование. Двоичные цифры (binary digit) – 1 или Ø – биты. Бит – это один двоичный разряд, вмещающий наименьшее возможное количество дискретной информации. Большинство операций в компьютере выполняется над группами из 8, 16, 32, 64 разрядов. Группа из 8 разрядов (бит) называется байт. Байт является основной машинной единицей информации. Байт кодирует один символ (букву, цифру, знак, пробел). Для измерения объемов информации используют также более крупные единицы: 1 килобайт (Кб)=1024 байт=210 байт 1 мегабайт (Мб) = 220 байт 1 гигабайт (Гб) = 230 байт ПРИМЕР: 1) ИВАНОВ ИВАН ИВАНОВИЧ 20 символов = 20 байт; 20×8 = 160 бит; 20/1024 = 0,0195 Кбайт 2) И 10 В 3 А 1 Н 15 О 16 В 3 И 10 В 3 А 1 Н 15 Полученные четыре трехзначные целые числа: 103, 115, 163, 103 103 (10) → 1100111(2) → 147 (8) → 67 (16) 103∟2 102 51∟2 1 50 25∟2 1 24 12∟2 1 12 6∟2 0 6 3∟2 0 2 1 1 Проверка: 1100111 (2) → 1*2 6 +1*2 5 +0*2 4 +0*2 3 + 1*2 2 +1*2 1 +1*2 0 = 6 5 4 3 2 1 0 = 64 + 32 + 0 + 0 + 4 + 2 + 1 = 103 (10) 147 (8) → 1*8 2 +4*8 1 +7*8 0 = 64 + 32 + 7 = 103 (10) 2 1 0 67 (16) → 6*16 1 +7*16 0 = 96 + 7 = 103 (10) и т.д. с остальными полученными числами. 1 0 23 ИНДИВИДУАЛЬНАЯ РАБОТА № 2 Графический способ представления алгоритма Блок-схема – это графическое изображение алгоритма, состоящее из множества блоков, соединенных между собой линиями переходов, определяющими очередность выполнения действий. Блочные символы имеют различное графическое изображение в зависимости от выполнения ими действий. В каждом блоке с помощью формул или слов записываются выполняемые операции. Таблица 3 − Специальные графические символы Название блока Обозначение Пояснение Вычислительное действие или последовательность действий Блок обработки (действия) Логический блок (условия) да нет Блок начала цикла (модификация) Начало цикла Блок вызова вспомогательного алгоритма Блок ввода и вывода данных Блок начала и конца алгоритма Проверка условий НАЧАЛО КОНЕЦ Блок вывода на печать Вычисления по подпрограмме, стандартной подпрограмме Ввод-вывод в общем виде, обмен с внешними устройствами Начало, конец алгоритма, вход и выход в подпрограмму Вывод результатов на печать 24 Интегрированная среда отладки и создания программ на языке программирования Turbo Pascal После запуска turbo.exe появляется основной информационный экран среды Turbo Pascal, состоящий из трех частей: Главное меню – для выбора режима работы системы: ввод программы, компиляция, выполнение, отладка и т.д. Окно редактора – содержит текст программы. Строка состояния – расшифровываются основные функциональные клавиши в текущем режиме работы системы. Таблица 4 − Список основных команд и горячих клавиш Меню File New − открывает новое окно редактора и связывает его с именем NONAMEOO.PAS Open (F3) − открыть существующий файл Save (F2) – записывает содержимое активного окна редактора в дисковый файл Save as − записывает содержимое активного окна редактора в дисковый файл под другим именем Save all – записывает содержимое всех окон редактора в соответствующие дисковые файлы Change dir − позволяет изменить текущий каталог пользователя Exit (Alt+X) − выход из оболочки Меню Edit Undo (Alt+BackSpace) − возврат к предыдущему действию Redo − отмена Undo Сopy (Ctrl + Ins) − копирование в буфер Cut (Shift+Del) − удалить в буфер Paste (Shift+Ins) − вставить из буфера Clear (Ctrl+Del) − удаляет из окна редактора выделенный блок, но не помещает его в буфер Меню Run Run (Ctrl+F9) − осуществляет компиляцию, компоновку и исполнение (прогон) программы из файла редактора Step Over (F8) − выполнить программу по шагам Меню Compile Compile (Alt+F9) − компилирует (транслирует) программу, загруженную в данный момент в активное окно редактора Меню Debug Watch − включить окно для просмотра переменных Output − включить окно вывода результатов Меню Window Zoom (F5) − распахнуть окно Next (F6) − активизировать следующее окно Previous (Shift+F6) − активизировать предыдущее окно Close (Alt+F3) − закрыть окно List (Alt+Ø) − вызвать список окон Ctrl+Break − для выхода из зацикливания программы 25 Основные символы Основные символы языка − буквы, цифры и специальные символы − составляют его алфавит. Turbo Pascal включает следующий набор основных символов: 26 латинских строчных и 26 латинских прописных букв: ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz подчеркивание _ 10 цифр: 0123456789 знаки операций: + - * / = <> < > <= >= := @ ограничители: . , ' ( ) [ ] (. .) { } (* *) .. : ; спецификаторы: ^#$ Таблица 5 − Служебные (зарезервированные) слова Слово absolute array case div downto end for goto in mod of program string to until var with Смысл слова Слово Смысл слова Абсолютный Массив Вариант Деление нацело Уменьшить до Конец блока Для Переход на В (входит в) Остаток деления Из Программа Строка Увеличивая До Переменная С and begin const do else file function if label not or repeat then type uses while Логическое И Начало блока Константа Выполнять Иначе Файл Функция Если Метка Логическое НЕ Логическое ИЛИ Повторять То Тип Использовать Пока Кроме перечисленных, в набор основных символов входит пробел. Пробелы нельзя использовать внутри сдвоенных символов и зарезервированных слов. 26 Типы данных Тип определяет множество значений, которые могут принимать объекты программы (константы и переменные), а также совокупность операций, допустимых над этими значениями. Целые и вещественные типы данных предназначены для представления числовых данных. Целый тип в языке Turbo Pascal – это интервал целых чисел (таблица 6). Операции над этими числами определены лишь тогда, когда исходные данные (операнды) и результат лежат в этом интервале. Таблица 6 − Целочисленные типы данных Название целого типа Диапазон возможных значений Память, байт byte (байтовый) 0 – 255 1 shortint (короткий целый) -128 – 127 1 integer (целый) -32 768 – 32 767 2 word (слово) 0 – 65 535м 2 longint (длинный целый) -2 147 483 648 – 2 147 483 687 4 Вещественные числа представляются конечным множеством значений (таблица 7). Таблица 7 − Вещественные типы данных Название вещественного типа single (с одинарной точностью) real (вещественный) double (с двойной точностью) extended (с повышенной точностью) comp (сложный) Диапазон возможных значений (плюс-минус) Количество значащих чисел Память, байт 1,5е-45 − 3,4е38 7–8 4 2,9е-39 − 1,7е38 11 – 12 6 5,0е-324 − 1,7е308 15 – 16 8 3,4е-4932 − 1,1е4932 19 – 20 10 -2е63+1 − 2е63-1 19 – 20 8 Логический (boolean) тип данных имеет всего два значения: true (да – истина, 1) и false (нет, ложь, 0). Строковый тип данных (string) − это тип данных, состоящий из последовательности символов. Каждый символ занимает 1 байт памяти. Количество символов в строке называется её длиной. Длина строки может находиться в диапазоне от 0 до 255. Строковые величины могут быть константами и переменными. Строковая константа есть последовательность символов, заключенная в апострофы. Например, 'Язык программирования Turbo Pascal', '12345', ' ' − пустая строка. Символьный тип данных (char) – это тип данных, состоящий из одного символа (знака, буквы, кода) в определённой кодировке. Например: 'ж', 's', '№', '*', '_' − пробел. 27 Ввод и вывод данных Ввод данных – это передача исходных данных программы в оперативную память компьютера для последующей обработки программой. Read (x1, x2, …, xN); Readln (x1, x2, …, xN); где х1, х2, … − список ввода, содержащий имена переменных допустимых типов данных (integer, real, char, string). Эти значения вводятся с клавиатуры и отображаются на экране. Вывод данных – это передача данных после обработки из оперативной памяти на внешнее устройство (экран, принтер, файл на диске). Write (y1, y2, …,yN); Writeln (y1, y2, …, yN); где y1, y2, … − список вывода, предназначенный для вывода констант различных типов, значений переменных и выражений. Процедура вывода Write и Writeln отличаются тем, что после вывода последней переменной из списка курсор автоматически переходит в начало новой строки (таблица 8). Таблица 8 − Форматы вывода данных Значение Выражение 3 и 45 Write ( A, B ) 3 и 45 Write (‘A=’ , A ,’*B=’, B) 3 и 45 Write (A : 4, B : 4) 3 и 45 Write (‘A=’ , A:4, ‘*B=’ , B:4) Write (A:4); Write (B:4); Writeln (A:4); Writeln (B:4); 3 и 45 3 и 45 234,36 Write ( А ) 234,36 Write ( А : 8 : 2 ) 234,36 234,36 Write ( А : 8 : 4 ) Write ( А : 10 : 1 ) Результат 345 (с позиции курсора) A=3*B=45 ***3**45 (крайняя правая позиция) A=***3*B=**45 ***3**45 ***3 **45 2.3436000000E+02 (с плавающей точкой) **234.36 (с фиксированной точкой) 234.3600 *****234.4 Примечание: * означает пробел Общий вид записи: Write(R:m:n); R – действительное число; m – количество позиций, отводимых для числа; n – количество позиций, отводимых для дробной части. 28 Задание 1. Запись математических выражений на алгоритмическом языке 1,34 a 3 b 3 bc e a 2 b 2 1.34*abs(exp(3*ln(a))+exp(3*ln(b)))/(b*c)*exp(a*a - b*b) Задание 2. Запись арифметических выражений в математической форме 1.34*abs(exp(3*ln(a))+exp(3*ln(b)))/(b*c)*exp(a*a - b*b) 1,34 a 3 b3 bc ea 2 b 2 Таблица 9 − Арифметические функции Математика Turbo Pascal Расшифровка а2 sqr(a) sqrt(a) Квадрат Корень abs(a) Модуль ln(a) π ea an sin(a) cos(a) tg(a) ctg(a) arctg(a) --- ln(a) pi exp(a) exp(n*ln(a)) sin(a) cos(a) sin(a) / cos(a) cos(a) / sin(a) arctan(x) a div b a mod b -- Random (диапазон) -- Random(x) Натуральный логарифм Число пи Экспонента n-ая степень Синус (в радианах) Косинус(в радианах) Тангенс(в радианах) Котангенс(в радианах) Арктангенс(в радианах) Деление без остатка Остаток от деления Псевдослучайное число [0,1] Псевдослучайное число [0,х] a a 29 Задание 3. Циклические вычислительные процессы. Вычисление значений функции при различных значениях аргумента (табулирование функции) Циклический вычислительный процесс − это процесс, при котором действия выполняются многократно по одному и тому же алгоритму при изменяющихся исходных данных. Параметр цикла – это переменная, которая при каждом новом входе в цикл принимает новое значение, то есть управляет работой цикла. Шаг – величина, на которую изменяется начальный параметр при выполнении цикла. Условие задачи: Вычислите значение функции: Y=x2+sin(x+a), если а=5, 1≤ х≤10 с шагом ∆х=2 х – параметр цикла Для решения задачи использовать разные способы организации цикла: 1) Операторы условного (IF) и безусловного переходов (GOTO); 2) Цикл с предусловием (WHILE); 3) Цикл с постусловием (REPEAT…UNTIL); 4) Цикл с параметром (FOR) с вычислением количества повторений. 1 способ: Цикл с использованием операторов условного (IF) и безусловного переходов (GOTO) Если в программе после выполнения очередного оператора необходимо выполнить не следующий по порядку, а другой, помеченный для этого меткой, используется оператор безусловного перехода GOTO («переход на»). Переход возможен только в пределах блока. Форма записи оператора безусловного перехода: GOTO «Имя метки»; «Имя метки» − может быть идентификатор или целые числа от 0 до 9999. Объявление меток проводится перед объявлением констант после заголовка программы. Объявление начинается с ключевого слова LABEL, затем указывается имя метки. 30 Пояснение: 50 – имя метки. Program Name1; Label 50; {раздел описания меток} Var X, А: integer; Y: real; Begin A:=5; X:=1; 50: Y:=X*X+sin(X+A); Writeln ('X=',X, '; Y=',Y:4:1); X:=X+2; if x<=10 then goto 50; readln; end. НАЧАЛО A=5 Х=1 Y=X2+sin(X+A) X, Y X=X+2 да нет X<=1 КОНЕЦ 2 способ: Организация цикла с предусловием (WHILE) Общий вид алгоритма цикла с предусловием Предписывает выполнять тело цикла до тех пор, пока выполняется условие, записанное после слова While. Условие нет да Тело цикла Общий вид записи: While «Условие» do «Тело цикла»; «Условие» – выражение логического типа; «Тело цикла» – простой или составной оператор. В том случае, если в теле цикла имеется более одного оператора, в качестве оператора может выступать составной оператор с операторными скобками begin…end. 31 Перед каждым выполнением тела цикла вычисляется значение выражения условия, если результат истина, то тело цикла выполняется. Если результат ложь, то происходит выход из цикла и переход к первому оператору после While оператора. While, do – зарезервированные слова («Пока [выполняется условие]», «делать»). Program Name2; Var X,А: integer; Y: real; Begin A:=5; X:=1; While X<=10 do begin Y:=X*X+sin(X+A); Writeln ('X=',X,'; Y=',Y:4:1); X:=X+2; end; readln; end. НАЧАЛО A=5 Х=1 нет да X<=1 Y=X2+sin(X+A) X, Y X=X+2 КОНЕЦ 3 способ: Организация цикла с постусловием (REPEAT…UNTIL) Общий вид алгоритма цикла с постусловием Выполняется до тех пор, пока логическое выражение ложно. Условие нужно задать так, чтобы выйти из цикла. Тело цикла да нет Условие Общий вид записи: Repeat «Тело цикла»; until «Условие окончания цикла»; «Тело цикла» − произвольная последовательность операторов; «Условие» − выражение логического типа. 32 Процесс завершается тогда, когда после очередного выполнения заданной последовательности операторов тела цикла условие примет (впервые) значение истина. Проверка условия производится после выполнения тела цикла. Repeat …until − зарезервированные слова («Повторять», «пока не [выполнится условие]»). Program Name3; Var X, А: integer; Y: real; Begin A:=5; X:=1; repeat Y:=X*X+sin(X+A); Writeln ('X=',X,'; Y=',Y:4:1); X:=X+2; until X>10; readln; end. НАЧАЛО A=5 Х=1 Y=X2+sin(X+A) X, Y X=X+2 нет да X>10 КОНЕЦ 4 способ: Организация цикла с параметром (FOR) Общий вид алгоритма цикла с параметром Предписывает выполнять тело цикла для всех значений некоторой переменной (параметра цикла) в заданном диапазоне между начальным и конечным значениями. Используется в том случае, если параметр цикла имеет целочисленный тип и значение параметра увеличивается (уменьшается) на 1. i=i1, i2 i – параметр цикла i1 – начальное значение, Тело цикла i2 – конечное значение Общий вид записи: for «Параметр цикла»:=«Начальное значение» to (downto) «Конечное значение» do «Тело цикла»; 33 В качестве параметра цикла можно использовать имя простой переменной целого типа, в качестве начального, конечного значений можно использовать константы, переменные, а также арифметические выражения только целого или перечислимого типа. for, to, downto, do – зарезервированные слова («для», «до», «уменьшить до», «выполнить»). Порядок выполнения действий: До разработки алгоритма решения задачи необходимо вычислить количество повторений цикла К. x xнач K кон 1; K количество повторений цикла (целое число) x xнач 1; хкон 10 ; х 2 10 1 K 1 4,5 1 5,5 2 K 5 т.к. если K 6, то х 12 и не принадлежит диапазону 1;10 К – в данной программе будет означать конечное значение цикла. 1) Присвоение значения переменной А. 2) Присвоение переменной К значения, полученного до разработки алгоритма решения задачи. 3) Присвоение значения 1 переменной Х (начальное значение). 4) Организация цикла с параметром по переменной i (целое число). 5) Вычисление значения функции Y. 6) Вывод значения функции Y. 7) Добавление шага к переменной Х. Program Name4; Var X, А, К i: integer; Y: real; Begin A:=5; K:=5; X:=1; for i:=1 to K do begin Y:=X*X+sin(X+A); Writeln ('X=',X, ';Y=',Y:4:1); X:=X+2; end; readln; end. НАЧАЛО A=5; K=5 Х=1 i=1, K Y=X2+sin(X+A) X, Y X=X+2 КОНЕЦ 34 Задание 4. Циклические вычислительные процессы. Решение задач, содержащих вычисление конечных сумм и произведений Условие задачи: Вычислите конечное значение суммы функции S 20 (1 / x 1 x2 ) Для решения задачи использовать разные способы организации цикла: 1) Цикл с предусловием (WHILE); 2) Цикл с постусловием (REPEAT…UNTIL); 3) Цикл с параметром (FOR) со счётчиком (с шагом 1). 20 Пояснение: (1 / х2 ) х 1 1 1 1 ..... 12 22 х 20 1 способ: Цикл с предусловием (WHILE) Обозначения: А – вспомогательная переменная, в которой вычисляется слагаемое; S – переменная, в которой происходит накапливание значений сумм. Первое значение переменной S=0. Program Summa1; Var X: integer; S, A: real; Begin X:=1; S:=0; While X<=20 do begin A:=1/(X*X); S:=S+A; X:=X+1; end; Writeln ('S=', S:4:2); readln; End. НАЧАЛО I=1, 15 X=1 S=0 да нет X20 A=1/Х2 S=S+A X=X+1 S КОНЕЦ 35 2 способ: Цикл с постусловием (REPEAT…UNTIL) Program Summa2; Var X: integer; S, A: real; Begin X:=1; S:=0; repeat A:=1/(X*X); S:=S+A; X:=X+1; until Х>20; Writeln ('S=', S:4:2); readln; End. НАЧАЛО X=1 S=0 A=1/Х2 S=S+A X=X+1 да нет X>20 S КОНЕЦ 3 способ: Цикл с параметром (FOR) со счётчиком (с шагом 1) Program Summa3; Var X: integer; S, A: real; Begin S:=0; for X:=1 to 20 do begin A:=1/(X*X); S:=S+A; end; Writeln ('S=', S:4:2); readln; End. НАЧАЛО S=0 X=1, 20 A=1/Х2 S=S+A S КОНЕЦ 36 Условие задачи: Вычислите конечное значение произведения функции 2 10 n P n 1 3 n n2 12 22 102 ..... Пояснение: 3 n 3 1 3 2 3 10 n 1 10 1способ: Цикл с предусловием (WHILE) Обозначения: А – вспомогательная переменная, в которой вычисляется множитель; P – переменная, в которой происходит накапливание значений произведения. Первое значение переменной P=1. Program Summa1; Var N: integer; P, A: real; Begin N:=1; P:=1; While N<=10 do begin A:=N*N/(3+N); P:=P*A; N:=N+1; end; Writeln ('P=', P:4:2); readln; End. НАЧАЛО I=1, 15 N=1 P=1 да нет N10 A=N2/(3+N) P=P*A N=N+1 P КОНЕЦ Остальные способы аналогично вычислению конечной суммы. 37 Задание 5. Разветвление в цикле Разветвление в цикле означает, что тело цикла содержит разветвляющийся процесс. Разветвляющийся процесс – это процесс, в котором вычисления могут выполняться разными путями в зависимости от выполнения или невыполнения некоторых условий. Обеспечивает в зависимости от результата проверки условия (да или нет) выбор одного из альтернативных путей работы алгоритма. Каждый из путей ведет к общему выходу, так что работа алгоритма будет продолжаться независимо от того, какой путь будет выбран. Общий вид алгоритма разветвляющегося процесса да Условие Оператор 1 нет Оператор 2 Общий вид записи с условным оператором: If «Условие» then «Оператор_1» else «Оператор_2»; «Условие» − логическое выражение. if, then, else − зарезервированные слова («если», «то», «иначе»). Условие задачи: Найдите значения функции F B D ln D , если А Х Х , при Х 2,3 A B D , при 2,3 X 5 X 1 A X 2 B X , при X 5 A 2,7; B 0,3 где X 1;8, X 0,5 Порядок выполнения действий: 1. Присвоение значений переменным A и B. 2. Организация цикла по переменной Х. 3. Вычисление функции D в зависимости от условия. 4. Вычисление значений функции F. 5. Вывод значения функции F. 38 1 способ: Цикл с предусловием (WHILE) НАЧАЛО A= 2,7; B= -0,3 x=1 да нет x <=8 да нет КОНЕЦ x<2,3 да d=(a+x)/x x>=5 нет d=(a+b)/(x+1) d=aх2+bx F=bd+lnd F(x) x=x+0,5 Program funk_F1; Var а, b, d, x, F: real; begin a:= 2.7; b:= -0.3; x:=1; While x<=8 do begin if x<2.3 then d:=(a+x)/x else if x>=5 then d:=a*x*x+b*x else d:=(a+b)/(x+1); F:=b*d+ln(d); writeln('F(',x:2:1, ')= ',F:6:2); x:=x+0.5; end; readln; end. 39 2 способ: Цикл с постусловием (REPEAT…UNTIL) НАЧАЛО A= 2,7; B= -0,3 x=1 нет да x<2,3 да d=(a+x)/x нет x>=5 d=aх2+bx d=(a+b)/(x+1) F=bd+lnd F(x) x=x+0,5 да нет x>8 КОНЕЦ Program funk_F2; var a, b, d, x, F:real; begin a:= 2.7; b:=-0.3; x:=1; repeat if x<2.3 then d:=(a+x)/x else if x>=5 then d:=a*x*x+b*x else d:=(a+b)/(x+1); F:=b*d+ln(d); Writeln ('F(',x:2:1, ')= ',F:6:2); x:=x+0.5; until x>8; readln; end. 40 Задание 6. Обработка одномерных массивов Одномерный массив − это фиксированное количество элементов одного и того же типа, объединенных одним именем, где каждый элемент имеет свой номер. Например, A(8) – одномерный массив, где А – имя массива, 8 – количество элементов. Общий вид записи: А1, А2 , А3……., Аn – это одномерный массив, где Аi – элементы массива, i=1, 2, 3……n – индекс представляет собой переменную целого типа. Запись элемента массива на языке Паскаль А[i]. Общий вид записи описания одномерного массива: Var «Имя массива»: Array[n1..n2] Of «Тип элементов»; n1 − номер первого элемента; n2 − номер последнего элемента. Array, of – зарезервированные слова («массив», «из»). Задача 1. В массиве X(15) вычислите максимальный элемент массива и его порядковый номер. Обозначения: MAX – максимальный элемент массива; K – порядковый номер максимального элемента массива. НАЧАЛО i=1, 15 Program Massiv1; Var Xi {Описание используемых переменных} K, i, MAX: integer; {Описание массива X} X: array [1..15] of integer; begin MAX=X1; K=1 {Организация цикла для ввода элементов массива с клавиатуры} i=2, 15 да Xi >MAX нет for i:=1 to 15 do readln (X[i]); {Присвоение начальных значений максимальному элементу и его порядковому номеру} MAX:=X[1]; K:=1; MAX=Xi; K=i {Организация цикла для поиска максимального элемента массива и его порядкового номера} for i:=2 to 15 do if X[i]>MAX then begin MAX:=X[i]; K:=i; end; MAX, K КОНЕЦ {Вывод результатов вычисления на экран} writeln ('MAX=', MAX:2, ';K=', K); readln; end. 41 Задача 2. В массиве R(8) найдите минимальный элемент и замените его на 5. Обозначения: MIN – минимальный элемент массива; N – порядковый номер минимального элемента. НАЧАЛО i=1, 8 Program Massiv2; Var R: array[1..8] of integer; i, n, MIN: integer; begin for i:=1 to 8 do readln (R[i]); Ri MIN=Ri; n=1 i=2, 8 да Ri<MIN {Присвоение начальных значений минимальному элементу и его порядковому номеру} нет MIN:= R[1]; n:=1; {Организация цикла для поиска минимального элемента массива и его порядкового номера} MIN=Ri for i:=2 to 9 do if R[i]<MIN then begin MIN:= R[i]; n:=i; end; n=i {Вывод результатов вычисления на экран} MIN writeln ('MIN=',MIN); {Замена минимального элемента массива на 5} Rn=5 R[n]:=5; {Вывод нового массива на экран} i=1, 8 for i:=1 to 8 do write (R[i]:5); readln; end. Ri КОНЕЦ 42 Задача 3. В массиве А(8) определите количество положительных и отрицательных элементов. Обозначения: p – количество положительных элементов; ot – количество отрицательных элементов. НАЧАЛО i=1, 8 Program Massiv3; Var p, ot, i: integer; a: array[1..8] of integer; begin writeln ('Введите элементы массива А'); for i:=1 to 8 do readln (А[i]); Аi p=0; ot=0 {Присвоение начальных значений количеству положительных и отрицательных элементов} i=1, 8 p:=0; ot:=0; да Ai>0 нет ot=ot+1 p=p+1 {Организация цикла для подсчёта количества положительных и отрицательных элементов массива} for i:=1 to 8 do if А[i]>0 then p:=p+1 else ot:=ot+1; {Вывод результатов вычисления на экран} p, ot writeln ('Количество положительных элементов=', p:2); writeln ('Количество отрицательных элементов=', ot:2); readln; end. КОНЕЦ 43 Задача 4. В массиве X(15) вычислите сумму элементов массива меньших 10 и произведение элементов массива больших нуля. Обозначения: S – сумма элементов массива, меньших 10; P – произведение элементов массива, больших нуля. НАЧАЛО i=1, 15 Xi Program Massiv4; Var i, S, P: integer; X: array [1..15] of integer; begin for i:=1 to 15 do readln (X[i]); S=0; P=1 i=1, 15 да Xi<10 нет S:=0; P:=1; {Организация цикла для вычисления суммы и произведения элементов массива} S=S+Xi да {Присвоение начальных значений сумме и произведению} Xi>0 нет for i:=1 to 15 do begin if X[i]<10 then S:=S+X[i]; if X[i]>0 then P:=P*X[i]; end; {Вывод результатов вычисления на экран} writeln ('S=', S); writeln ('P=', P); readln; end. P=P*Xi S, P КОНЕЦ 44 Задача 5. В массиве D(15) найдите все положительные элементы и замените их на среднее арифметическое отрицательных элементов. Обозначения: S – сумма отрицательных элементов массива; SA – среднее арифметическое отрицательных элементов массива; K – количество отрицательных элементов массива. НАЧАЛО i=1, 15 Di S=0; K=0 i=1, 15 да Di<0 нет Program Massiv5; Var K, I: integer; S, SA: real; D: array [1..15] of real; Begin write ('Введите элементы массива D'); for i:=1 to 15 do readln (D[i]); S=S+Di {Присвоение начальных значений сумме и количеству элементов} K=K+1 S:=0; K:=0; {Организация цикла для вычисления суммы и количества отрицательных элементов массива} for i:=1 to 15 do if D[i]<0 then begin S:=S+D[i]; K:=K+1; end; SA=S/K SA {Вычисление среднего арифметического элементов массива} SA:=S/K; i=1, 15 да Di>0 {Вывод среднего арифметического элементов массива на экран} writeln ('SA=',SA:7:2); writeln ('Вывод нового массива D'); нет {Организация цикла для определения положительных элементов массива и замена их на среднее арифметическое и вывод нового массива на экран} Di=SA Di КОНЕЦ for i:=1 to 15 do begin if D[i]>0 then D[i]:=SA; writeln ('D(',i, ')= ', D[i]:5:2); end; readln; end. 45 Задача 6. В массиве С(7) отсортируйте все элементы по возрастанию. Обозначения: m – вспомогательная переменная для перестановки элементов массива. НАЧАЛО k=1, 7 Данные массива задаются типизированной константой, значения элементов массива выбираются произвольно i=k+1, 7 да Ci ≤Ck нет Program Massiv6; Var k, i, M: integer; M=Ci; Ci =Ck; Ck=M {Описание массива С с помощью типизированной константы} const c: array[1..7] of integer = (5,-4,2,7,-1,88,9); begin i=1, 7 {Сортировка массива} for k:=1 to 7 do for i:=k+1 to 7 do if c[i]<=c[k] then begin M:=c[i]; c[i]:=c[k]; c[k]:=M; end; Ci КОНЕЦ {Вывод нового массива на экран} for i:=1 to 7 do writeln ('c[',i,']=',c[i]:2); readln; end. Алгоритм сортировки массива: 1. Сравним между собой первый и второй элементы массива и переставим их (если это необходимо) в порядке возрастания. Затем то же самое проделаем со вторым и третьим элементами и т.д. до конца массива. В результате этих сравнений и перестановок наименьшее число окажется первым. 2. Второй этап сравнений и перестановок будет проходить для (N−1) элементов (N − количество элементов массива), начиная со второго до N. В этом случае второй элемент окажется наименьшим. Уменьшая каждый раз количество элементов на 1, операции сравнения и перестановок закончим тогда, когда останется один элемент массива. Переменная M является в качестве подсобной для перестановки элементов. 46 Задача 7. В массиве Х(8) подсчитайте сумму элементов, стоящих на чётных местах. Обозначения: S − сумма элементов, стоящих на чётных местах; i − переменная цикла с предусловием. НАЧАЛО i=1, 8 Program Massiv7; Var i,s: integer; X: array[1..8] of integer; begin for i:=1 to 8 do readln (X[i]); Xi i=2; S=0 да i≤8 {Присвоение начальных значений сумме и переменной} нет S:=0; i:=2; S=S+X[i] {Организация цикла с предусловием} While i<=8 do begin i=i+2 {Вычисление суммы и переход на следующее чётное место} S S:=S+X[i]; i:=i+2; end; {Вывод результатов вычисления на экран} КОНЕЦ writeln ('S=',S); readln; end. 47 Задание 7. Обработка двумерных массивов Двумерный массив – это структура данных, хранящая прямоугольную матрицу. В матрице каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен. Например, D(3×4) – двумерный массив, состоящий из 3 строк и 4 столбцов. Общий вид записи: d11 d12 d13 d14 где Dij – элементы массива; D d 21 d 22 d 23 d 24 i – индекс строки; d31 d32 d33 d34 j – индекс столбца. Запись элементов двумерного массива на языке Паскаль D[i,j]. Общий вид записи описания двумерного массива: Var «Имя массива»: array[n1..n2, m1..m2] of «Тип элементов»; n1 − номер первой строки; m1 – номер первого столбца; n2 − номер последней строки; m2 – номер последнего столбца. array, of – зарезервированные слова («массив», «из»). Задача 1. Найдите максимальный элемент в каждой строке матрицы A(4×3). Обозначения: НАЧАЛО MAX – максимальный элемент матрицы. Program Matriza1; i=1, 4 Var i, j, MAX: integer; MAX=Ai1 А:array[1..4,1..3] of integer; begin {Организация ввода матрицы с клавиатуры построчно} j=2, 3 да Aij>MAX нет for i:=1 to 4 do for j:=1 to 3 do readln (A[i, j]); {Организация цикла для поиска максимального элемента в каждой строке} MAX=Аij for i:=1 to 4 do begin {Присвоение начального значения максимальному элементу текущей строки} MAX MAX:=a[i,1]; for j:=2 to 3 do if a[i,j]>MAX then MAX:=a[i,j]; {Вывод результатов вычисления на экран} КОНЕЦ writeln ('Макс.элемент в', i, 'строке=', MAX); end; readln; end. 48 Задача 2. В матрице D(3×3) найдите произведение элементов каждого столбца. НАЧАЛО i=1, 3 j=1, 3 Обозначения: P – произведение элементов каждого столбца. Program Matriza2; Var {Описание переменных матрицы} Dij i, j, p: integer; {Описание матрицы D} D: array[1..3,1..3] of integer; Begin {Организация ввода матрицы с клавиатуры построчно} for i: =1 to 3 do for j : = 1 to 3 do readln (D[i, j]); j=1,3 P=1 i=1,3 {Организация цикла для вычисления произведения элементов каждого столбца} for j:=1 to 3 do begin {Присвоение начального значения произведению} P:=1; for i:=1 to 3 do p:=p*D[i,j]; P=P*Dij {Вывод результатов вычисления на экран} P writeln ('P=',P); end; readln; end. КОНЕЦ 49 Задача 3. В матрице С(5×5) элементы, лежащие выше главной диагонали, уменьшите на сумму элементов главной диагонали. Обозначения: Элементы, лежащие на главной диагонали, имеют одинаковые индексы (i=j). S – сумма элементов главной диагонали. Для ввода данных используется функция Random (50) – датчик случайных чисел в диапазоне [0;49]. Program Matriza3; Var i, j, s: integer; C: array[1..5,1..5] of integer; begin НАЧАЛО i=1, 5 j=1, 5 Cij S=0 {Запуск генератора случайных чисел} Randomize; Writeln ('Данная матрица'); For i:=1 to 5 do begin For j:=1 to 5 do begin C[i, j]:=Random(50); Write (' ',C[i, j]:4); End; Writeln; End; j=1, 5 S=S+Cii S i=1, 5 {Присвоение начального значения сумме} j=1, 5 да i<j Cij=Cij-S Cij S:=0; нет {Вычисление суммы элементов главной диагонали матрицы} For i:=1 to 5 do S:=S+C[i, i]; Writeln ('S=',S); Writeln ('Новая матрица'); {Организация цикла для уменьшения элементов матрицы, лежащих выше главной диагонали на сумму} For i:=1 to 5 do begin For j:=1 to 5 do begin If i<j then C[i, j]:= C[i, j]-S; КОНЕЦ {Вывод новой матрицы на экран} Write (' ',C[i, j]:4); end; Writeln; End; Readln; End. 50 Задача 4. В матрице В(3×3) все элементы, лежащие на главной диагонали, замените на 0. Данные задаются типизированной константой, значения элементов массива выбираются произвольно НАЧАЛО i=1, 3 Элементы, лежащие на главной диагонали, имеют одинаковые индексы (i=j). j=1, 3 да i=j Program Matriza4; Var i, j: integer; нет {Описание матрицы В с помощью типизированной константы} Bij=0 const B: array[1..3,1..3] of integer= ((1,-3,2), (5,-4,-2), (-1,5,8)); begin i=1,3 {Организация цикла для замены элементов главной диагонали матрицы на 0} j=1,3 for i:=1 to 3 do for j:=1 to 3 do if i=j then B[i, j]:=0 Bij {Вывод новой матрицы на экран} for i:=1 to 3 do begin for j:=1 to 3 do write (B[i, j]:5); writeln; end; readln; end. КОНЕЦ 51 Задача 5. В матрице А(4×4) определите в каждом столбце количество отрицательных элементов. Обозначения: k – количество отрицательных элементов. НАЧАЛО i=1, 4 Program Matriza5; Var i, j, k: integer; A: array[1..4,1..4] of integer; begin for i : = 1 to 4 do for j : = 1 to 4 do readln (А[i, j]); j=1, 4 Aij {Организация цикла для подсчёта количества отрицательных элементов в каждом столбце} j=1, 4 for j:=1 to 4 do begin k=0 {Присвоение начального значения количеству элементов} i=1, 4 да нет Aij<0 k:=0; for i:=1 to 4 do if A[i,j]<0 then k:=k+1; {Вывод результатов вычисления на экран} writeln ('В столбце №',j, 'кол-во отриц.элементов- ',k); end; readln; end. k=k+1 j, k КОНЕЦ 52 Задача 6. Выполните транспонирование матрицы Х(3×3) (замените строки столбцами). Обозначения: Yij – элементы полученной матрицы после транспонирования. НАЧАЛО i=1, 3 Program Matriza6; Var i, j: integer; Y: array[1..3,1..3] of integer; X: array[1..3,1..3] of integer; begin j=1, 3 Xij {Организация ввода матрицы X с клавиатуры} for i:=1 to 3 do for j:=1 to 3 do readln (X[i, j]); i=1, 3 {Организация цикла для замены строк столбцами матрицы} j=1, 3 for i:=1 to 3 do for j:=1 to 3 do Y[j,i]:=X[i,j]; Yji=Xij {Вывод новой матрицы Y на экран} for i:=1 to 3 do begin for j:=1 to 3 do write (Y[i,j]:5); writeln; end; readln; end. i=1, 3 j=1, 3 Yij КОНЕЦ 53 Задача 7. Определите произведение элементов четных столбцов матрицы В(3×4). Обозначения: Р – произведение элементов. НАЧАЛО i=1, 3 Program Matriza7; Var Р, i, j: integer; B: array[1..3,1..4] of integer; begin for i : = 1 to 3 do for j : = 1 to 4 do readln (B[i, j]); j:=2; j=1, 4 Вij {Организация цикла с предусловием} j=2 да while j<=4 do begin {Присвоение начального значения произведению} нет P:=1; j≤4 {Вычисление произведения} Р=1 for i:=1 to 3 do Р:=Р*В[i,j]; {Вывод результатов вычисления на экран} i=1, 3 writeln ('Р=',Р); {Переход на следующий чётный столбец} Р=Р*Вij j:=j+2; end; readln; end. Р j=j+2 КОНЕЦ 54 Задача 8. В каждой строке матрицы А(3×3) определите сумму положительных элементов. Обозначения: S – сумма положительных элементов. НАЧАЛО i=1, 3 Program Matriza8; Var s, i, j: integer; A: array[1..3,1..3] of integer; begin for i : = 1 to 3 do for j : = 1 to 3 do readln (А[i, j]); j=1, 3 Аij {Организация цикла для вычисления суммы положительных элементов матрицы в каждой строке} i=1, 3 for i:=1 to 3 do begin {Присвоение начального значения сумме} S=0 S:=0; for j:=1 to 3 do if A[i,j]>0 then S:=S+A[i,j]; j=1, 3 {Вывод результатов вычисления на экран} writeln ('Сумма ',i,' строки=',S); end; readln; end. нет да Aij>0 S=S+Aij S КОНЕЦ 55 Наиболее распространенные сообщения об ошибках 2 Identifier expected, не указан идентификатор. 3 Unknown identifier, неизвестное имя идентификатора, идентификатор не был описан. 4 Duplicate identifier, двойной идентификатор, попытка дважды описать один и тот же идентификатор. 5 Syntax error, синтаксическая ошибка, найден недопустимый символ. 8 String constant exceeds line, пропущен апостроф в конце строковой константы. 10 Unexpected end of file, отсутствует конец файла, т.е. не поставлена точка после END или вероятно в программе неодинаковое количество операторов BEGIN и END. 11 Line too long, слишком длинная строка. 12 Type identifier expected, не указан тип идентификатора. 16 Disk full, диск заполнен, необходимо удалить некоторые файлы или воспользоваться новым диском. 20 Variable identifier expected, не указан идентификатор переменной. 21 Error in type, ошибка в объявлении типа. 26 Type mismatch, несоответствие типов. Несовместимые типы переменной и выражения в операторе присваивания; 33 Labеl identifier expected, необходим идентификатор метки. 36 BEGIN expected, необходим BEGIN. 37 END expected, необходим END. 38 Integer expression expected, необходимо выражение типа Integer. 41 Operand types do not match operator, типы операндов не соответствуют операции. 42 Error in expression, ошибка в выражении. 50 DO expected, необходим оператор DO. 57 THEN expected, необходим THEN. 62 Division by zero, предшествующая операция пытается выполнить деление на ноль. 79 Integer or real expression expected, необходимо выражение вещественного или целого типа. 85 “;”expected, отсутствует точка с запятой. 89 “)”expected, пропущена скобка. 97 Invalid FOR control variable, неверный параметр цикла оператора FOR. 98 Integer variable expected, переменная должна иметь целый тип. 113 Error in statement, ошибка в операторе, данный символ не может быть первым символом в операторе. 207 Invalid floating point operation, недопустимая операция с плавающей запятой (отрицательный аргумент функции SQRT или аргумент функции LN равен нулю или имеет отрицательное значение). 56 Контрольные вопросы по теме «Алгоритмизация и программирование» 1. Этапы решения задач на ЭВМ. 2. Понятие алгоритма, свойства алгоритмов. 3. Способы задания алгоритмов. 4. Линейная структура алгоритмов. 5. Разветвляющая структура алгоритмов. 6. Циклическая структура алгоритмов. 7. Характеристика языков программирования. 8. Трансляторы с языков программирования. 9. Алгоритмический язык Turbo Pascal: особенности, назначение. 10.Алфавит и словарь языка Turbo Pascal. 11.Константы и переменные. 12.Структура программы. Требования к написанию программ. 13.Классификация типов данных. 14.Стандартные типы данных. 15.Пользовательские типы данных. 16.Выражения, операции, операнды. 17.Приоритеты выполнения операций. 18.Понятие оператора. Простые операторы. 19.Структурные операторы: составной оператор. 20.Структурные операторы: условные операторы. 21.Структурные операторы: операторы повтора. 22.Понятие массива, характеристика массива. 23.Описание массивов. 24.Порядок разработки программы на Turbo Pascal. 57 СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 1. Бабушкина, И. А. Практикум по Турбо Паскалю: учебное пособие по курсам «Информатика и вычислительная техника» / И. А. Бабушкина, Н. А. Бушмелева. – М. : АБФ, 1998. – 384с. 2. Немнюгин, С. А. Turbo Pascal / С. А. Немнюгин. – СПб. : Питер, 2002. – 496с. 3. Основы программирования / С. М. Окулов. – 3-е изд. – М. : БИНОМ. Лаборатория знаний, 2006. – 440с. : ил. 4. Попов, В. Б. Турбо Паскаль для школьников / В. Б. Попов. – М., 2000. 5. Рапаков, Г. Г. Turbo Pascal для студентов и школьников / Г. Г. Рапаков, С. Ю. Ржеуцкая. – СПб. : БХВ-Петербург, 2004. – 352с. 6. Фаронов, В. В. Турбо Паскаль 7.0. Практическое программирование / В. В. Фаронов. − Киев, 2000. 7. Фаронов, В. В. Турбо Паскаль 7.0. Начальный курс / В. В. Фаронов. – Киев, 2000. 58 Учебное издание ИНФОРМАТИКА Методические указания для самостоятельной работы студентов очной формы обучения по выполнению индивидуальных заданий Составители: Абышева Ирина Геннадьевна, Николаева Марина Викторовна, Семёнова Александра Георгиевна Редактор М.Н.Перевощикова Технический редактор М.Ю.Соловьёва Подписано в печать «____»___________2009г. Формат 60×84/16. Гарнитура Times New Roman Усл.печ.л. ______ Уч.-изд.л. ______ Тираж _______ экз. Заказ № _______ ФГОУ ВПО Ижевская ГСХА 426069, г. Ижевск, ул. Студенческая, 11 59