Методические указания к лабораторным работам по дисциплине Информатика для студентов всех направлений всех форм обучения
![]()
|
![]() ![]() и науки Российской Федерации ![]() В. М. Паклина, Е. М. Паклина Методические указания к лабораторным работам по дисциплине «Информатика» для студентов всех направлений всех форм обучения Научный редактор: доц., канд. техн. наук И. Н. Обабков Подготовлено кафедрой интеллектуальных информационных технологий Методические указания содержат лабораторные работы по линейным алгортмам, ветвлениям, циклам. Рассматриваются подпрограммы и структурированные типы данных: массивы, множества, строки, записи и файлы. Екатеринбург 2011 Основы алгоритмизации и программирования Учебное электронное текстовое издание ОГЛАВЛЕНИЕ Лабораторная работа № 3. ЦиклыЗадание 1. Определите, что вычисляется в алгоритме. Составьте программу по данной блок-схеме. Начало n S = 0 S Конец S = S + 1/i i= 1, n, 1 Рис. . Цикл с параметром Задание 2. Составьте программу для вычисления суммы ряда 1 + 1/3 + 1/5 + 1/7 + … Program abc; var s, t:real; i,n:integer; begin write('введите n'); readln(n); s:=0; for i:=1 to n do begin t:=2*i-1; s:=s+1/t; end; write('сумма равна ',s); readln; end. Задание 3. Составьте программу для вычисления факториала (n! = 1·2·3·…·n). Program abc; var n, i, k:real; begin write('введите n'); readln(n); if n=0 then writeln('0!=1') else if n<0 then writeln('факториал определён только для неотрицательных чисел') else i:=0; k:=1; repeat k:=k*(i+1); i:=i+1; until i=n; write(n,'!=',k); readln; end. Задание 4. Составьте программу, которая выводит на экран таблицу степеней двойки от 0 до 10. program stepen; var i: integer; begin for i := 0 to 10 do writeln('2^',i,' ',exp(ln(2)*i)); end. Задание 5. Составьте программу, которая выводит на экран таблицу степеней для произвольного числа. program stepen; var i,s,n,t: integer; begin writeln('введите число, начальную и конечную степени'); readln(s,t,n); for i:=t to n do writeln(s,'^',i,' ',exp(ln(s)*i)); end. Задание 6. Определите, что вычисляется в программе. Program Example5; Uses Crt ; Var n, m: integer ; Begin Clrscr; Writeln ('Введитедвачисла'); Readln (n, m); While m<>n do Begin if m > n then m:=m-n else n:=n-m; End; Writeln (m) ; End. Наибольший общий делитель Задание 7. Определите, что вычисляется в программе, и составьте к ней блок-схему. Program Example6; Uses Crt ; Var x, y: real ; Begin Clrscr; x:= 1; While x <= 10 do Begin y:= sqr(x) + 1; Writeln(x:5:1, y:10:1); x:= x+0.5; End; End. Выводит число, на 1 большее квадрата x ![]() Задание 8. Составьте программу, которая выводит таблицу значений функции y = 2x2 + 3x – 9 в диапазоне от – 3 до 3 с шагом 0,5. Рекомендуемый вид экрана: --------------- Х | У --------------- – 3 | 0 – 2,5 | – 4 – 2 | – 7 … | … 3 | 18 --------------- Доработайте программу, чтобы диапазон и шаг можно было вводить при запуске программы. Program program; var a,b,dx,y:real; begin repeat writeln('Введите начало и конец диапазона:'); readln(a,b); until a<=b; writeln('Введите шаг: '); readln(dx); while a<=b do begin y:=4*a+3*a-9; writeln(a:4:2,y:9:2); a:=a+dx; end; end. Задание 9. Составьте программу, в которой необходимо отгадать зашифрованное слово (например, КОБЯЛО). Пользователь вводит ответ до тех пор, пока не отгадает слово из этих букв. Как только введено правильное слово, программа завершается, и на экран выводится сообщение «Вы угадали с N попытки!». Program Example; const a = 'КОРОВА'; const b = 'ОВКОРА'; Var c:string; n:integer; Begin WriteLn(b,' Какое слово загадано?'); Repeat ReadLn(c); n:= n+1; Until c=a; WriteLn('Вы угадали c ',n,' попытки!'); End. Задание 10. Составьте программу, которая находит все простые числа в диапазоне от A до B. uses crt; var a,b,i,s,j:integer; begin write('Введите A='); readln(a); repeat write('Введите B='); readln(b); until b>a; writeln('Простые числа в диапазоне [',a,';',b,']'); for i:=a to b do begin s:=0; for j:=2 to i-1 do if i mod j=0 then inc(s); if (s=0) then write(i,' '); end; end. Задание 11. Составьте программу, которая находит все совершенные числа в диапазоне от A до B. program primer11; uses crt; var s,n,i,A,B:integer; begin clrscr; writeln ('Введите целые числа [A,B]: '); readln (A,B); for n:=A to B do begin s:=0; for i:=1 to n do if (n mod i=0) and (n>i) then begin s:=s+i; end; if ((n div i)=(n/i)) and (s=n) then writeln('Совершенное число: ',n,' '); read; end; readln; end. Лабораторная работа № 4. Одномерные массивыЗадание 1. В алгоритме вычисления суммы и количества положительных элементов заполните пустые места. Начало n sum:=0 i Конец i=1, n, 1 count:=0 inc(count) sum, count i=1, n, 1 sum:=sum+a[i] a[i]>0 Да Нет Рис. . Одномерный массив Задание 2. Составьте блок-схему к следующей программе: Program Example7; Uses crt; Var a: array[1..100] of integer; i, n, max: integer; Begin Clrscr; Write('n='); Readln(n); for i:=1 to n do Begin Write('a[',i,']='); Readln(a[i]); End; max:=a[1]; for i:=2 to n do if a[i]>max then max:=a[i]; Writeln('max=',max); End. ![]() Задание 3. Составьте программу, которая находит максимальный и минимальный элементы в одномерном массиве и их порядковые номера. const n = 10; var a:array[1..n]of integer; i,max,min,e,y:integer; begin randomize; for i:=1 to n do a[i]:=random(101)+1; for i:=1 to n do write(a[i],' '); writeln; max:=a[1]; min:=a[1]; for i:=1 to n do begin if a[i]>max then begin max:=a[i]; e:=i;end; if a[i] end; writeln('Элемент №',e,' - максимальный, он равен = ',max); writeln('Элемент №',y,' - минимальный, он равен = ',min); end. Задание 4. Составьте программу, в которой меняются местами максимальный и минимальный элементы. program primer4; var A: array[1..10] of integer; i,p,m,m1,p1: integer; begin randomize; p:=1; for i := 1 to 10 do begin A[i] := random(100)-50; write (a[i]:3); if a[i]>p then begin p:=A[i]; m:=i; end; if a[i] then begin p1:=A[i]; m1:=i; end; end; writeln; A[m]:=p1; A[m1]:=p; for i := 1 to 10 do write (a[i]:3); readln; end. Задание 5. Установите правильный порядок команд в программе, и определите, что в ней вычисляется. Program Example8; Uses crt; Var a, b:array[1..100] of integer; i, n, k: integer; Begin Write('n='); Readln(n); k:= 0; for i:= 1 to n do Begin Write('a[', i, ']='); Readln(a[i]); End; for i:=1 to n do if a[i] < 0 then Begin k:= k+1; b[k]:= i; End; for i:= 1 to k do Write(b[i]:4); Readkey End. Кол-во отрицательных элементов и их индексы заносятся в новый массив. Задание 6. Определите, что выполняется в программе. Program Example9; Uses crt; Var a: array[1..100] of integer; i, j, n, m:integer; Begin Clrscr; Write('n='); Readln(n); for i:= 1 to n do Begin Write('a[', i, ']='); Readln(a[i]); End; for j:= 1 to n-1 do for i:= 1 to n-j do Begin if a[i] < a[i+1] then Begin m:= a[i]; a[i]:= a[i+1]; a[i+1]:= m; End; End; for i:= 1 to n do Write(a[i]:5); End. Вывод одномерного массива в порядке убывания значений его элементов. Задание 7. Составить программу, которая преобразует одномерный массив таким образом, чтобы сначала шли отрицательные, затем нулевые и положительные элементы. Program primer7; Var a: array[1..100] of integer; i, n:integer; Begin Write('n='); Readln(n); for i:= 1 to n do Begin Write('a[',i,']='); Readln(a[i]); End; for i:= 1 to n do begin if a[i] < 0 then write(' ',a[i]); end; for i:= 1 to n do begin if a[i] = 0 then write(' ',a[i]); end; for i:= 1 to n do begin if a[i] > 0 then write(' ',a[i]); end; readln; End. Лабораторная работа № 8. ФайлыЗадание 1. Определите, что выполняется в программе. В фигурных скобках укажите назначение команд. Program Example15; Uses crt; Var f: text; st: string; Begin Assign(f, 'C:\Example.txt'); {устанавливает связь между переменной и физическим файлом на диске} Rewrite(f); { запись в файл } Writeln('Введитетекст '); Read(st); Write(f, st); { запись в файл f строку st } Close(f); { закрыть файл } End. Задание 2. Определите, что выполняется в программе и для чего предназначена команда Append? Program Example16; Uses crt; Var f: text; i, n, x: integer; Begin Assign(f, 'C:\Example.txt'); Append(f); {открыть файл и добавить в конец} Writeln('Введите количество чисел'); Readln(n); Writeln('Введите числа'); for i:= 1 to n do Begin Readln(x); Write(f, x:4); End; Close(f); End. Задание 3. Определите, что выполняется в программе. В фигурных скобках запишите назначение команд. Program Example17; Uses crt; Var f: text; st: string; Begin Clrscr; Assign(f, 'C:\Example.txt'); Reset(f); { открыть файл для чтения } While not EOF(f) do { пока не конец файла f } Begin Readln(f, st); { читать строку из файла f } Writeln(st); { вывод строки на экран } End; Close(f); Readln End. Задание 4. Разработайте программу, которая создает файл date.txt и записывает в него n случайных чисел в диапазоне от 5 до 30. Program zadanie; Var f: text; n,i:integer; a:array[1..100] of integer; Begin Assign(f, 'C:\PABCWork.NET\date.txt'); Rewrite(f); write('введите n= '); readln(n); for i:= 1 to n do begin a[i]:= 5+random(25); Writeln(f, a[i]); end; Close(f); end. Задание 5. Разработайте программу, которая считывает информацию из файла date.txt, находит максимальное число и общую сумму. Результат запишите в файл result.txt. Program program; Uses CRT; Var f,z: Text; a,max,S: integer; Begin CLRSCR; Assign(f, 'C:\PABCWork.NET\date.txt'); Reset(f); Assign(z,' C:\PABCWork.NET\result.txt'); Rewrite(z); max:=a; Close(f); Assign(f, 'C:\PABCWork.NET\date.txt'); Reset(f); While not eof(f) do Begin ReadLn(f,a); if a>max then max:=a; Inc(S,a); End; Write(z,'Сумма: ',S,' Максимальное число: ',max); WriteLn('Сумма: ',S,' Максимальное число: ',max); Close(f); Close(z); ReadLn; End. Лабораторная работа № 9. ЗаписиЗадание 1. Наберите текст программы и познакомьтесь с типом данных Record. Определите, что выполняется в программе. Program Example18; Type STR= Record Fam: string; B1, B2, B3, B4, B5: 2..5; SB: real; End; Var Tbl: array[1..50] of str; i,n: integer; Begin Write('n='); Readln(n); For i:=1 to n do Begin Write('FIO:'); Readln (Tbl[i].FAM); Write('Ozenki: ');Readln(Tbl[i].B1, Tbl[i].B2,Tbl[i].B3, Tbl[i].B4, Tbl[i].B5); End; Writeln('Sredniy ball'); For i:=1 to n do Begin Tbl[i].SB:=(Tbl[i].B1+Tbl[i].B2+Tbl[i].B3+ Tbl[i].B4+Tbl[i].B5)/5; Writeln(Tbl[i].FAM,' – ', Tbl[i].SB:5:2); End; End. Средний балл студентов В программе содержится много повторяющихся данных. Для её упрощения воспользуйтесь оператором присоединения With. For i:= 1 to n do Begin With Tbl[i] do Begin Write('FIO:'); Readln (FAM); Write('Ozenki: '); Readln(B1, B2, B3, B4, B5); End; End; Writeln('Sredniy ball'); For i:= 1 to n do Begin With Tbl[i] do Begin SB:= (B1+B2+B3+B4+B5)/5; Writeln(FAM,' – ',SB:5:2); End; End; Задание 2. Доработайте программу, чтобы данные о студентах и их средние баллы записывались в файл. type STR = Record Fam: string; B1, B2, B3, B4, B5: 2..5; SB: real; End; var Tbl: array[1..50] of str; i, n: integer; k: text; begin assign(k, 'D:\sredniy ball.txt'); rewrite(k); Write('n='); Readln(n); for i := 1 to n do with Tbl[i] do begin Write('FIO:'); Readln(FAM); Write('Ozenki: '); Readln(B1, B2, B3, B4, B5); end; Writeln('Sredniy ball'); for i := 1 to n do begin with Tbl[i] do begin SB := (B1 + B2 + B3 + B4 + B5) / 5; writeln(FAM, ' – ', SB:5:2); Write(k, FAM, ' – ', SB:5:2); end; end; close(k); end. Лабораторная работа № 10. ПодпрограммыЗадание 1. Исправьте ошибки в программе. Function V(R, H: real): real; Begin V:= pi*sqr(R)*H; End; Var x,a,b: real; Begin a:= V(3,4); b:= V(2,4); Writeln('V1=', a); Writeln('V2=', b); x:= a - b; Writeln('V1 – V2=', x:4:1); End. Задание 2. Посмотрите пример функции вычисляющей факториал числа. В основной программе посчитайте выражение y = (m! + k!)/s! var m,k,s:integer; y:real; Function factorial(n: byte): longint; Begin if (n = 0) or (n = 1) then factorial:= 1 else factorial:= n * factorial(n - 1); End; begin readln(m ,k ,s); m:=factorial(m); k:=factorial(k); s:=factorial(s); y:= (m + k)/s; writeln('y= ',y); end. Задание 3. Составьте функцию, вычисляющую логарифм с произвольным основанием logab. var a,b,logarifm:real; begin writeln('введите основание'); readln(b); writeln('введите показатель логарифма'); readln(a); logarifm:=ln(a)/ln(b); writeln('log=',logarifm); end. Задание 4. Составьте функцию для вычисления площади кольца. Рис. . Кольцо var r1, r2: integer; s: real; Function ploshad(r1, r2: integer) : real; Begin ploshad:= pi*(r1*r1-r2*r2) End; begin writeln('Введите внешний радиус кольца'); readln(r1); writeln('Введите внутренний радиус кольца'); readln(r2); s:=ploshad(r1, r2); writeln('Площадь кольца равна', s); readln; end. Задание 5. Наберите код программы и посмотрите пример использования процедуры Color. Program Example20; Uses Crt; Procedure Color(x, y: word); Begin TextColor(x); TextBackGround(y); End; Begin Color(1,5); Write('Hello '); Color(1,3); Writeln('student!'); Readln; End. Задание 6. Доработайте программу, чтобы цвет фона и цвет текста вводились пользователем при запуске программы. program ptimer6; Uses Crt; Procedure Color(x, y: word); Begin TextColor(x); TextBackGround(y); End; var n,m,k,p:byte; Begin read(n,m); read(k,p); Color(n,m); Write('Hello '); Color(k,p); Writeln('student!'); Readln; End. Библиографический список
Учебное электронное текстовое издание Паклина Валентина Михайловна Паклина Елена Михайловна Основы алгоритмизации и программирования Редактор Подготовка к публикации Рекомендовано Методическим советом Разрешено к публикации Электронный формат – pdf Объем уч.-изд. л. ![]() 620002, Екатеринбург, ул. Мира, 19 Информационный портал УрФУ http://www.ustu.ru0> |