Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
супер пупер.doc
Скачиваний:
14
Добавлен:
15.09.2019
Размер:
604.67 Кб
Скачать

Задачи повышенной сложности

  1. В счете указано: название игрушки, стоимость в копейках, возрастные границы. Получить следующие сведения: 1) название игрушек, цена которых не превышает 4 руб. и которые подходят детям до пяти лет; 2) цену самого дорогого конструктора; 3) названия наиболее дорогих игрушек, цена которых отличается от цены самой дорогой игрушки не более, чем на 1 руб.; 4) название игрушек, которые подходят как детям 4 лет, так и детям 10 лет; 5) можно ли подобрать игрушку, любую, кроме мяча, подходящую ребенку 3 лет, и дополнительно мяч так, чтобы стоимость игрушек не превосходила 5 руб.

  2. Хранятся сведения о лесе: вид дерева, общая численность, численность здоровых деревьев. Составить программу вычисления: 1) суммарного числа деревьев на контрольном участке; 2) суммарного числа здоровых деревьев; 3) относительную численность (%) больных деревьев; 4) относительную численность (%) различных видов, в том числе больных (%) для каждого вида.

  3. Написать программу вычисления длин сторон, углов, площади, радиусов вписанной и описанной окружностей для треугольника, заданного координатами вершин на плоскости в декартовых или полярных координатах. Использовать структуру данных запись с вариантами.

  4. Дана дата (число, месяц, год и день недели). Определить правильность заданной даты, вычислить последний день данного месяца, сколько дней прошло от 1-го января 1-го года нашей эры, определить день недели, приходящийся на заданную дату, если 1-е января 1-го года нашей эры было понедельником.

  5. Разработать программу вычисления длин сторон, углов, площади, радиусов вписанной и описанной окружностей для треугольника, заданного координатами вершин: на плоскости в декартовых или полярных координатах.

  6. Написать программу, осуществляющую приведение подобных членов многочлена с использованием структуры данных запись.

Лабораторная работа 8 Программирование с использованием процедур и функций

Теоретический материал

Справочник по процедурам и функциям

Цель работы: познакомиться с понятиями "процедура" и "функция" в языке программирования Pascal, рассмотреть их сходства и различия, закрепить практические навыки работы с системой TURBO Pascal на примере реализации алгоритмов при помощи процедур и функций, научиться применять метод последовательной детализации в практическом программировании; применять процедуры и функции при решении задач.

Общие сведения

Часто в программе обнаруживаются однотипные участки, которые выполняют одни и те же вычисления, но с различными данными. Такие части программы целесообразно оформлять в виде подпрограмм. В языке Pascal существует два вида подпрограмм: процедуры и функции.

Перед выполнением данной работы необходимо изучить правила описания процедур и функций, механизм передачи параметров, ознакомиться с понятием локальной и глобальной переменной.

Контрольные вопросы

  1. Для чего нужны в программе процедуры и функции?

  2. В чем отличие между процедурой и функцией?

  3. Чем отличаются формальные и фактические параметры?

  4. Чем отличаются параметры-значения и параметры-переменные?

  5. Как объявляются глобальные и локальные переменные? Каково правило видимости этих переменных?

  6. Почему при обращении к процедуре, аргумент, передаваемый параметру-переменной, может быть только переменной, а не константой или выражением?

Пример

Пример1. Найти сумму положительных элементов в массиве. Этапы решения задачи:

  1. Алгоритм решения довольно прост - в цикле будем "пробегать" массив, сравнивая его ячейки с 0 и суммировать, если они >0.

  2. Составим блок-схему программы

Уточним из каких блоков состоит блок"Суммирование положительных ячеек"

Содержание этих блоков простое, поэтому не стоит их уточнять.

  1. Напишем программу на языке Паскаль

program example;

type

Tarray = array[1..100] of integer;

Var v: Tarray;

N,i,s:integer;

Procedure vvod_data(var m:Tarray;n:integer);

Var i:integer;

Begin

Writeln('Введите ',n,' чисел через пробел');

For i:= 1 to n do read(m[i]);

End;

Function summ(m:TArray):integer;

Var s:integer;

Begin

S:=0;

For i:= 1 to n do if m[i]>0 then s:= s+m[i];

Summ:=s;

End;

begin

write('Введите размерность массива N= '); readln(n);

vvod_Data(v,n);

s:= summ(v);

writeln('Сумма= ',s);

end.