- •Язык Паскаль
- •Тема: Типы данных. Операторы ввода-вывода данных.
- •Теория.
- •Выполните следующие задания:
- •4. Контрольные вопросы.
- •Тема: Линейные программы.
- •Теория.
- •Измените программу так, чтобы на экран выводилось:
- •Контрольные вопросы:
- •Тема: Оператор условия.
- •Повторить теорию.
- •Ответить на контрольные вопросы.
- •1.Теория.
- •3. Внесите в программу предложенные изменения:
- •4. Задание для самостоятельного выполнения.
- •5. Контрольные вопросы:
- •Тема: Оператор выбора.
- •Повторить теорию.
- •Ответить на контрольные вопросы.
- •1. Теория.
- •Блок – схема
- •3. Внесите в программу предложенные изменения.
- •4. Задание для самостоятельного выполнения.
- •5. Контрольные вопросы.
- •Тема: Арифметический цикл.
- •Повторить теорию.
- •Ответить на контрольные вопросы.
- •1. Теория.
- •3. Внесите в программу предложенные изменения:
- •4. Выполните задание.
- •5. Контрольные вопросы.
- •Тема: Цикл с предусловием.
- •Повторить теорию.
- •Ответить на контрольные вопросы.
- •Теория.
- •Блок схема цикла с предусловием.
- •3. Подумайте над вопросами и внесите предложенные изменения:
- •4. Задание для самостоятельного выполнения.
- •5. Контрольные вопросы.
- •Тема: Цикл с постусловием.
- •Повторить теорию.
- •Ответить на контрольные вопросы.
- •Теория.
- •Блок схема цикла с постусловием.
- •3. Подумайте над вопросами и внесите предложенные изменения:
- •4. Задание для самостоятельного выполнения.
- •5. Контрольные вопросы.
- •Тема: Вложенные циклы.
- •Повторить теорию.
- •Ответить на контрольные вопросы.
- •1. Теория.
- •3. Внесите в программу следующие изменения:
- •4. Задание для самостоятельного выполнения.
- •5. Контрольные вопросы.
- •Тема: Одномерные массивы.
- •Повторить теорию.
- •Ответить на контрольные вопросы.
- •1. Теория.
- •3. Внесите в программу предложенные изменения:
- •4. Задание для самостоятельного выполнения.
- •5. Контрольные вопросы.
- •Тема: Двумерные массивы.
- •Повторить теорию.
- •Ответить на контрольные вопросы.
- •1. Теория.
- •Внесите в программу предложенные изменения:
- •4. Задание для самостоятельного выполнения.
- •5. Контрольные вопросы.
- •Тема: Строки. Операции над строками. Функции для работы со строковыми величинами.
- •Повторить теорию.
- •Ответить на контрольные вопросы.
- •1. Теория.
- •Практическая часть.
- •Контрольные вопросы.
- •Тема: Строки. Функции для работы со строковыми величинами.
- •Повторить теорию.
- •Ответить на контрольные вопросы.
- •1. Теория.
- •2. Практическая часть.
- •3. Контрольные вопросы.
- •Тема: “Использование массивов при решении задач на преобразование нечисловой информации. Разделение текста на слова”.
- •3. Ответить на контрольные вопросы.
- •2. Практическая часть.
- •3. Контрольные вопросы.
- •Тема: “Подпрограммы-процедуры”
- •1. Повторить теорию.
- •3. Ответить на контрольные вопросы. Ход работы.
- •1. Теория.
- •2. Практическая часть.
- •3. Контрольные вопросы.
- •Тема: “Подпрограммы-функции”
- •1. Повторить теорию.
- •3. Ответить на контрольные вопросы. Ход работы.
- •Теория.
- •3. Контрольные вопросы.
- •Тема: “Множества”.
- •1. Повторить теорию.
- •3. Ответить на контрольные вопросы.
- •Теория.
- •Практическая часть.
- •Контрольные вопросы.
- •Тема: “Записи”.
- •1. Повторить теорию.
- •3. Ответить на контрольные вопросы.
- •Теория.
- •Обращение к полям записи.
- •Практическая часть.
- •Контрольные вопросы.
- •Тема: “Файлы, типизированные и нетипизированные файлы”.
- •1. Повторить теорию.
- •3. Ответить на контрольные вопросы.
- •Теория.
- •Стандартные процедуры для работы с файлами различного типа.
- •Процедуры для работы с типизированными файлами.
- •2. Практическая часть.
- •3.Контрольные вопросы.
- •Тема: “Файлы, текстовые файлы”.
- •1. Повторить теорию.
- •3. Ответить на контрольные вопросы Ход работы. Теория.
- •Практическая часть.
- •3.Контрольные вопросы.
Тема: “Использование массивов при решении задач на преобразование нечисловой информации. Разделение текста на слова”.
Цель: выработать у учащихся навыки работы со строками и умения использовать массивы при работе с нечисловыми данными.
План работы.
1. Повторить алгоритм разделения произвольного текста на слова.
2. Выполнить практическую часть на компьютере, записав ответы в тетрадь.
3. Ответить на контрольные вопросы.
Ход работы.
1. Алгоритм разделения текста на слова.
Особый интерес представляют задачи, связанные с анализом и преобразованием отдельно каждого из слов, входящих в текст.
В этом случае требуется разделить произвольное предложение на слова с сохранением каждого из них в отдельной ячейке памяти (переменной).
Слова в предложении могут быть разделены различным числом пробелов и знаками препинания, количество слов может быть достаточно большим.
Рассмотрим алгоритм разделения текста на слова для самого простого случая:
Дано произвольное предложение. Слова в нем разделены пробелами (любое количество), а после последнего - точка. Получить на экране в столбик все слова, входящие в это предложение.
Program Slova;
var
Predl: string;
MSlov: array [1..130] of string;
k,ns,i,PDlin,Pn: integer;
Begin
k:=0;
write ('Введите предложение: ');
read (Predl); {вводим предложение}
Predl:=' '+Predl; {ставим пробел перед первым словом}
PDlin:=length (Predl); {измеряем длину предложения}
For i:=1 to PDlin-1 do
Begin
If (Predl[i]=' ') and (Predl[i+1]<>' ')
{если пришли к началу очередного слова,}
then {то}
ns:=i+1; {запомнили позицию его начала}
If (Predl[i]<>' ') and ((Predl[i+1]=' ')
or
(Predl[i+1]='.'))
{если слово закончилось,}
then {то}
Begin
k:=k+1; {увеличили счетчик слов}
MSlov[k]:=Copy (Predl,ns,i-ns+1);
{"вырезаем" слово из предложения и заносим}
{его в массив в ячейку с номером k}
end;
end;
For i:=1 to k do
writeln (MSlov[i]); {выводим слова}
end.
2. Практическая часть.
Задание 1. Наберите заданную программу, выводящую на экран самое длинное слово произвольного предложения, введенного с клавиатуры, и количество символов в нем.
Program dlinnoe_slovo;
var
Predl,dl_slovo: string;
MSlov: array [1..130] of string;
k,ns,i,PDlin,Pn,m,max: integer;
Begin
k:=0;
write ('Введите предложение: ');
read (Predl);
Predl:=' '+Predl;
PDlin:=length (Predl);
For i:=1 to PDlin-1 do
Begin
If (Predl[i]=' ') and (Predl[i+1]<>' ')
then ns:=i+1;
If (Predl[i]<>' ') and
((Predl[i+1]=' ') or (Predl[i+1]='.'))
then
Begin
k:=k+1;
MSlov[k]:=Copy (Predl,ns,i-ns+1);
end;
end;
dl_slovo:= MSlov[1];
max:=length(MSlov[1]);
For i:=1 to k do {открываем цикл по количеству слов}
Begin
m:=length(MSlov[i]);
if m>max then
begin
max:=m;
dl_slovo:= MSlov[i];
end;
end;
writeln(dl_slovo, max:6);
end.
Измените программу таким образом, чтобы на экран выводилось самое короткое слово и его первый символ.
Задание 2. Наберите заданную программу, печатающую на экран все слова произвольного предложения, начинающиеся на букву “а”.
Program slovа_а_1;
var
Predl: string;
MSlov: array [1..130] of string;
k,ns,i,PDlin,Pn: integer;
Begin
k:=0;
write ('Введите предложение: ');
read (Predl);
Predl:=' '+Predl;
PDlin:=length (Predl);
For i:=1 to PDlin-1 do
Begin
If (Predl[i]=' ') and (Predl[i+1]<>' ')
then ns:=i+1;
If (Predl[i]<>' ') and
((Predl[i+1]=' ') or (Predl[i+1]='.'))
then
Begin
k:=k+1;
MSlov[k]:=Copy (Predl,ns,i-ns+1);
end;
end;
For i:=1 to k do {открываем цикл по количеству слов}
if MSlov[i][1]=’а’
{если первый символ i–того слова равен ’а’}
then {то}
writeln(MSlov[i]); {выводим слово}
end.
Измените программу таким образом, чтобы на экран выводились слова, начинающиеся и оканчивающиеся на одну и туже букву.
Задание 3. Наберите заданную программу, печатающую на экран слова произвольного текста, имеющие в своей записи хотя бы одну букву “а”.
Program slovа_s_а;
var
Predl: string;
MSlov: array [1..130] of string;
k,ns,i,PDlin,Pn,n: integer;
Begin
k:=0;
write ('Введите предложение: ');
read (Predl);
Predl:=' '+Predl;
PDlin:=length (Predl);
For i:=1 to PDlin-1 do
Begin
If (Predl[i]=' ') and (Predl[i+1]<>' ')
then ns:=i+1;
If (Predl[i]<>' ') and
((Predl[i+1]=' ') or (Predl[i+1]='.'))
then
Begin
k:=k+1;
MSlov[k]:=Copy (Predl,ns,i-ns+1);
end;
end;
For i:=1 to k do {открываем цикл по количеству слов}
Begin
n:=0;
For j:=1 to length(MSlov[i]) do
{открываем цикл по количеству символов в i–том слове}
if MSlov[i][j]=’а’
{если j-тый символ i–того слова равен ’а’}
then {то}
n:=n+1; {увеличили счетчик символов 'a'}
if n>0 then writeln(MSlov[i]);
end;
end.
Измените программу таким образом, чтобы на экран выводилось слово с максимальным содержанием букв 'a'.