Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование на ЯВУ. Задания к практике

.doc
Скачиваний:
27
Добавлен:
27.03.2015
Размер:
113.15 Кб
Скачать

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

НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ

УНИВЕРСИТЕТ

Кафедра информатики и систем управления

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ВЫСОКОГО УРОВНЯ

Задания к выполнению практических работ для студентов специальностей 220200 “Автоматизированные системы обработки информации и управления” и

071900 “Информационные системы” (в технике)

дневной формы обучения

Нижний Новгород

2010

Составитель Э.С.Соколова

УДК 681

Программирование на языке высокого уровня: Задания к выполнению практических работ /НГТУ; Сост.: Э.С. Соколова; Н.Новгород, 2010. – 13 с.

Приведены постановки задач к практическим занятиям по курсу “Программирование на языке высокого уровня” в соответствии с учебным планом специальностей 220200 “Автоматизированные системы обработки информации и управления” и 071900 “Информационные системы”.

.

Научный редактор Ю.С.Бажанов

Редактор И.И.Морозова

© Нижегородский государственный

технический университет, 2010

ЗАНЯТИЕ 6

Файловые типы данных

  1. Создать файл целых чисел (тип компонент integer). Реализовать следующие алгоритмы:

а) распечатать значение последней компоненты файла;

б) найти сумму наибольшей и наименьшей компонент файла;

в) разность первой и последней;

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

д) удалить из файла все отрицательные числа;

е) осуществить поиск заданного значения.

  1. Создать текстовый файл. Реализовать алгоритмы:

а) определить число строк в текстовом файле;

б) найти строки максимальной и минимальной длины;

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

  1. Переписать текст из файла в новый файл, исключив деление на строки.

  2. Создан текстовый файл, в котором информация не разделена на строки. Разбить текст на строки по r символов в строке.

  3. Текстовый файл содержит вещественные числа. Отформатировать его по r чисел в строке в указанном формате.

  1. Сформировать текстовый файл, имеющий следующий вид:

1

22

333

4444

. . .

999999999

  1. Исследуя текстовый файл, определить частоту попадания букв латинского алфавита в текст.

  1. Упорядочить текстовый файл по возрастанию:

а) значений строк;

б) длин строк.

9

ЗАНЯТИЕ 7

Динамические структуры данных. Работа с указателями

  1. Создать динамический массив целых чисел.

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

б) поменять местами i-ю и j-ю строки.

  1. Файл содержит числа. Упорядочить содержимое файла, используя динамический массив.

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

const n = 100;

type mas = array[1..n] of ^string;

var st: ^mas;

  1. Создать динамический список фамилий. Реализовать следующие алгоритмы:

а) проверить упорядоченность списка;

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

в) вставить в список фамилию, не нарушив упорядоченности;

г) исключить заданную фамилию из списка.

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

  1. Создать очередь. Из меню организовать вызов процедур

а) добавления компоненты в конец очереди;

б) извлечения компоненты из начала очереди;

в) вывода содержимого очереди на экран.

  1. Создать бинарное дерево. Реализовать алгоритмы обхода дерева, добавления вершин в дерево, исключения его компонент.

10

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PASCAL

ЗАНЯТИЕ №1

Составление алгоритмов для решения задач

Составить блок-схемы для решения следующих задач:

    1. Вычислить корни квадратного уравнения.

    2. Даны 3 числа. Выбрать максимальное.

    3. Поменять местами a,b,c так, чтобы a  b  c.

    4. Вычислить значение функции

    5. Вычислить значение полинома:

а) y = a7 + 2a6 +3a5 +4a4 +5a3 +6a2 +7a +8;

б) y = 8a7 +7a6 +6a5 +5a4 +4a3 +3a2 +2a +1.

    1. Вычислить сумму ряда:

.

    1. Вычислить с точностью =0,001 значение функции:

    1. Записать на языке Pascal следующие выражения:

; ; .

ЗАНЯТИЕ 2

Простые типы данных, ввод/вывод данных, операции и выражения, операторы

Знать:

- внутреннее представление числовых типов данных;

- перевод чисел из одной системы счисления в другую (двоичные, восьмеричные, шестнадцатеричные значения);

- как хранятся символьные значения, что такое ASCII код. Виды представления значений типа char (‘a’, ‘1’, #13, $FF).

3

    1. Выполнить перевод чисел из одной системы счисления в другую:

а)12310x2x8 x16

б) 1FF16x2x8 x10

в) 1100111100001110  x8x16 x10

1

19 sep 2004

2004 sep 19

0. Ввести в переменные дату, введенную с клавиатуры, и вывести ее в формате: год, месяц, число. Вид экрана:

11. Вычислить значения выражений:

а) trunc(-1.8) = ? е) 15 div 4 = ?

б) trunc(6.9) = ? ж) 20 mod 4 = ?

в) round(0.6) = ? з) 3.2 mod 2 = ?

г) -5 mod 2 + 40 div 3 * 3 = ?

д) 3*7 div 2 mod 7/3 – trunc(sin(1)) = ?

  1. Напечатать заголовок таблицы для списка литературы:

    Автор

    Название

    Год

  1. а) Присвоить целой переменной k 3-ю (в общем случае r-ю) от конца цифру в записи положительного числа x.

б) Присвоить целой переменной k 1-ю (в общем случае r-ю) цифру дробной части положительного вещественного числа.

в) Целой переменной S присвоить сумму цифр 3-хзначного (в общем случае n-значного) целого положительного числа.

  1. Записать выражения, значения которых истинны при выполнении условий:

а) 0  x  1;

б) x  max (x,y,z);

в) x = max (x,y,z).

  1. Определить, при каких значениях a и b значение выражения (a or b and not a) истинно.

4

  1. Известны значения переменных:

a := true; x:=1;

Определить тип и значение d:

а) d := x<2;

б) d:=not a or odd(x);

в) d:= ord(a)<>x;

  1. Даны значения отрезков a,b,c. Составить программу для определения возможности построения треугольника и вида этого треугольника (равнобедренный, равносторонний, разносторонний).

  1. Переменной b присвоить значение false, если два числа x, y равны и значение true в противном случае.

  1. Значение функции задано графически. Вычислить значение y, если x вводится с клавиатуры.

  1. Определить вид экрана при работе операторов вывода:

а) writeln (‘abcdef’);

б) writeln (‘abc

def’);

в) writeln(‘abc’,

‘def ’);

  1. Вычислить значение n! с помощью 3-х операторов цикла for, while, repeat. Определить максимальное значение целого n, для которого результат принадлежит типу integer.

  1. Определить, сколько времени работают следующие операторы, используя стандартную процедуру GetTime (hour, min, sec, hund):

a) for i:=1 to 100000 do

for j:=1 to 1000 do;

б) for i:=1 to 1000 do

for j:=1 to 100000 do;

5

ЗАНЯТИЕ 3

Обработка последовательностей информации без сохранения их в памяти

Не используя тип массив, решить задачи:

  1. Вводится последовательность вещественных чисел. Определить, сколько среди них отрицательных и положительных.

  1. Вводится текст. Определить, сколько введено символов цифр и сколько букв латинского алфавита.

  1. Вводится строка текста. Определить, сколько символов введено до нажатия клавиши <enter>.

  1. Вводится последовательность чисел. Определить:

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

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

в) каким по счету в последовательности идет число, равное x;

г) вывести на экран все числа, попадающие в заданный интервал;

д) определить, упорядочена ли вводимая последовательность.

  1. Вводится последовательность символов (текст). Определить, все ли перечисленные задачи №26 можно решить применительно к тексту? Написать соответствующие программы.

  1. Вводится строка символов. Определить число вхождений в нее группы букв вида “abc”.

  1. Определить частоту попадания букв латинского алфавита в текст.

  1. Распечатать таблицу ASCII кодов символов.

ЗАНЯТИЕ 4

Массивы (array), строки (string), множества (set)

  1. Написать программы решения задач 1 – 7 занятия 1.

6

Используя тип массив (array), решить задачи:

  1. Перемножить матрицы А и В, результат сохранить в матрице С.

  1. Найти среднеарифметическое значение элементов одномерного массива.

  1. Дано n чисел. Распечатать их в обратном порядке по m чисел в строке.

  1. Двухмерный массив А переписать в массив В в обратном порядке.

  1. Поменять местами максимальное и минимальное значения массива.

  1. Проверить упорядоченность строк массива. Найти номера неупорядоченных строк.

  1. Вводится текст, состоящий из нескольких строк. Определить

а) самую длинную строку в тексте;

б) количество введенных строк;

в) количество пустых строк;

г) номер строки, равной заданной;

д) количество слов в i-й строке (слова разделяются пробелами);

е) найти самое длинное слово в i-й строке.

  1. Определить, входит ли подстрока в строку, и с какой позиции.

  1. В массиве символов определить максимальное число идущих подряд пробелов.

  1. Поменять местами

а) строки наибольшей и наименьшей длины;

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

  1. Дан список фамилий студентов некоторой группы. Сохранить его в массиве. Упорядочить фамилии в списке по алфавиту.

  1. Добавить в массив, хранящий список фамилий студентов, новую фамилию, не нарушая упорядоченности списка.

7

ЗАНЯТИЕ 5

Процедуры, функции

Комбинированный тип данных - запись (record)

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

  2. Описать структуру данных ведомость. Заполнить ее. Определить:

а) средний балл группы за экзамен;

б) список студентов, получивших оценку 2.

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

а) списка претендентов на отчисление (студентов, получивших три двойки за сессию);

б) списка отличников для назначения повышенной стипендии.

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

8

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++

ЗАНЯТИЕ 1

Введение в программирование на С++

  1. Как работает следующая программа?

#include <stdio.h>

void main()

{ int day, year;

char month[10];

printf ("Программа работает\n");

scanf ("%d %d", &day, &year);

scanf ("%s", month);

printf("Сегодня %d %s %d", day, month, year);

}

Пусть формат ввода даты с экрана имеет вид: 5 septemba 2005

Как следует модифицировать приведенную выше программу для ввода даты?

  1. Вводятся два числа. Вывести на экран сумму, разность и большее из

чисел.

  1. Чему равен результат работы функций printf?

а) int i=2;

printf(“%d”, i++);

printf(“%d”, ++i);

б) int i=1, j=5;

printf(“%d”, i+++j);

printf(“%d %d %d”, i, i+++j, i);

printf(“%d”, ++i+j);

printf(“%d %d %d”, i, ++i+j, i);

в) int i=2, k=123;

printf(“%d %d”, k>>i, k<<i);

г) int x=20000;

int y=x*2; // sizeof(int) = = ? y= = ?

printf(“y=%d” ,y); // Как хранятся отрицательные числа?

д) char ch=’a’;

printf(“%c, %c, %c, %c\n”, ch, ch+1, ch+2, ch+3);

11

ch=’a’; printf(“%c, %c, %c\n”, ch+1, ch+2, ch+=3);

ch=’a’;

printf(“%c, %c, %c, %c\n”, ch, ++ch, ++ch, ++ch);

е) printf(“%d, %d, %d, %d\n”, sizeof 4.2, sizeof (5+1), sizeof “5+1”);

  1. С клавиатуры вводятся фамилия студента и оценки результатов сдачи экзаменов в формате

Sidorov 5 5 4 4

Определить средний балл студента.

  1. С клавиатуры вводится текст в следующем формате:

Длина=125см, ширина=10см

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

ЗАНЯТИЕ 2, 3

Управляющие инструкции языка С++

  1. Распознать вводимый с клавиатуры символ – это цифра, буква латинского алфавита, пробел или другой символ.

  1. Вычислить сумму n натуральных чисел тремя способами, используя циклы for, while, do.

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

  1. Напечатать таблицу квадратов натурального ряда чисел по k квадратов в строке, каждый раз вставляя запрос на продолжение. Вид экрана:

1 4 9 16 25 // при к=5

Продолжить(y/n)? // в зависимости от ответа печать следующих

36 49 64 81 100 // значений квадратов или останов

  1. Вывести на экран текст, являющейся управляющей строкой функции printf, разорванной клавишей <Enter> при вводе, в одну строку на экране.

  1. Присвоить переменной х :

а) байтовое значение, все биты которого равны 1;

б) двухбайтовое значение, все биты которого равны 1.

  1. Распечатать побитовое значение целого беззнакового числа.

12

  1. Вводится числовая последовательность:

а) определить сумму положительных и сумму отрицательных чисел;

б) определить сумму четных чисел;

в) найти максимальное и минимальное значения;

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

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

  1. Вводится символьная последовательность. Решить перечисленные выше задачи в) – д).

  1. С клавиатуры вводится текст. Определить количество символов-цифр, букв латинского алфавита и остальных символов текста.

  1. Определить значение факториала n!

  1. Распечатать таблицу ASCI I кодов символов.

  1. Написать функцию, возвращающую:

а) сумму двух чисел;

б) большее из двух чисел;

в) поразрядную конъюнкцию двух чисел.

  1. При покупке 1-го килограмма фруктов вы платите 50 руб. При покупке каждого последующего на 2 руб. дешевле предыдущего. Напечатать 10 строк таблицы в виде:

Количество (кг) стоимость (руб.)

    1. 50

    2. 98

    3.  146

. . . .

ЗАНЯТИЕ 4, 5

Массивы и указатели

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

а) поиск заданного значения;

б) определение суммы элементов массива;

с) меняющую местами max и min элементы в строках массива.

13

  1. Инициализировать внешний массив в операторе описания и определить сумму элементов массива, возложив задачу подсчета размера массива на компилятор.

  1. Массив инициализируется в инструкции описания:

int a[ ][3] = {{1,2,3}, {4,5,6}, {0,2,4}, {6,8,0}};

Найти сумму четных элементов массива.

  1. Вычислить сумму элементов двухмерного массива, не используя переменные с индексами.

  1. Две строки объединить в одну с помощью указателей. Значения строк известны и объявлены три указателя, которые следует связать соответственно с первой, второй и результирующей строкой:

char str1[ ] = ”Язык программирования”;

char str2[ ] = ”Borland C++”;

char *p1, *p2, *p3;

  1. Вычислить адрес начала, конца массива и его среднего элемента.

  1. Организовать ввод в массив текста:

a) с помощью функций посимвольного ввода (getchar());

б) с помощью функций ввода строк (gets());

в) с помощью операции ввода cin >>;

г) определить самую длинную строку текста;

д) поменять самую короткую строку текста с самой длиной;

е) осуществить поиск заданной строки в массиве.

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

  1. Интерпретировать объявление объектов:

1) int *(*comp[10])();

2) int (*a)[10];

3) int *a[10];

4) int *func()[];

5) int (*func())[];

6) int *fun();

14

7) int (*func)();

8) char *(*(*val)())[10];

9) char **arg; *++*arg; // как вычисляется значение arg?

10) const int n=100;

11) const int * p;

12) int * const p=&x;

13) const int * const p=&n;

  1. Написать программу, в которой функция main (int argc, char *argv[]) принимает аргументы из командной строки - n числовых значений и печатает на экране их сумму, причем, если параметры переданы неверно (не принадлежат диапазону типа), то выводится соответствующее сообщение.

  1. for (for (i=0; i<=20; i++)

    for (j=0; j<10; j++)

    for (k=0; k<5; k++)

    {операторы}

    for (for (i=0; i<=5; i++)

    for (j=0; j<10; j++)

    for (k=0; k<20; k++)

    {операторы}

    Определить, какой из двух вложенных операторов цикла работает быстрее:

1) 2)

  1. Реализовать рекурсивный алгоритм вычисления ap=a*ap-1.

  1. Реализовать метод быстрой сортировки одномерного массива.

ЗАНЯТИЕ 6

Структуры, ввод/вывод в файл

  1. Есть описание структуры:

struct student

{ char fam[20];

int ball[4];

float srball;} ;

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

  1. Определить размер файла в байтах.

  1. Определить количество строк в файле.

  1. Файл содержит список фамилий, упорядоченный по алфавиту. Добавить в список новую фамилию, не нарушая упорядоченности.

15

  1. Сохранить в файле последовательность чисел. Реализовать функции, вызываемые из меню:

а) проверки упорядоченности чисел;

б) поиск заданного значения;

в) корректировки файла (удвоение нечетных чисел);

г) дозаписи информации в файл.

  1. Сохранить в файле текст. Определить

а) строки минимальной и максимальной длины;

б) максимальную и минимальную строки по значению;

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

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

д) вставить строку в текст, не нарушая упорядоченности.

  1. Определить сумму чисел, введенных из командной строки.

  1. Распознать, что за символ (буква, цифра или другой символ) введен в командной строке.

ЗАНЯТИЕ 7, 8

Динамические структуры данных

  1. Есть описание:

а) int mas[10][20],**p; //Связать переменную p c переменной mas, вывести mas через p;

б) int **p; // Создать двухмерный массив.

В) int *p[100]; // Создать двухмерный массив.

  1. Создать двухмерный динамический массив, размерность которого функция main() с аргументами получает из командной строки.

  1. Создать динамический список, стек. Написать функции удаления и вставки элементов, поиска заданного значения.

  1. Создать очередь, осуществляя извлечение элементов из ее начала, а добавление элементов – в ее конец. Реализовать функции удаления и вставки элементов, поиска заданного значения.

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

16