Главная страница

Методические указания к лабораторным работам по дисциплине Информатика для студентов всех направлений всех форм обучения


Скачать 131.73 Kb.
НазваниеМетодические указания к лабораторным работам по дисциплине Информатика для студентов всех направлений всех форм обучения
АнкорLaboratornye_raboty_Pascal.docx
Дата03.07.2018
Размер131.73 Kb.
Формат файлаdocx
Имя файлаLaboratornye_raboty_Pascal.docx
ТипМетодические указания
#20984


Министерство образования

и науки Российской Федерации




В. М. Паклина, Е. М. Паклина

Методические указания к лабораторным работам по дисциплине «Информатика» для студентов всех направлений всех форм обучения
Научный редактор: доц., канд. техн. наук И. Н. Обабков
Подготовлено кафедрой

интеллектуальных информационных технологий

Методические указания содержат лабораторные работы по линейным алгортмам, ветвлениям, циклам. Рассматриваются подпрограммы и структурированные типы данных: массивы, множества, строки, записи и файлы.


Екатеринбург

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

01

Задание 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.

02

Задание 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]then begin min:=a[i]; y:=i;end;

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.

Библиографический список


  1. Златопольский Д. М. Программирование: типовые задачи, алгоритмы, методы / Д. М. Златопольский. – Москва: БИНОМ. Лаборатория знаний, 2007. – 223

  2. Информатика: Учебник / Б. В. Соболь, А. Б. Галин, Ю. В. Панов,
    Е. В. Рашидова, Н. Н. Садовой. – Изд. 3-е, дополн. и перераб. – Ростов н/Д: Феникс, 2007. – 446 с.

  3. Окулов С. М. Основы программирования: учебник / С. М. Окулов. – Изд.
    5-е, испр. – Москва: БИНОМ. Лаборатория знаний, 2010. – 440 с.

  4. Потопахин В. В. Современное программирование с нуля!: учеб. пособие / Потопахин В. – Изд. 2-е, испр. – Москва: ДМК-Пресс, 2011. – 240 с.

  5. Рапаков Г. Г. Turbo Pascal для студентов и школьников: учебник /
    Г. Г. Рапаков, С. Ю. Ржеуцкая. – Санкт-Петербург: БХВ-Петербург, 2007. – 352 с.

  6. Фаронов В. В. Turbo Pascal 7.0. Практика программирования: учеб.
    пособие / В. В. Фаронов. – Москва: Кнорус, 2007. – 416 с.

Учебное электронное текстовое издание


Паклина Валентина Михайловна

Паклина Елена Михайловна


Основы алгоритмизации и программирования


Редактор

Подготовка к публикации

Рекомендовано Методическим советом

Разрешено к публикации

Электронный формат – pdf

Объем уч.-изд. л.



620002, Екатеринбург, ул. Мира, 19

Информационный портал УрФУ

http://www.ustu.ru


написать администратору сайта