- •Методические указания по проведению учебной практики
- •Раздел 1. Способы описания алгоритмов
- •Раздел 2. Программирование на языке паскаль
- •2.1. Линейные программы структура программы
- •Описание переменных
- •Оператор присваивания
- •Процедуры ввода и вывода
- •Пример линейной программы
- •2.2. Разветвляющияся программы
- •Условный оператор
- •Составной оператор
- •Логический тип
- •ОдномерныЕ массивы
- •2.4. ДвумерныЕ массивЫ
- •2.5. Записи
- •2.6. Строки символов
- •Практические задания
- •Задания для самостоятельной работы
Задания для самостоятельной работы
На языке программирования Pascal написать программы в соответствии с вашим вариантом. Задачи должны быть решены алгоритмически и на языке программирования Pascal.
В заданном тексте подсчитать наибольшее количество подряд идущих пробелов.
var text: string;
max,dl,schet,i: worol;
begin
writeln(‘введите текст’,’’);
dl:=length(text);
max:=a; m:=0;
for i:=1 to dl do
if i=’’ then Jnc(m) else
begin
if m>max then max:=m;
m:=0;
начало
end;writeln(‘максимальное кол-во:’,max);
readln;
e
dl:=length(text)
max:=a; m:=0
nd.
i:=1..dl
-
max
i=’’
конец
Jnc(m)
+
-
+
m>max
max:=m
m:=0
+
-
Из заданного текста удалить те его части, которые заключены в кавычки (вместе с кавычками).
var text: string;
i,kol,met1,met2,dl:worol;
begin
writeln(‘вводите текст:’);
readln(text);
dl:=length(text);
kol:=0; met1:=0; met2:=0;
for i:=1 to dl do
begin
if (kol=1) and (text[i]=’ ’) then
begin
kol:=2;
met2:=i-met1+1;
end;
if kol=2 then
begin
delete(text,met1,met2);
met1:=0;
met2:=0; kol:=0;
end;
if (text[i]=’ ’) and (kol=0) then
begin
kol:=0;
met1:=i;
end;
end;
writeln(text);
readln;
end.
text
начало
(kol=1) and (text[i]=’ ’)
конец
kol:=2
met2:=i-met1+1
i:=1..dl
dl:=length(text)
kol:=0;met1:=0 met2:=0
-
Ввод text
-
kol=2
delete(text,met1,met2)
met1:=0
met2:=0, kol:=0
-
+
+
(text[i]=’ ’) and (kol=0)
kol:=0
met1:=i
-
+
+
Осуществить циклический сдвиг компонент заданного вектора A(N) вправо на две позиции, то есть получить вектор A= (a n-1, an,a1,a2,…,an-2)
const L=20; sd=2;
type VEKT=array[1..L] of integer;
var b,a:VEKT;
i:integer;
begin
write(‘введите вектор,’ ’);
for i:=1 to L do
read(a[i]);
for i:=1 to L do
-
Ввод a[i]
+
i:=1..L
-
начало
Ввод a[i]
+
-
beginif i<=sd then b[ i]:=a[L-sd+i]
else b[i]:=a[i-sd];
write(b[i]);
end;
readln;
end.
конец
i:=1..L
i<=sd
+
b[i]:=a[i-sd]
+
-
b[i]
b[ i]:=a[L-sd+i]
В заданном массиве A(N) определить число соседств:
А
начало
) двух положительных чисел;Б) двух чисел разного знака;
В ) двух чисел одного знака.
c
kpd:=0; kraz:=0; kod:=0
onst L=20type chsod=array[1..L] of integer;
var a: chsod;
i:=1..L
-
i,kpd,kraz,kod:word;b egin
kpd:=0; kraz:=0; kod:=0;
+
for i:=1 to L do begin
Ввод a[i]
write (’a[’,i’,]=’);readln(a[i]);
end;
for i:=1 to L-1 do
begin
if (a[i]>0) and (a[i+1]>0) then
i:=1..L-1
-
kpol:=kpol+1;if a[i]*a[i+1]<0 then kraz:=kraz+1;
if a[i]*a[i+1]>0 then kod:=kod+1;
end;
-
write(‘положительных:’,kpol);
(a[i]>0) and (a[i+1]>0)
+
write(‘разных знаков:’,kraz);write(‘одинаковых знаков:’,kod);
kpol:=kpol+1
readln;
e nd.
kpol,kraz,kod
kraz:=kraz+1
a[i]*a[i+1]<0
a[i]*a[i+1]>0
kod:=kod+1
-
-
-
+
+
конец
Используя сведения о ежемесячных выплатах зарплаты сотрудникам фирмы, выяснить, не оказалась ли годовая зарплата кого-либо из сотрудников ниже годового минимума, оговоренного в его контракте.
Const chel=20
Type people=array[1..chel] of string;
price=array[1..12] of word;
Var k,i,j:byte;
s,min:word;
spis,pera:people;
plata:price;
begin
writeln(’введите размер минимальной зарплаты’);
readln(min);
s:=0;
k:=0;
for i:=1 to chel do
begin
write(’имя сотрудника:’);
readln(pers[i]);
write(‘его зарплата’);
for j:=1 to 12 do
begin
writeln(j,-й месяц:’);
readln(plata[j]);
s:=s+plata[j];
end;
if s<min then
begin
k:=k+1;
spis[k]:=pers[i];
end;
s:=0;
end;
writeln(‘список работников с платой минимальной’);
for i:=1 to k do
writeln(spis[i]);
readln;
end.
начало
s:=0;
k:=0;
-
s:=s+plata[j]
s<min
Ввод plata[j]
i:=1..12
s:=0
i:=1.. k
spis[i]
-
-
+
+
+
i:=1..chel
Ввод pers[i]
k:=k+1 spis[k]:=pers[i]
конец
Элементы заданного массива x = (x1,x2,x3,…,xn) переупорядочить следующим образом: x= (xn, xn-1,…x1)
const L=20;
type massiv=[1..L] of integer;
var i:integer;
x,b:massiv;
begin
for i:=1 to L do
begin
writeln(‘x[‘,i,’]=’);
readln(x[i]);
end;
for i:=1 to L do
begin
b[i]:=x[L-i+1]
write(b[i]);
end;
начало
+
i:=1..L
Ввод x[i]
конец
b[i]:=x[L-i+1]
-
i:=1..L
b[i]
-
+
readln;e nd.
Вычислить сумму квадратов всех элементов заданного массива X(N), за исключением элементов, кратных пяти.
c
начало
onst L=20;type massiv=[1..L] of integer;
var s,i:integer;
+
i:=1..n
Ввод a[i]
-
Ввод n
a:massiv;begin
writeln(‘>n’);
readln(n);
for i=1 to n do
writeln(‘a[‘,I,’]=’);
readln(a[i]);
s:=0;
for i:=1 to n do
if a[i] mod 5<>0 then
s:=s+a[i]*a[i];
s:=0
writeln(‘сумма квадратов=’,s);readln;
e
s:=s+a[i]*a[i]
i:=1..n
s
-
+
a[i] mod 5<>0
+
конец
nd.
В заданном массиве a(n), все элементы которого попарно различны найти:
А) наибольший элемент из отрицательных;
Б) наименьший из положительных;
В) второй по величине элемент.
const L=20
type massiv=array[1..L] of integer;
var a:massiv;
k,n,i,max,max2,maxo,minp,j:integer;
begin
writeln(‘>n’); readln(n);
for i:=1 to n do
begin
writeln(‘a[‘,i,’]=’);
readln(a[i]);
end;
for i:=1 to n-1 do
if a[i]=a[i+1] then
begin
writeln(‘есть одинаковые элементы!’);
break;
end;
maxo:=a[1]; minp:=a[1]; max:=a[1]; max2:=0;
k:=0
for i:=1 to n do
begin
if a[i]>0 then
if a[i]<minp then minp:=a[i]
else
if a[i]>maxo then maxo:=a[i];
if a[i]>max then max:=a[i];
end;
i:=1; j:=1
while maxo2=0 do
begin
for i:=1 to n do
begin
if a[i]=max-j then
max2:=a[i];
k:=i;
end;
Jnc(j);
end;
if minp<=0 then writeln (‘наименьшего положительного элемента нет!)
else writeln(minp);
if maxo<=0 then writeln(‘наибольшего отрицательного элемента нет!’)
else writeln(maxo);
if max2=max then writeln(‘второго по величине элемента нет!’)
else writeln(max2);
readln; end.
начало
i:=1..n
Ввод a[i]
-
есть одинаковые элементы!
i:=1..n-1
a[i]=a[i+1]
i:=1..n
a[i]>0
a[i]<minp
a[i]>max
-
-
-
+
break
maxo:=a[1]; minp:=a[1]; max:=a[1]; max2:=0;
k:=0
a[i]>maxo
minp:=a[i]
maxo:=a[i]
max:=a[i]
+
-
-
+
+
+
-
-
+
Ввод n
конец
minp нет
max2=0
i:=1..n
a[i]=max-j
max2:=a[i]
k:=i
minp<=0
minp
maxo нет
maxo>=0
maxo
max2 нет
max2=max
max2
+
-
+
-
+
-
+
+
-
+
-
+
-
Выяснить, есть ли в заданном предложении буква «ы».
var pr: string;
i,k:integer;
b
i:=1.. length(pr)
pr[i]=’ы’
eginwriteln(‘введите предложение’);
readln(pr);
k:=0
for i:=1 to length(pr) do
if pr[i]=’ы’ then k:=1;
if k=1 then writeln(‘есть’)
конец
начало
k:=1
Ввод pr
else wrieln(‘нет’);readln;
e
есть
k=1
нет
+
-
+
-
-
nd.
1
начало
0. Выяснить, верно ли то, что в предложении имеется заданное слово S?var pr,s:string;
a,dl,I,j,k,l:integer;
b
Ввод pr,S
eginwriteln(‘введите предложение:’);
readln(pr);
writeln(‘введите слово S:’);
dl:=length(S), l:=0, j:=0
readln(S);
+
+
+
+
dl:=length(S);l:=0; j:=0;
i:=1.. a
pr[i]=S[1]
l<dl
-
-
-
-
-
-
-
a:=length(pr)-dl+1;
l:=0
for i:=1 to a dob egin
if pr[i]=S[1] then
for k:=i to (i+dl) do
if pr[k]=s[j] then
begin
l:=l+1;
k:=i to (i+dl)
j:=j+1;e nd;
if l<dl then l:=0;
end;
pr[k]=s[j]
if l>=dl then writeln(‘есть’)else writeln(‘нету’);
+
readln;e
нету
l:=l+1, j:=j+1
конец
есть
l>=dl
nd.
11. Вычеркнуть из заданного слова все буквы «а».
var sl:string;
i:integer;
begin
writeln(‘введите слово’);
readln(sl);
for i:=1 to length(sl) do
if sl[i]=’a’ then Delete(sl,i,1);
writeln(‘результат:’,sl);
readln;
e
конец
начало
Delete(sl,i,1)
i:=1..length(sl)
Ввод sl
sl
-
+
sl[i]=’a’
+
-
nd;
12. Выяснить, верно ли, что в заданном предложении есть два одинаковых соседствующих символа.
Var pr:string;
k,i,dl:integer;
begin
writeln(‘введите предложение’);
readln(pr);
dl:=length(pr);
k:=0;
for i:=1 to dl-1 do
if pr[i]=pr[i+1] then
k:=1;
начало
Ввод pr
if k=1 then writeln(‘верно’)else writeln(‘не верно’);
readln;
e
Не верно
конец
верно
k=1
dl:=length(pr), k:=0
k:=1
i:=1..dl-1
pr[i]=pr[i+1]
-
+
+
-
-
+
nd.Рекомендуемая литература:
1. Баврин, И.И. Высшая математика [Текст] /И.И. Баврин; учебник [гриф МО].-7-е изд.,- М.:Академия,2008.-616 с. - (Высш. проф. образование).
2. Безручко, В.Т. Компьютерный практикум по курсу "Информатика" [Текст]:учеб. пособие для студентов вузов/В.Т. Безручко.-3-е изд., перераб. и доп.-М.: Форум: ИНФРА-М,2009.-368 с.: ил.
3. Информатика. Общий курс [Текст]:учеб. пособие для вузов/А.Н. Гуда, М.А. Бутакова, Н.М. Нечитайло, А.В. Чернов; под ред.В.И. Колесникова; [гриф УМО].-3-е изд.-М.; Ростов н/Д: Дашков и К; Наука-Спектр,2009.-400 с.
4. Калабухова, Г.В. Компьютерный практикум по информатике. Офисные технологии [Текст]: учеб. пособие для вузов/Г.В. Калабухова, В.М. Титов; [гриф УМО].-М.: Форум: Инфра-М,2008.-336 с.: ил.
5. Канцедал, С.А. Алгоритмизация и программирование [Текст]: учеб. пособие для сред.проф. образования/С.А. Канцедал; [гриф УМО].-М.: Форум: Инфра-М, 2008.-352 с.: ил.
6. Могилев, А.В. Практикум по информатике [Текст]/А.В. Могилев, Н.И. Пак, Е.К. Хеннер; под ред. Е.К. Хеннера.-4-е изд., стереотип.- М.:Академия,2008.- 608 с.
7. Павловская, Т.А. Паскаль. Программирование на языке высокого уровня [Текст]: практикум: учеб. пособие для вузов/Т.А. Павловская; [гриф МО]. - М.; СПб.: Питер, 2007.-317 с.: ил.
8.Павловская, Т.А. Паскаль. Программирование на языке высокого уровня [Текст]: учеб. пособие для вузов/Т.А. Павловская; [гриф УМО]. - М.; СПб. [и др.]:Питер, 2009.-393 с.: ил.
9. Степанов, А.Н. Информатика [Текст]: учеб. пособие для студентов вузов/А.Н. Степанов; [гриф МО].-5-е изд.- М; СПб.[и др.]: Питер,2008.-765 с.: ил.