- •А.И. Газейкина Основы структурного программирования на языке Паскаль
- •Тема 1. Линейные программы 4
- •Некоторые стандартные функции языка Турбо Паскаль
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 2. Разветвляющиеся программы Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 3. Циклические программы Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 4. Обработка данных строкового типа Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 5. Система типов языка Паскаль Краткое изложение теоретического материала
- •Тема 6. Перечисляемый тип Краткое изложение теоретического материала
- •Тема 7. Тип-диапазон Краткое изложение теоретического материала.
- •Тема 8. Множество (множественный тип) Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 9. Массивы в языке Паскаль Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 10. Графика в языке Паскаль Краткое изложение теоретического материала
- •Контрольные задания
- •Тема 11. Подпрограммы в языке Паскаль Краткое изложение теоретического материала
- •Процедуры в языке Турбо Паскаль
- •Функции в языке Турбо Паскаль
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 12. Тип данных запись (Record) Краткое изложение теоретического материала
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 13. Работа с файлами в языке Паскаль Краткое изложение теоретического материала
- •Текстовые файлы
- •Примеры решаемых задач
- •Типизированные файлы
- •Примеры решаемых задач
- •Контрольные задания
- •Тема 14. Динамические переменные в языке Паскаль Краткое изложение теоретического материала Статические и динамические переменные
- •Указатели
- •Типизированные указатели
- •Нетипизированные указатели
- •Динамические структуры данных
- •Примеры решаемых задач
- •Контрольные задания
- •Список литературы
Примеры решаемых задач
Пример 1. Составить программу, которая сформирует случайным образом массив из 20 целых чисел и:
выведет его в одну строку на экране;
выведет элементы массива, стоящие на четных местах и вычислит их сумму;
вычислит количество нечетных элементов;
упорядочит элементы массива по убыванию.
Программа:
Program М1;
Uses Crt;
Type Numbers = Array [1..20 ] Of Integer; {}
Var A : Numbers;
I, J, S, K , P : Integer;
Begin
Clrscr;
Randomize; { инициализируем датчик случайных чисел }
For I := 1 To 20 Do { заполняем массив А случайными числами от 0 до 99}
A [ I ] := Random (100);
{ Задача (а) }
Writeln ( ‘Получили массив:’ ); { выводим полученный массив на экран }
For I := 1 To 20 Do
Write ( A [ I ] : 3 );
Writeln; { переводим курсор в следующую строку экрана }
{ Задача (б) }
Writeln ( ‘Элементы на четных местах: ’ );
S := 0; { Обнулили сумму }
For I := 1 To 20 Do
If I mod 2 = 0 { Если у элемента четный НОМЕР }
Then Begin
Write ( A [ I ] : 3 ); { то выводим его }
S := S + A [ I ] { и накапливаем сумму }
End;
Writeln; { переводим курсор в следующую строку экрана }
Writeln (‘ Их сумма ’, S ); { выводим значение суммы }
{ Задача (в) }
K := 0; { Обнулили счетчик нечетных элементов в массиве }
For I := 1 To 20 Do
If A [ I ] mod 2 <> 0 { Если ЭЛЕМЕНТ нечетный }
Then K := K + 1; { то увеличиваем значение счетчика }
Writeln (‘ Количество нечетных элементов ’, К );
{ выводим значение счетчика }
{ Задача (г) }
{ Сортируем массив А по убыванию }
For I := 1 To 19 Do
For J := I + 1 To 20 Do
If A[ J ] > A[ I ] Then
Begin
P := A[ I ]; {меняем местами i-ый и j-ый элементы массива А}
A[ I ] := A[ J ]; { для этого используем переменную p }
A[ J ] := P
End;
Writeln ( ‘Получили массив:’ ); {выводим упорядоченный массив на экран}
For I := 1 To 20 Do
Write ( A [ I ] : 3 );
Readln
End.
Пример 2. Составить программу, которая сформирует случайным образом двумерный массив N x N целых чисел и:
выведет его на экран в виде матрицы;
выведет элементы массива, стоящие над главной диагональю;
вычислит суму элементов, стоящих на побочной диагонали;
вычислит суммы столбцов.
Пояснение:
Если элемент M [i , j] двумерного массива M размера n x n расположен на главной диагонали, то i = j (номер строки равен номеру столбца).
Если элемент M [i , j] двумерного массива M размера n x n расположен на побочной диагонали, то i + j = n + 1 (сумма его индексов равна n + 1).
Программа:
Program М2;
Uses Crt;
Type Numbers = Array [1..20, 1..20 ] Of Integer;
{ Тип - двумерный массив 20 х 20 }
Var A : Numbers;
N, I, J, S : Integer;
Begin
Clrscr;
Write (‘Введите количество строк и столбцов ’);
Readln( N );
Randomize; { инициализируем датчик случайных чисел }
For I := 1 To N Do { Организуем цикл по строкам }
For J := 1 T N Do { Организуем цикл по столбцам }
A [ I,J] := Random (100); { заполняем массив А случайными числами }
{ Задача (а) }
Writeln ( ‘Получили массив:’ ); { выводим массив на экран }
For I := 1 To N Do
Begin
For J := 1 To N Do
Write ( A [I , J] : 3 ); {выводим все элементы i-ой строки в одну строку на экране}
Writeln { переводим на экране курсор на следующую строку}
End;
{ Задача (б) }
Writeln ( ‘Элементы над главной диагональю:’ );
For I := 1 To N Do
Begin
For J := 1 To N Do
If J >= I { Eсли элемент на главной диагонали или над ней, }
Then Write ( A [I , J] : 3 ) { то выводим его}
Else Write(‘ ‘:3); { иначе выводим три пробела }
Writeln { переводим на экране курсор на следующую строку}
End;
{ Задача (в) }
S := 0;
For I := 1 To N Do
For J := 1 To N Do
If J + I = N + 1 { Eсли элемент на побочной диагонали }
Then S := S + A [I , J]; { то накапливаем сумму }
Writeln ( ‘Сумма элементов побочной диагонали ’, S );
{ Задача (г) }
For J := 1 To N Do { организуем цикл по столбцам }
Begin
S := 0; { обнуляем сумму для каждого столбца }
For I := 1 To N Do { цикл по строкам }
S := S + A [I , J]; { накапливаем сумму элементов столбца }
Writeln (‘ Сумма элементов ’, J, ‘ столбца ’, S) { выводим на экран значение суммы }
End;
Readln
End.