- •31 Информатика (лек.) – гтк – 2 семестр (2012 г.) Введение Литература
- •Сокращения
- •Тема № 1. Основные понятия программирования
- •1.1. Состав программы на языке Pascal
- •1.2. Элементы программы в языке Pascal
- •1.3. Типы данных в языке Pascal
- •1.4. Операции в языке Pascal
- •1.5. Выражения в языке Pascal
- •1.6. Стандартные функции в языке Pascal
- •1.7. Операторы языка Pascal
- •Тема № 2. Программирование базовых алгоритмов
- •2.1. Программирование последовательных вычислений
- •2.2. Программирование разветвлений
- •2.3. Программирование циклов
- •Тема № 3. Программирование задач с массивами
- •3.1. Одномерные массивы
- •Фрагменты вычисления характеристик одномерного массива
- •Фрагменты операций с одномерными массивами
- •Особенности элементов одномерного массива
- •3.2. Двумерные массивы
- •Фрагменты вычисления характеристик двумерного массива
- •Фрагменты вычисления характеристик строк и столбцов двумерного массива
- •Фрагменты операций с двумерными массивами
- •Особенности элементов квадратных матриц
- •3.3. Перестановка и сортировка элементов массива
- •Тема № 4. Программирование подпрограмм и структурных типов данных
- •4.1. Подпрограммы
- •4.2. Программирование задач с функциями
- •4.3. Программирование задач с процедурами
- •4.4. Программирование задач с файлами
- •4.5. Программирование задач с символами и строками
- •4.6. Программирование задач с записями
- •4.7. Программирование задач со множествами
- •Тема № 5. Знакомство с численными методами
- •5.1. Приближённые вычисления
- •5.2. Методы решения нелинейных уравнений
- •5.3. Методы решения систем уравнений
- •5.4. Методы решения дифференциальных уравнений
- •5.5. Методы численного интегрирования
4.5. Программирование задач с символами и строками
Строка – упорядоченный набор символов в кавычках.
Описание строки в разделе описания переменных (Var) на языке Pascal имеет вид:
St : string [ NMax ] ;
где string – строка, St – имя строки, NMax – максимальное количество символов в строке.
Это означает, что переменная St является строкой, которая может содержать от 0 до NMax символов.
Описание символьной переменной в разделе описания переменных (Var) на языке Pascal имеет вид:
Ch : char ;
где char – символьный тип (character), Ch – имя символа.
Это означает, что переменная Ch является символом.
Пример.
Var god : string[4];
bukva : char;
Это означает, что переменная god – строка, включающая максимум 4 символа, а переменная bukva – единичный символ.
Доступ к символу в строке имеет вид:
St [ Ind ]
где St – имя строки, Ind – индекс символа.
Это означает доступ к символу с номером Ind в строке St.
Пример.
god[3]
Это означает 3-й символ в строке god.
К строкам можно применять следующие операции:
+ (сцепление).
= (равно).
<> (не равно).
< (меньше).
> (больше).
<= (меньше или равно).
>= (больше или равно).
К строкам обычно применяют следующие стандартные функции:
Length(St) – длина строки St.
Concat(St1,…,StN) – соединение строк St1, …, StN.
Copy(St,Ind,N) – скопированные N символов из строки St, начиная с позиции Ind .
Pos(PodSt,St) – номер позиции, с которой начинается подстрока PodSt в строке St.
К строкам обычно применяют следующие стандартные процедуры:
Insert(PodSt,St,Ind) – вставка подстроки PodSt в строку St, начиная с позиции Ind .
Delete(St,Ind,N) – удаление N символов из строки St, начиная с позиции Ind .
Задача 4.
Условие задачи. Ввести строку с названием купленного товара. Если товар не является вещью, то объединить строку с названием товара и слово «вкусно».
Программа.
Program z4;
Var
tovar : string[10];
itog : string[20];
Begin
readln(tovar);
if not(tovar='Вещь')
then itog:=tovar+' - вкусно';
writeln(itog);
End.
Контрольный пример.
Исходные данные: |
Товар = ‘Кефир’. |
Результаты: |
Итог = ‘Кефир – вкусно’. |
4.6. Программирование задач с записями
Запись – неупорядоченный набор величин разных типов, называемых полями.
Поле – именованная величина, являющаяся частью записи.
Описание записи в разделе описания переменных (Var) на языке Pascal имеет вид:
Zap : record
SP1 : T1;
…
SPN : TN
end;
где record – запись, end – конец описания записи, Zap – имя записи, SP1 – список полей 1-й, SPN – список полей N-й, T1 – тип полей в 1-м списке, TN – тип полей в N-м списке.
Это означает, что переменная Zap является записью, включающей поля в списке SP1 типа T1 , … поля в списке SPN типа TN.
Пример.
Var
computer : record
nazv : string[10];
god : integer;
bystr : real;
end;
Это означает, что переменная computer – запись, включающая поля nazv строкового типа, god целочисленного типа, bystr вещественного типа.
Доступ к полю записи имеет вид:
Zap . Pole
где Zap – имя записи, Pole – имя поля.
Это означает доступ к полю Pole записи Zap.
Пример.
computer.nazv
Это означает поле nazv записи computer.
Оператор присоединения имеет вид:
with Zap do Op
где with – с, do – делать, Zap – имя записи, Op – оператор.
Это означает, что с полями записи Zap надо выполнять оператор Op.
Пример 1. Ввести поля записи computer без использования оператора присоединения.
readln(computer.nazv,computer.god,computer.bystr);
Пример 2. Ввести поля записи computer с использованием оператора присоединения.
with computer do readln(nazv,god,bystr);
Задача 5.
Условие задачи. Задана запись студента с полями: фамилия, год рождения, средний балл за сессию. Начислить студенту стипендию, если известно, что за все отличные оценки начисляется стипендия в 1000 рублей, а за остальные оценки стипендия не начисляется.
Программа.
Program z5;
Var
student : record
fam: string[10];
god: integer;
ball: real;
end;
stip: real;
Begin
with student do
readln(fam,god,ball);
if student.ball=5 then stip:=1000 else stip:=0;
writeln('Стипендия – ',stip:7:2,' рублей');
End.
Контрольный пример.
Исходные данные: |
Фамилия – Иванов Год рождения – 1989 Средний балл – 5. |
Результаты: |
Стипендия – 1000 рублей. |
Задача 6.
Условие задачи. Дан массив студентов из полей записи: фамилия, год рождения, средний балл за сессию. Найти студента с максимальным средним баллом.
Программа.
Program z6;
Type
student = record
fam: string;
god: integer;
ball: real;
end;
Var
A: array [1..50] of student;
i,imax,n: integer;
max: real;
Begin
readln(n);
for i:=1 to n do
with A[i] do
readln(fam,god,ball);
max:=A[1].ball;
imax:=1;
for i:=1 to n do
if A[i].ball>max then
begin
max:=A[i].ball;
imax:=i;
end;
writeln('Фамилия -',A[imax].fam,' с баллом ',A[imax].ball);
End.
Контрольный пример.
Исходные данные: |
Фамилия |
Год рождения |
Средний балл за сессию |
Иванов |
1985 |
3,5 |
|
Петрова |
1986 |
4,1 |
|
Сидоров |
1984 |
4,7 |
|
Результаты: |
Фамилия – Сидоров с баллом 4,7. |