Основные конструкции языка Паскаль

Конструктор ветвлений в языке программирования. Особенности цикла с автоувеличением и автоуменьшением. Использование операции конкатенации в стринговых выражениях. Анализ линейного однонаправленного списка последовательности однородных элементов данных.

Рубрика Программирование, компьютеры и кибернетика
Вид методичка
Язык русский
Дата добавления 10.06.2014
Размер файла 90,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования и науки Российской Федерации

Дальневосточный федеральный университет

Программирование

Методические указания для специальности 080500.62

«Бизнес информатика»

Л.И. ПРУДНИКОВА

Владивосток - 2012

УДК 681.3

Т 46

Программирование: метод. указания/ сост. Л.И. Прудникова - Владивосток: Изд-во ДВФУ, 2012. - 24 с.

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

© Изд-во ДВФУ, 2012

Программирование

Методические указания

Составитель Лариса Ивановна Прудникова

Печатается по оригинал-макету, подготовленному автором, минуя редподготовку.

Подписано в печать xx.xx.12

Формат 60х84 /16. Усл. печ. л.1.25. Уч.-изд. л. x,x.

Тираж 100 экз.Заказ №

Издательство

Дальневосточного федерального университета

Участок оперативной полиграфии

690950, Владивосток, Океанский проспект, 19.

Оглавление

1. Ветвление

2. Циклы

3. Строки

4. Подпрограммы

5. Структуры

6. Списки

Литература

1. Ветвление

В языках программирования есть конструкторы, которые позволяют из линейных последовательностей утверждений группировать составные утверждения. Семантика конструкторов типовая - в зависимости от условия составному утверждению передается управление или нет при выполнении программы. Подчеркнем, что это не оператор языка программирования в том смысле, что он непосредственно оперирует с данными, это оператор над утверждениями. В любом языке программирования присутствует конструктор ветвлений. Его семантика не зависит от синтаксиса, так в Паскале - это:

IF условие

THEN оператор

ELSE оператор - для полного конструктора ветвлений и

IF условие

THEN оператор - для неполного конструктора ветвлений.

Если ветви THEN и ELSE содержат более одного указания, то указания заключаются в скобки BEGIN и END. Если после ELSE нужно расположить группу операторов, выполняемых тогда и только тогда, когда условие ложно, то ее заключают в операторные скобки BEGIN и END.

Отсутствие скобок не считается синтаксической ошибкой, это - семантическая ошибка.

Пример:

Дано квадратное уравнение: требуется найти его корни.

Решение:

Programm examp1;

Var a,b,c,x1,x2,d:real;

Begin

Writln(`Введите a,b,c');

Readln(a,b,c);

If(a=0)and(b=0)and(c=0)then writln(`Любое решение')

Else

If(a=0)and (b=0)and(c<>0)then

Writeln(`нет решения')

Else

If(a=0)and (b<>0)and(c=0)then

Writeln(`x1=0 ')

Else

If(a=0)and (b<>0)and(c<>0) then

Writeln(`x1=-c/b')

Else

If(a=0) then

Begin

D:=b*b-4*a*c;

If d<0 then writeln(`Действительных корней нет')

Else

If d=0 then

Writeln(`x1=',-b/(2*a))

Else

Writeln(`x1=',(-b-sgrt(d))/(2*a),`x1=',(-b+sgrt(d))/(2*a));

End.

ВАРИАНТЫ:

1. Если сумма трех попарно различных действительных чисел x, y, z меньше 1, то наименьшее из этих трех чисел заменить полусуммой двух других; в противном случае заменить меньшее из x и y полусуммой двух оставшихся значений.

2. Даны действительные числа a, b, c, d. Если a?b?c?d, то каждое число заменить наибольшим из них, если a>b>c, то числа оставить без изменения; в противном случае все числа заменить их квадратами.

3. Даны действительные числа x, y. Если x и y отрицательны, то каждое значение заменить его модулем; если отрицательно только одно из них, то оба значения увеличить на 0.5; если оба значения неотрицательны и ни одно из них не принадлежит отрезку [0.5, 2.0] то оба значения уменьшить в 10 раз; в остальных случаях x и y оставить без изменения.

4. Дано действительное число h. Выяснить, имеет ли уравнение ax2+bx+c=0 действительные корни, если

a= b=1- c=ah2sin(bh)+bh3cos(ah).

Если нет корней, сообщите об этом.

5. Даны действительные числа x1, x2, x3, y1, y2, y3. Принадлежит ли начало координат треугольнику с вершинами (x1, y1), (x2, y2), (x3, y3)?

6. Даны действительные положительные числа a, b, c, x, y. Выяснить, пройдет ли кирпич в прямоугольное отверстие со сторонами x и y. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон.

7.Даны действительные положительные числа a, b, c, d. Выяснить, можно ли прямоугольник со сторонами a, b уместить внутри прямоугольника со сторонами c, d так, чтобы каждая из сторон одного прямоугольника была параллельна или перпендикулярна каждой стороне второго прямоугольника.

8.Даны натуральные a1, …, an, n. Определить количество членов ak последовательности a1, …, an :

а) являющихся нечетными числами;

б) кратных трем и не кратные 5;

в) являющихся квадратами четных чисел;

г) удовлетворяющих условию ;

д)имеющие четные порядковые номера и являющихся нечетными числами.

9.Даны действительные положительные числа x, y, z:

а) выяснить, существует ли треугольник со сторонами x, y, z;

б)если треугольник существует, то ответить - является ли он остроугольным.

10. Даны действительные числа a1, b1, c1, a2, b2, c2. Выяснить, верно ли, что

¦ a1b2 - a2b1 ¦? 0.0001, и если верно, то найти решение системы линейных уравнений: a1 x + b1 y + c1 = 0

a2x + b2 y + c2 = 0

(при выполнении выписанного неравенства система заведомо совместна и имеет единственное решение).

11. Даны действительные числа a, b, c (a?0). Полностью исследовать биквадратное уравнение ax4 + bx2 + c = 0, т. е. если действительных корней нет, то должно быть выдано сообщение об этом, иначе должны быть выданы два или четыре корня.

12.Даны действительные числа x, y, z. Вычислить:

а) max(x + y +z, xyz);

б) min2((x + y +z )/2, xyz) + 1.

13.Даны координаты четырех попарно различных точек плоскости. Найти ту из них, которая

а) ближе других к началу координат;

б) дальше других от начала координат.

14. Заданы целые a1, b1, c1, a2, b2, c2 отличные от нуля. Определить, существуют ли какие-нибудь вещественные x, y , для которых

a1 x + b1 y + c1 ? 0

a2x + b2 y + c2 ? 0

2. Циклы

Конструктор цикла for - двух видов с автоувеличением и автоуменьшением. Рассмотрим сначала цикл с автоувеличением:

FOR <переменная цикла> := <выражение1> to <выражение2> do

оператор;

Тип переменной цикла и выражений должен быть ординальный. Переменная цикла должна быть объявлена в том же блоке, где появляется и сам оператор for. Тело цикла - оператор не должен изменять значение переменной цикла . Если оператор - тело цикла - содержит другой цикл, то в последнем запрещено использовать переменную цикла внешнего как переменную цикла внутреннего. Значения выражения1 и выражения2 вычисляются только один раз - перед входом в цикл.

Семантика оператора:

Вычисляются выражение1 и выражение2;

Если значение выражения1>выражения2, то тело цикла не выполняется, считается , что цикл работу закончил;

Иначе, если значение выражения1<=значения выражения2, то

переменная _цикла:= выражение1;

выполняется тело цикла;

переменная_цикла:=SUCC(переменная-цикла);

Если переменная_цикла не равна выражению2 то повторение 3.2,3.3,3.4;

Иначе выполнить тело цикла и цикл завершает свою работу.

Значение переменной по выходу из цикла не определено.

Перейдем к рассмотрению конструктора for с автоуменьшением:

FOR переменная_цикла:= выражение1 DOWNTO выражение2 DO оператор.

Ограничения те же, что и в цикле с автоувеличением.

Где применяются конструкторы цикла for? В тех задачах, где число повторений выполнения тела цикла заранее известно. Такие циклы называются арифметическими.

Пример:

Вычислить и напечатать первые 100 чисел Фибоначчи - 0,1,1,2,3,5, ... , где

F0=0, F1=1, FN+2=FN+1 + FN - числа Фибоначчи.

Решение:

Program examp2(input, output);

var

i: integer;

FN,FN1,FN2;

N: integer;

begin

readln(N);

if (N>=0) and (N<=100) then

begin

FN:=0; FN1:=1;

for i:=2 to n do

begin

FN2:=FN1 + FN;

writeln(output, `числа', I:2,'число',FN2:4);

end;

end

else

writeln(`неправильно указано количество');

end.

ВАРИАНТЫ:

1. Дано натуральное число n, действительное число x:

, (1)

2. Дано натуральное число n. Получить

, (2)

Где

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

6=1+2+3

8? 1+2+4.

Дано натуральное число n. Получить все совершенные числа, меньше n.

4. Даны натуральные числа a, b (a?b). Получить все простые числа p, удовлетворяющие неравенствам : b ?p?a.

5. Даны целые числа m, a1, … , a20 . Найти три натуральных числа i, j, k, каждое из которых не превосходит двадцати, такие, что ai + aj +ak =m. Если таких чисел нет, то сообщить об этом.

6. Даны целые числа a1, … , a30. Пусть M - наибольшее, а m - наименьшее из a1, … , a30. Получить в порядке возрастания все целые из интервала (M, m), которые не входят в последовательность a1, … , a30 .

7. Даны натуральные числа m, n1, … , nm (m?2). Вычислить НОД(n1, … , nm) , воспользовавшись для этого соотношением НОД(n1, … , nm) =НОД (НОД(n1, … , nk-1) , nk), (k=3, … , m) и алгоритм Евклида.

8. Таблица футбольного чемпионата, в котором участвовало n команд, задана своей верхней правой частью в виде последовательности чисел 0,1 и 2.

Построить таблицу целиком:

а) найти число команд, имеющих больше побед, чем поражений;

б) определить номера команд, прошедших чемпионат без поражений;

в) выяснить имеется ли хотябы одна команда, выигравшая более половины игр.

9. У прилавка в магазине выстроилась очередь из n покупателей. Время обслуживания продавцом i-го покупателя равно ti , (i=1, … , n). Пусть даны натуральное n и действительные t1, … , tn. Получить c1, … , cn, где ci - время пребывания i-го покупателя в очереди (i=1, … , n). Указать номер покупателя, для обслуживания которого продавцу потребовалось самое малое время.

10. Найти сумму цифр заданного натурального числа.

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

12. Даны действительные числа a1, … , an . Найти самый длинный отрезок данной последовательности.

13. Определить, является ли заданная целая квадратная матрица 9 - го порядка магическим квадратом, т. е. такой, в котором суммы элементов во всех строках и столбцах одинаковы.

14. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик.

3. Строки

В диалектах Паскаля введен тип string, который называют стринговым.

Пример:

VAR

Name : string [20];

Память, отведенная для хранения значения переменной Name, составляет 21 байт, 1 байт содержит текущую длину строки. В каждом байте хранится одна литера. Каждая литера представляет собой значение типа char.

В стринговых выражениях используется операция конкатенации (слияния), которая обозначается знаком “+”.

Name:= `строка';

Name := Name + `пять';

Пример:

Написать программу, которая читает строку символов не более 80 и определяет частоту вхождения в строку каждой буквы латинского алфавита от “a” до “i”.

Решение:

Program examp3;

TYPE

arcout = array [char] of integer;

VAR

symb: char;{читаемый и анализируемый элемент }

count: arcount;

str :string [80] ; { строка}

i, j : integer;

BEGIN

for symb := chr(0) to chr(255) do

count [symb] := 0; {обнулить массив счетчиков }

i:= 0;

repeat

i:= i + 1; read( input, str[i]);

count[str[i]] := count[str[i]] + 1;

until ( not( (i<80) and ( ord(str[i]) <>255 );

writeln( output, `в этой строке');

for j := 1 to i do

write(output, str[j]);

writeln(output, `символ встречается' );

for symb := `a' to `i' do

write(output, `', symb, `', count[symb]:10);

END.

ВАРИАНТЫ:

1. Дана последовательность литер длины не более N (N- const). Последовательность содержит латинские буквы, пробелы, знаки препинания (запятую, точку с запятой, двоеточие, круглые скобки) и заканчивается точкой. Слова - это серия букв, отделенные друг от друга в данной последовательности пробелами и знаками препинания. Известно, что каждое слово содержит не более K - литер, а слов в последовательности не более M (K и M -const). Для данной последовательности построить:

а) словарь, содержащий все слова текста (словарь представить литерной

матрицей размера MЧK);

б) словарь, содержащий все различные слова текста;

в) лексикографически упорядоченный словарь, содержащий все различные слова текста;

г)10 самых частых слов (с упорядочениванием по невозрастанию числа вхождений и количество вхождений каждого из них в последовательность).

2. Дана последовательность литер длины не более N (N- const). Последовательность содержит латинские буквы, пробелы, знаки препинания (запятую, точку с запятой, двоеточие, круглые скобки), цифры и заканчивается точкой. Запись числа - это такая серия цифр, которая ограничивается литерами , не являющимися цифрами. Считая, что записью числа представлено десятичное натуральное число, а чисел в данной последовательности не может быть больше P.

Найти:

а) значение максимального числа последовательности;

б) значения всех чисел последовательности;

в) значения всех различных чисел последовательности;

г) упорядоченный по возрастанию список всех различных чисел.

3. Преобразовать выражение (т. е. текст специального вида), составленное из цифр и знаков четырех арифметических операций (+, -, *, /) в постфиксную форму. В постфиксной форме сначала записываются операнды, а затем знак операции

3 + 4 3 4 +

(5 - 4) + 2 5 4 - 2 +

2*(3+4)*5 2 3 4 +*5*

4. Дано натуральное число n, равное выраженной в копейках цене некоторого товара, например - 317, 5005, 100 и т. д. Выразить цену в рублях и копейках. Например:

3 руб 17 коп, 50 руб 05 коп, 1 руб 00 коп и т. д.

(число копеек записывается всегда двумя цифрами).

5. Дано натуральное число n (n ?100). Записать это число русскими словами (семнадцать, двести пятьдесят три, тысяча и т. д.).

6. Шахматную доску будем представлять символьной матрицей 8 Ч8. Даны натуральные числа n и m( 1?n?8,1?m?8) - номера вертикали и горизонтали, определяющие местоположение ферзя. Соответствующий элемент матрицы надо положить равным символу F. Поля находящиеся под угрозой ферзя, надо положить равным символу *, а остальные поля 0.

7. Шахматную доску будем представлять символьной матрицей 8 Ч8. Даны натуральные числа n и m( 1?n?8,1?m?8) - номера вертикали и горизонтали, определяющие местоположение коня. Соответствующий элемент матрицы надо положить равным символу K. Поля находящиеся под угрозой коня, надо положить равным символу *, а остальные поля 0.

8. Даны натуральное число n, символ s (n ?1000, s - одна из букв и, р, д, в, т, п , указывающая падеж - именительный, родительный, дательный, винительный, творительный, предложный). Записать количественное числительное, обозначающее n, в соответствующем падеже.

9.Один из простейших способов шифровки текста состоит в табличной замене каждого символа другим символом - его шифром. Выбрать некоторую таблицу, разработать способ ее представления . Затем

а) зашифровать данный текст;

б) расшифровать данный текст.

10. Дан текст из заглавных латинских букв, за которым следует пробел. Определить, является ли этот текст правильной записью римскими цифрами целого числа от 1 до 999, и если является, то напечатать это число арабскими цифрами.

11. Напечатать таблицу умножения в шестнадцатеричной системе счисления.

12. Заданное целое число от 1 до 1999 напечатать римскими цифрами.

13. Составит программу для обучения устному счету. На каждом шаге должны предлагаться числа и арифметические действия, которые следует выполнить над этими числами.

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

15. Дана таблица содержащая сведения об одежде : тип одежды (пальто, платье, костюм), цвет (черный, серый, коричневый, пестрый), размер (36-52) и цена (рубли и копейки).

а) найти количество и общую стоимость пестрых платьев размера 46.

б) упорядочить сведения по возрастанию размера.

4. Подпрограммы

Решение каждой задачи (подзадачи) можно оформить в виде подпрограмм. Подпрограмма - часть программы, один раз написанная, но выполняемая в программе один и более раз.

Процедура:

procedure<имя_процедуры>(<список_формальных_параметров>);

<блок>;

Пример: Написать процедуру возведения переменной в квадрат.

Решение:

procedure D ( x: real; Var y: real);{y возвращается по ссылке}

begin

y:= x * x;

end;

Функция:

function<имя_функции>[(<список_формальных_параметров>)] :тип; <блок>;

Пример: Написать функцию, вычисляющую минимум из двух чисел.

Решение:

function min (x, y : real) : real;

begin

if x> y then min:= x else min:= y;

end;

В теле функции обязательно должен присутствовать хотя бы один оператор присваивания вида: <имя_функции> := <выражение>;

ВАРИАНТЫ:

1. Даны действительные числа x1,y1, x2,y2, … , x6 ,y6 . Точки с координатами (x1,y1), (x2,y2 ), (x3 ,y3 ) - рассматриваются как вершины первого прямоугольного треугольника. Точки с координатами (x4,y4), (x5,y5 ), (x6 ,y6 ) - второго треугольника. Выяснить , лежит ли какой-либо из треугольников целиком внутри другого. Если да, построить стороны треугольников и закрасить область, принадлежащую внешнему треугольнику и не принадлежащая внутреннему треугольнику.

Размещено на http://www.allbest.ru/

Рис.1

Построение сторон и закраску области выполнить одним цветом. Если ни один из треугольников не лежит целиком внутри другого, построить стороны треугольников используя для каждого свой цвет. Определить процедуру, позволяющую выяснить, лежат ли две точки в одной полуплоскости относительно заданной прямой и процедуру построения сторон треугольника по заданным вершинам и номеру цвета.

2. Даны квадратные матрицы A и B порядка n. Получить матрицу AB- BA. ветвление программирование конкатенация

3. Методом Симпсона получить значение функции Ц(x) в точках 0, 0.1, 0.2, … , 1 Ц(x) =

Для вычисления интеграла используется приближенная формула - формула Симпсона.

, (3)

где,

, (4)

, (5)

, (6)

, (7)

, (8)

, (9)

четное, - задано. В программе предусмотреть подпрограмму функцию для вычисления подинтегральной функции и подпрограмму для вычисления значения интеграла по формуле Симпсона.

4.Железнодорожный узел устроен следующим образом

Размещено на http://www.allbest.ru/

Рис.2

На правой стороне собрано некоторое число вагонов двух типов, обоих типов по n штук. Тупик может вмещать все 2n вагонов. Пользуясь тремя сортировочными операциями В, ИЗ, МИМО собрать вагоны на левой стороне, так чтобы типы чередовались.

5.Программа выбирает с помощью датчика случайных чисел четырехзначное число с разными цифрами. Задача - угадать это число. На каждом шаге играющий называет четырехзначное число , а программа сообщает цифр числа угадано (быки) и сколько цифр угадано и стоит на нужном местах (коровы). Например, если программой задано число 1294, а играющий назвал 1423, он получит ответ « 1 корова и 3 быка».

6.Вычислить производную функции в точках по формулам численного дифференцирования:

где функция задана таблично.

7.Построить две матрицы:

, (10)

где,

, (11)

, (12)

Проверить является ли произведение этих матриц перестановочным, т. е. BA =AB. Найти минимальный элемент в матрице A и в матрице B.

8.Дана матрица A размерности . Получить матрицу B по правилу

. Получить след матрицы С, являющейся третьей степенью матрицы В.

9.Вычислить определитель заданной матрицы, пользуясь формулой разложения по первой строке

, где матрица получается из А вычеркиванием первой строки и k-го столбца (рекурсия).

10.Даны две вещественные матрицы размера NЧN. Найти матрицу, получающуся из исходных:

а)сложением матриц;

б)вычитанием матриц;

в)умножением матриц;

г)умножением элементов каждой строки первой матрицы на максимальный из элементов соответствующей строки второй матрицы.

11.Два натуральных числа называются «дружественными», если каждое из них равно сумме всех делителей другого, за исключением его самого(например 220 и 284). Напечатать все пары «дружественных» чисел, не превосходящих заданного натурального числа.

12.Составить процедуру «сжатия» исходной последовательности, состоящая из нескольких вхождений одного и того же символа, заменяется на текст x(k), где x символ, а k- число вхождений символа x в подстроку исходной последовательности.

13.Найти приближенное значение корня уравнения «методом секущих». Исходя из начальных приближений и . Очередное приближение корня определяется по формуле

, (13)

В качестве приближенного значения корня взять , для которого , где е<0 - заданное число. Сделать параметрами подпрограммы для , , .

14.Расстояние между k-ой и l-ой строками матрицы определяется как . Указать номер строки, максимально удаленной от первой строки заданной матрицы.

15.Дано четное число . Проверить для этого числа гипотезу Гольдбаха : что каждое четное n , большее двух, представляется в виде суммы двух простых чисел. . Определить процедуру, позволяющую распознать простые числа.

16.Методом «прямоугольников» вычислить

, (14)

где,

, (15)

, (16)

Сделать и - формальными параметрами для

, (17)

17.Составить процедуру вычисления значения целого числа по заданной строке символов, являющейся записью этого числа

а)в десятичной системе счисления;

б)в шестнадцатеричной системе счисления.

18.На шахматной доске стоят 8 ферзей, расположить их так, чтобы они не били друг друга (нарисовать).

19.Составить программу, содержащую функцию, которая дает номер строки матрицы, имеющей наименьшее число ненулевых элементов в четных позициях. Найти номера всех таких строк в двух заданных целочисленных матрицах размера 20Ч20.

20.Даны натуральные числа m и n, найти НОД( n, m). Использовать программу, включающую рекурсивную процедуру вычисления НОД, основанную на соотношении НОД ( n, m) =НОД (m, r), где r - остаток от деления n на m.

21.Написать программу, которая с помощью подпрограммы заменяет в исходной строке символов все единицы нулями и все нули единицами. Замена должна выполняться с заданной позиции строки.

5. Структуры

В природе есть объекты, которые имеют неоднородные свойства, и описать их однотипной матрицей невозможно.

Пример:

Анкета сотрудника:

порядковый номер N - число;

ФИО - фамилия - строка;

имя - строка;

отчество - строка;

3) дата рождения - день - число от 1 до 31,

месяц - число от 1 до 12,

год - число от 1920 до 2000;

пол - 0 или 1.

Анкета - сотрудник имеет иерархическую структуру.

Пример:

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

Решение:

Program <заголовок>

TYPE

NameType =string [ 30]; {тип 2-го уровня}

FioType = record {тип 1-го уровня }

fam: NameType;

nam: NameType;

otch: NameType

end;

DataType = record

day: integer;

month:integer;

year: integer

end;

AncetType = record {тип 0-го уровня }

number: integer;

fio: FioType;

data: DataType;

pol: boolean

end;

VAR

AncetOne : AncetType;

CodOper : 0 .. 1;

CodStep: 0 .. 1;

j: 1 .. 30;

BEGIN

CodOper := 1;

CodStep:=0;

read( input, AncetOne.number); {читать и проверять поле номер}

if( AncetOne. number >= -MAXINT) and ( AncetOne. number <= MAXINT)

then

CodStep:=1;

if CodStep = 0 then writeln(output, `номер не задан');

CodOper := CodOper * CodStep;

odStep:=1;{читать и проверять поля подтруктуры fio}

For j:=1 to30 do

Begin

read( input, AncetOne.fam[i], AncetOne.nam[i], AncetOne.otch[i]);

if(AncetOne.fam[i]<'a') or (AncetOne.fam[i]>'z') then CodStep:=1;

if(AncetOne.nam[i]<'a') or (AncetOne.nam[i]>'z') then CodStep:=1;

if(AncetOne.otch[i]<'a') or (AncetOne.otch[i]>'z') then CodStep:=1;

End;

if CodStep = 0 then writeln(output, `fio не задана');

CodOper := CodOper * CodStep;

CodStep:=0;{читать и проверять поля подтруктуры data}

read( input, AncetOne.day, AncetOne.month, AncetOne.year);

if(AncetOne.day>=1)and (AncetOne.day<=31) then CodStep:=1;

if(AncetOne.month>=1)and (AncetOne.month<=12) then CodStep:=1;

if(AncetOne.year>=1920) and (AncetOne.year<=2000) then CodStep:=1;

if CodStep = 0 then writeln(output, `data не задана');

CodOper := CodOper * CodStep ;

CodStep:= 0; {читать и проверять поле pol}

read( input, AncetOne.pol);

if( AncetOne.pol = 0) or ( AncetOne.pol = 1)

then

CodStep:=1;

if CodStep = 0 then writeln(output, `пол не задан');

CodOper := CodOper * CodStep;

f CodOper = 0 then writeln(output, `анкета не задана');

END.

ВАРИАНТЫ:

1. Имеется информация об учениках некоторого класса из n человек: фамилия, имя, возраст в годах, рост в см., успеваемость - округленный средний балл. Ученик называется среднестатистическим по k -му параметру (уникальным по k параметру), если на нем достигается минимум (максимум) модуля разности среднего арифметического чисел из k -го столбца и значения k -го параметра этого ученика. Ученик называется самым уникальным(самым средним), если он уникален (является среднестатистическим) по самому большому количеству параметров, определить учеников:

а) самых уникальных;

б) самых средних;

в) самых средних среди самых уникальных;

г) самых уникальных среди самых средних.

2. Во входном файле содержится информация об итогах зимней сессии на первом курсе. Сведения о каждом студенте-первокурснике (всего их 400) заданы в виде следующего текста: <фамилия>, <номер группы>, <оценка1>, <оценка2>, <оценка3>. Причем в фамилии не более 12 букв, номер группы целое от 101 до 116, каждая оценка - 2, 3, 4 или 5, причем первая оценка по матанализу, вторая - по алгебре, третья - по программированию. Написать программу, которая вводит эту информацию и печатает следующие данные:

а)фамилии студентов, имеющие задолжность хотя бы по одному предмету;

б) «качество успеваемости» % сдачи на 5 и 4;

в) название предмета, который был сдан лучше всего;

г) номера групп в порядке убывания средней успеваемости студентов

группы.

3. Во входном файле записана следующая информация о каждом из 2000 студентов некоторого вуза: <фамилия>, <имя>, <отчество>, <пол>,

<возраст>, <курс>, причем в фамилии, имени и отчестве не более 12 букв,

пол указывается буквами М и Ж, возраст - целое от 16 до 35, курс - целое

от 1 до 5. Написать программу, которая вводит эту информацию и печатает

следующие данные:

а) номер курса на котором наибольший процент мужчин;

б) самые распространенные мужские и женские имена;

в) фамилии(в алфавитном порядке ) и инициалы всех студенток, возраст и отчество которых являются одновременно самыми распространенными.

4.Информация о туристе стоит из фамилии, возраста и пола. Дана информация о группе , состоящей из 30 туристов. Найти :

а) количество мужчин;

б) средний возраст;

в) фамилию младшей из женщин.

5. Сведения об экспорте товара состоят из наименования товара, страны и количества экспорта в эту страну. Дан набор состоящий из 1000 таких сведений. Найти :

а) страны, в которые экспортировался данный товар, и общий

объем его экспорта;

б) упорядочить сведения о товарах лексикографически по первым

двум буквам наименования товара.

6. Сведения о междугородном телефонном разговоре состоят из даты , шифра города(3 цифры), продолжительности разговора(в минутах) и тарифа (плата за 1 минуту). Дан набор таких сведений. Найти:

а) город(а) с которым(и) в марте разговаривали больше всего;

б) упорядочить города по убыванию суммарной стоимости

разговора.

7. Информация о туристе состоит из фамилии, возраста и пола. Дана информация о 20 туристах. Найти:

а) максимальный возраст туриста;

б) фамилии самых старших;

в) подсчитать, кого больше - мужчин или женщин.

8. Сведения о веществе состоят из его названия, удельного веса и проводимости (проводник, полупроводник, изолятор). Дан набор состоящий из 100 таких сведений. Найти:

а) удельные веса и названия всех полупроводников;

б) выбрать сведения о проводниках и упорядочить их по убыванию удельных весов.

9. Информация о детали состоит из названия , веса экземпляра детали (в килограммах). Количество экземпляров, имеющихся на складе( в штуках) и статуса( заказана или нет). Дана информация о 20 деталях. Найти:

а) общее количество экземпляров деталей;

б) название детали, вес экземпляра которой наибольший.

10. Даны сведения о наличии продуктов с их названиями в магазинах. Найти:

а) множество продуктов, которые есть во всех магазинах;

б) множество продуктов, которых нет ни в одном магазине.

11. Информация о детали состоит из названия , веса экземпляра детали (в килограммах). Количество экземпляров, имеющихся на складе( в штуках) и статуса( заказана или нет). Дана информация о 300 деталях. Найти:

а) количество деталей весом от 10 до 50 кг;

б) названия и веса деталей, отсутствующих на складе.

12. Сведения о книге состоят из фамилии автора, названия и года издания. Дан набор, состоящий из 1000 таких сведений. Найти:

а) названия книг данного автора, изданные с 1960 по 1980г;

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

13. Сведения о проведении одного занятия состоят из вида занятия (практика, лекция), названия предмета и фамилии преподавателя. Дан набор, состоящий из 1000 таких сведений. Найти:

а) количество лекций, прочитанных данным преподавателем

по данному предмету;

б) фамилии преподавателей, не читающих лекции.

14.Сведения об автомобиле состоят из номера (четырехзначного), фамилии владельца и марки. Дан набор , состоящий из 1000 таких сведений. Найти:

а) номера и фамилии владельцев автомобилей данной марки;

б) количество автомобилей каждой марки.

15. Даны сведения о горожанах: фамилия, название телефонной компании, продолжительность разговора, стоимость одной минуты. Найти:

а) компанию, имеющую больше всех клиентов;

б) компанию, получившую наибольшую прибыль;

в) фамилию и номер телефона горожанина, имеющего самый продолжительный разговор.

16. Даны сведения о животных (коровах) : вес в кг, клички, фамилия

доярок, удой молока в литрах в день. Найти:

а) фамилию доярки, имеющую группу самых удойных животных;

б) кличку коровы - рекордистки;

в) кличку самого тяжелого животного.

17. Сведения о выдаче экземпляра журнала читателю состоят из названия журнала, номера и фамилии читателя. Дан набор, состоящий из 1000 таких сведений. Найти:

а) по заданному названию журнала выдававшиеся номера и фамилии бравших их читателей;

б)для каждого номера заданного журнала количество его выдач.

6. Списки

Линейным однонаправленным списком называют последовательность однородных элементов данных (a1, a2, ..., ak), в которой каждое ai указывает на следующий за ним элемент.

Пример:

Требуется создать список фамилий в алфавитном (заданном ) порядке.

Решение:

TYPE {предварительное описание типа}

TypePtrNode = ^TypeNode;

TypeNode = Record

fio: string [20];

next: TypePtrNode

End;

{Процедура включения фамилии в алфавитном (заданном ) порядке}

Procedure IncludeOrder (Var Head: TypePtrNode, fio: string[20]);

VAR {Head -указатель на начало списка}

pcurr, pleft, pright: TypePtrNode;

BEGIN

{так как включение выполняется, то выделим память заранее}

new( pcurr); pcurr^.fio:= fio;

pcurr^.next:= nil;

{Список может быть пуст , тогда его Head - nil}

if (Head = nil) then

begin

Head := pcurr; pcurr:= nil;

end

else

begin

if ( Head^.next = nil ) then {список состоит

из одного элемента}

begin

if ( fio>Head^.fio) then

{включить в конец}

Begin

head^.next:= pcurr; pcurr := nil;

end

else

Begin

pcurr^.next:= head; head:= pcurr;

pcurr:= nil;

end;

end

else

{в списке более одного элемента ; случай а : нужно включить элемент первым - похож на предыдущий вариант}

if ( fio <= head^.fio) then

Begin

pcurr^.next:= head;

head:= pcurr;

pcurr: = nil;

End

else

{просмотр списка в цикле}

pleft:= head; pright: = head^.next;

{известно, что включение или где то внутри, или где то в конце и left^.fio>fio}

while (pright<> nil ) do

Begin

if ( fio <= pright^.fio) then {включить}

Begin

pcurr^.next:= pleft^.next;

pleft^.next:= pcurr;

pcurr:= nil; pleft:= nil; pright := nil;

End;

pleft: =pleft^.next; pright:= pright^.next;

End;

{при выходе из цикла если pright = nil ,то нужно включить в конец цикла}

If pright=nil then pleft^.next:= pcurr; pcurr:= nil; pleft:= nil;

End;

ВАРИАНТЫ:

1. Информация о студенте состоит из его фамилии, возраста( число лет), пола и успеваемости ( оценки по пяти предметам). Ввести информацию о группе студентов, представляя ее в виде связанного одностороннего списка. Один элемент списка содержит информацию об одном студенте:

а) удалить из списка всех студентов, имеющих не менее трех двоек;

б) вычислить средний возраст студентов и средний возраст студенток.

2.Входная последовательность символов задает арифметическое выражение, содержащее бинарные операции +, *, круглые скобки и однобуквенные идентификаторы. Построить в виде связанной списочной структуры двоичное дерево, представляющее выражение, задаваемое входной последовательностью и затем преобразовать его «раскрытием скобок».

3. Для стека (магазина) символов, представленного списком, описать в виде функций и процедур операции «добавить», «удалить» и «получить» верхний элемент.

4. Входную последовательность разбить на отрезки длины 10 и представить в программе в виде одностороннего связанного списка с компонентами массивами символ длины 10 (последний массив при необходимости дополнить пробелами ). Подсчитать число созданных элементов списка.

5. Предполагается, что уже построен и задан указателем P связанный двусторонний список с элементами - целыми числами:

а) заданное значение включить в список в качестве 1-го элемента;

б) удалить из списка последний элемент;

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

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

7. Входная последовательность символов задает арифметическое выражение, содержащее бинарные операции +, -, *, /, круглые скобки и однобуквенные идентификаторы. Построить в виде связанной списочной структуры двоичное дерево, представляющее выражение, задаваемое входной последовательностью. Определить высоту заданного двоичного дерева.

8. Информация о студенте состоит из его фамилии, возраста( число лет), пола и успеваемости ( оценки по пяти предметам). Ввести информацию о группе студентов, представляя ее в виде связанного одностороннего списка. Один элемент списка содержит информацию об одном студенте:

а) найти студента первого по порядку студента, возраст которого менее 17 лет;

б) удалить из списка первого по порядку мужчину;

в) переупорядочить данный список по не возрастанию суммы оценок каждого студента по всем предметам.

9. Предполагается, что уже построен и задан указателем P связанный односторонний список, элементами которого являются символы:

а) подсчитать число элементов списка;

б) проверить упорядочен ли список по возрастанию.

10. Предполагается, что уже построен и задан указателем P связанный односторонний список, элементами которого являются символы:

а) проверить, совпадает ли заданное значение с каким либо элементом списка;

б) включить в список, упорядоченный по не убыванию, элемент не нарушая порядок.

11. Предполагается, что уже построен и задан указателем P связанный двусторонний список:

а) подсчитать его длину;

б) вставить элемент в лексикографическом порядке.

12. Формулу вида

<формула> ::=<теминал>| (<формула><знак><формула>)

<знак>::=+ | - | * | /

<терминал>::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

можно представить в виде двоичного дерева:

а) вычислить значения дерева;

б) по формуле из текстового файла f построить дерево;

в) печатать дерево в виде соответствующей формулы. Определить высоту заданного дерева.

13.Задана система двусторонних дорог. Найти два города и соединяющий их путь, который проходит через каждую из дорог системы ровно один раз. Система дорог задана списком.

14. Система двусторонних дорог называется трисвязной, если для любой четверки разных городов A, B, C, D существует два различных пути из A в D , причем один из них проходит через B, а другой через C. Определить является ли трисвязной данная система двусторонних дорог. Сеть дорог - связанный список.

15. Во внешнем текстовом файле PROG записана (без ошибок) некоторая программа на языке Паскаль. Известно, что в этой программе каждый идентификатор (служебное слово или имя) содержит не более 9 латинских букв и/или цифр. Напечатать в алфавитном порядке все различные идентификаторы этой программы, указав для каждого из них число его вхождений в текст программы. Для хранения идентификаторов использовать дерево поиска, элементы которого являются пары - идентификатор и число его вхождений в текст программы.

16. Многочлен с целыми коэффициентами можно представить в виде списка. Определить следующие процедуры и функции:

а) процедуру dif (p, q), которая строит многочлен p -производную многочлена q;

б) процедуру add(p, q, r) , которая строит многочлен p - сумму многочленов q и r;

в) функцию znach(p, x) - значение многочлена p в точке x.

17. Объединить два упорядоченных по не убыванию списка L1 и L2 ( тип элемента - real) в один упорядоченный по не убыванию список:

а) построить новый список L;

б) меняя ссылки получить один список L1.

18. Используя очередь и стек из входного файла f проанализировать текст сбалансированный по скобкам:

<текс> := <пусто>|<элемент><текст>

<элемент>:=<буква>|(<текст>).

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

19.Пусть дан циклический двунаправленный список, с информационным полем - целое число:

а) удалить из списка первый отрицательный элемент;

б) добавить в конец списка новый элемент;

в) печатать элементы в обратном порядке.

20. N ребят располагаются по кругу. Начав отсчет от первого удаляют каждого k-го, смыкая круг после каждого удаления. Определить порядок удаления ребят из круга. Напечатать номера ребят в том порядке, как они удаляются из круга (циклический список - структура реализации).

21. Дан список L - однонаправленный, с числовым полем:

а) перенести в конец непустого списка L его первый элемент;

б) перевернуть список, т. е. изменить ссылки в этом списке так, чтобы

его элементы оказались расположенными в обратном порядке.

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

а) каждую вершину, в которую из нее ведет дуга;

б) вершины, в которые из нее ведет путь длины три и не короче.

Литература

1. Пильщиков В.Н. «Сборник упражнений по языку Паскаль»Изд.:Наука, 1989, 160 с.

2. Ускова О.Ф. «Программирование на языке Паскаль. Задачник»Изд.:Питер, 2003, 336 с.

3. Прудникова Л.И. «Основы технологии программирования. Введение в Паскаль» Изд.:ТГЭУ ,2006, 135 с.

Размещено на Allbest.ru

...

Подобные документы

  • Логические конструкции в системе программирования Паскаль. Команды языка программирования, использование функций, процедур. Постановка и решение задач механики в среде системы Паскаль. Задачи статики, кинематики, динамики решаемые с помощью языка Паскаль.

    курсовая работа [290,9 K], добавлен 05.12.2008

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

    лабораторная работа [189,8 K], добавлен 17.04.2012

  • Общая характеристика языков программирования. Описание языка Паскаль: основные субъекты языка; структура Паскаль-программы; типизация и объявление данных. Операторы присваивания и выражения. Структурные операторы, организация ветвлений и циклов.

    дипломная работа [276,6 K], добавлен 26.01.2011

  • Алгоритмы и алфавит языка Турбо Паскаль. Основные типы данных. Операторы присваивания, перехода и выбора. Понятие массива в Паскале. Особенности работы со строками в программе. Использование линейного поиска и поиска с барьером. Основные виды сортировок.

    учебное пособие [53,2 K], добавлен 09.11.2009

  • Представление (построение, создание) списка данных в виде линейного однонаправленного списка. Формирование массива данных. Вывод данных на экран. Алгоритм удаления, перемещения данных. Сортировка методом вставки. Алгоритм загрузки данных из файла.

    курсовая работа [2,1 M], добавлен 16.05.2015

  • Лингвистическая концепция языка Паскаль. Интегрированная инструментальная оболочка. Основы построения программ на ТП 7.0. Алфавит языка и специфика использования символов. Простые типы данных: константы и переменные. Циклические конструкции и операции.

    курсовая работа [284,6 K], добавлен 02.07.2011

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

    презентация [187,9 K], добавлен 02.04.2014

  • История и основы структурного программирования в среде Turbo Pascal. Работа с различными типами данных. Операторы языка. Работа с символьными и строковыми переменами, одномерным, двумерным массивами. Классификация компьютерных игр. Игры на языке Паскаль.

    курсовая работа [28,8 K], добавлен 06.05.2014

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

    лекция [55,7 K], добавлен 21.05.2009

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

    курсовая работа [440,7 K], добавлен 13.06.2011

  • Особенности программирования на языке Паскаль в среде Турбо Паскаль. Линейные алгоритмы, процедуры и функции. Структура данных: массивы, строки, записи. Модульное программирование, прямая и косвенная рекурсия. Бинарный поиск, организация списков.

    отчет по практике [913,8 K], добавлен 21.07.2012

  • Язык программирования Турбо Паскаль. Запись алгоритма на языке программирования и отладка программы. Правила записи арифметических выражений. Стандартное расширение имени файла, созданного системным редактором. Составной оператор и вложенные условия.

    курсовая работа [75,0 K], добавлен 21.03.2013

  • Совместимость и преобразование типов данных. Создание информационно-поисковой системы на языке программирования Паскаль. Описание интерфейса, каждого блока программы "Картотека больных". Рассмотрение результатов работы программы, сортирования данных.

    курсовая работа [368,9 K], добавлен 18.05.2015

  • Изучение организации диалоговой программы и закрепления основных элементов программирования на языке Паскаль и Си (Delphi, C++ Builder). Описание представления информации в программах на языках высокого уровня. Сравнительная характеристика Delphi и C++.

    курсовая работа [3,1 M], добавлен 27.02.2015

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

    курсовая работа [1,0 M], добавлен 03.07.2011

  • Сравнительный анализ языков программирования высокого уровня Си и Паскаль. Реализация алгоритма обработки данных. Тестирование и отладка программы или пакета программ. Структура программы на языке Турбо Паскаль. Указатели и векторные типы данных.

    курсовая работа [233,5 K], добавлен 14.12.2012

  • Программирование на языке Паскаль: алфавит, решение задач, простейшие программы, разветвляющие программы, циклические программы, ввод-вывод, массивы, подпрограммы, строковые данные, записи, файлы, использование библиотеки CRT, графика в Паскале.

    учебное пособие [211,1 K], добавлен 30.03.2008

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

    курсовая работа [78,9 K], добавлен 28.12.2012

  • Понятие алгоритма. Цикл программы. Структурная схема алгоритма. Элементы языка Тurbo Рascal. Алфавит. Идентификаторы. Комментарии. Лексика языка С++. ESC-последовательности. Операции. Ключевые слова. Комментарии.

    контрольная работа [43,0 K], добавлен 24.04.2006

  • Теоретическое описание линейного списка с алгоритмами реализации основных операций. Понятия, механизмы объектно-ориентированного программирования. Возможности проектируемого контейнера пользователей, его реализация на основе линейного списка с заголовком.

    курсовая работа [475,2 K], добавлен 26.02.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.