А. В. Розина программирование на паскале методическое пособие
Вид материала | Методическое пособие |
- Тема урока: Программирование ветвлений на Паскале, 61.32kb.
- Программирование ветвлений на Паскале Оператор ветвления на Паскале, 166.05kb.
- Программа элективного курса «Алгоритмизация и программирование», 95.38kb.
- Контрольная работа по темам «Линейное программирование на Паскале» и«Условный оператор», 4.21kb.
- Методическое пособие по выполнению курсовых работ по дисциплине, 450.1kb.
- В. И. Эльманович нейролингвистическое программирование методическое пособие, 781.36kb.
- В. И. Эльманович нейролингвистическое программирование методическое пособие, 924.82kb.
- В. А. Жернов апитерапия учебно-методическое пособие, 443.6kb.
- Тема урока: Программирование циклов на Паскале (9 класс, базовый уровень), 46.43kb.
- Кемеровский Государственный Университет; Д. Н. Долганов. Белово, 2005. 55. методическое, 704.81kb.
Оператор выбора CASE
- Вводится натуральное число, не превосходящее 100. Напечатать, в каком диапазоне оно находится. Диапазон – это интервалы от 1 до 10, от 11 до 20, от 21 до 30 ... от 91 до 100.
- Составьте программу для вычисления числа дней в месяце по введенному номеру месяца.
- Составьте программу, которая по введенному возрасту определит, кто вы: дошкольник, школьник, студент, работающий или пенсионер.
Примеры программ
Задача 3.
program kto;
var i:integer;
begin
writeln ( 'сколько вам лет '); readln (i);
case i of
1..6 : writeln ('вы дошкольник');
7..17 : writeln ('вы школьник');
18..22 : writeln ('вы студент');
23..60 : writeln ('вы рабочий');
61..100 : writeln ('вы пенсионер')
else writeln ('вы долгожитель');
end;
end.
Цикл по счетчику
- Составьте программу вычисления квадратов чисел от 1 до 20
- Составьте программу вычисления суммы квадратов чисел от 1 до 20. Предусмотреть 2 варианта: с печатью промежуточных сумм и с печатью только итоговой суммы
- Среди введенных 10 чисел подсчитать, сколько положительных, сколько отрицательных и сколько нулей было введено.
- В первый час работник делает 12 деталей, во второй на 2 больше и т.д. Сколько сделает деталей работник за 8 часов?
- Вычислить факториал числа A. (A! = 1 2 3 ... A)
- Вычислить сумму 1 - 2/3 + 3/4 ... - 10/11
- Вычислить x + x2/3 + x3/5 + ...+ x8/15
- Написать программу вычисления значения выражения
y = (( . . . ( 202 - 192 )2 - . . . – 12 )2
- Вывести на экран температуру по Цельсию и рядом значение по Фаренгейту для значений от 15С до 30С. (F=C1.8+32)
- Найти все симметричные четырехзначные числа. Пример: 7667, 1331.
- Составьте программу определения совершенного числа. Число совершенное, если оно равно сумме своих делителей, исключая себя. (6=1+2+3)
- Составьте программу определения всех совершенных чисел от 1 до N.
- Напечатать все двузначные числа, сумма цифр которых равна 12.
- Напечатать все трехзначные числа, сумма цифр которых равна их произведению
- Напечатать все четырехзначные числа, у которых сумма крайних цифр которых равна сумме средних цифр, а само число делится на 6 и 27.
- В бригаде, работающей на уборке сена, имеется N косилок. Первая из них работала M часов, а каждая следующая на 10 минут больше предыдущей. Сколько часов работала вся бригада.
- Подсчитать сумму всех двузначных чисел.
Примеры программ
Задача 1.
program virag;
var i, y : integer;
begin
y := sqr (20);
for i := 19 downto 1 do y := sqr (y-sqr ( i ) );
writeln ( ' y= ', y);
end.
Задача 11.
program sov;
var k,i,j,n,s,p : integer;
begin
write ( 'введите число' ) ; read (n );
for k := 1 to n do
begin
for i := 1 to k do
begin
s := 0; p := 1;
for j := 1 to i-1 do
if i mod j = 0 then S :=S + j;
if s=i then p := 1 else p := 0;
end;
if P=1 then writeln ( i );
end;
end.
Задача 14.
program chislo;
var i,j,k : integer;
begin
for i := 1 to 9 do
for j := 0 to 9 do
for k := 0 to 9 do
if ( i*j*k = i+j+k ) then writeln ( i*100+j*10+k );
end.
Цикл по условию
- Дана последовательность 1, 1+1/2, 1+1/2+1/3, 1+1/2+1/3+1/4, ... Составьте программу, вычисляющую первый член последовательности, превосходящий число А.
- Дано действительное число x. Вычислить с заданной точностью e частичную сумму ряда
sin x = x/1! - x3/3! + x5/5! – x7/7!+ ... (-1)n x2n+1 /(2n+1)! +...
Нужное приближение считается полученным, если очередное слагаемое оказалось по модулю меньше e
- Написать программу подсчета количества цифр, входящих в исходный текст. Текст – последовательность символов, ввод которой заканчивается нажатием клавиши ENTER (код ASCII 13)
- Из данного натурального числа удалить все цифры R.
- На склад поступает однородный груз на машинах различной грузоподъемности. На компьютер, управляющий работой склада, поступает информация о весе груза очередной машины. Составьте программу подсчета количества машин, прибывших на склад до его заполнения. Известно, что вместимость склада не более R тонн.
- Во введенном числе подсчитать сумму цифр
- Найти старшую цифру числа
- Приписать по 1 в начало и в конец записи числа n. Например, из числа 380 получится 13801.
- Ивана Александровича Хлестакова пригласили управлять департаментом. В 1-ый день к нему прислали 1000 курьеров, а в каждый последующий в 2 раза больше, чем в предыдущий. Хлестаков согласился, когда сразу приехало более 300 000 курьеров. На который день согласился Хлестаков.
- Составить программу, проверяющую, является ли заданное натуральное число полиндромом (десятичная запись читается одинаково слева направо и справа налево)
Примеры программ
Задача 6.
program chislo;
var m,n : longint;
k: integer;
begin
writeln ( 'введите натуральное число ');
readln (n); m:=n;
k := 0 ;
while m <> 0 do
begin
k := k+ m mod 10;
m := m div 10;
end;
writeln ( ' в числе ' , n , ' сумма цифр = ' , k );
end.
Задача 9.
program hlest;
var i,s:real;
begin
i:=1; s:=1000;
while s<300000 do begin
writeln(s,' ',i);
s:=2*s; i:=i+1; end;
write (i);
end.
Переменные типа СНАR
- Составьте программу печати кода символа, введенного с клавиатуры.
- Составьте программу печати символа по введенному коду.
- Составьте программу, работающую как ручной калькулятор. Исходные данные: операнд1 знак операнд2, где знак – это + - * /
- Напечатать "Да", если вводится символ "Y" или "y" и напечатать "Нет", если вводится символ "N" или "n".
- Среди введенных 10 символов подсчитать, сколько было введено букв R.
- Составьте программу печати кодов символов всех букв латинского алфавита.
- Написать программу вывода последовательности символов AABABCABCD...AB...XYZ.
- Написать программу вывода последовательности символов:
- ZYYXXX . . . AA ...AAA
- Проанализировать введенный символ. Если это не цифра, то сообщить об этом. Если цифра, то увеличить ее значение в 2 раза и вывести на экран.
Примеры программ
Задача 7.
program p_sim;
var i, j : char;
begin
for i := 'a' to 'z' do
for j := 'a' to i do
write ( j) ;
end.
Строки
- Во введенном слове заменить первый и последний символы на *
- Во введенном слове заменить первый символ на последний
- Удалить из строки все восклицательные знаки, стоящие в конце строки.
- Сформировать строку, состоящую из N звездочек.
- К слову присоединить столько восклицательных знаков, сколько в ней имеется символов.
- В строке вставить пробел после каждого символа
- Удвоить все символы А в слове
- Перевернуть слово
- Определить количество гласных в тексте (русский алфавит)
- Во введенном выражении заменить SQR на EXP
- Подсчитать, сколько раз в строке встретится заданное слово
- Во введенной строке вставить через 2 символа КУ
- Найти сумму всех чисел строки
- Подсчитать сумму цифр в строке, встречающихся перед !
- Заданы фамилия, имя, отчество, разделенные пробелом. Напечатать его фамилию и инициалы.
- Вычеркните из слова все буквы, совпадающие с его последней буквой.
- Вычеркните из слова Х те буквы, которые встречаются в слове Z
- Удалить из строки все пробелы.
- Удалить из строки повторяющиеся подряд символы
- Дан текст, в котором слова разделены пробелами. Сколько слов в тексте? Найти самое длинное слово.
- Написать программу вычисления суммы мест, на которых в слове стоит буква "Р" .
Примеры программ
Задача 3.
PROGRAM Q1;
VAR ST:STRING[10];
I : BYTE;
BEGIN
WRITE('WWEDITE SROKY'); READLN(ST);
I:=10;
WHILE(ST[I]='!')AND(I<>0) DO
BEGIN
I:=I-1;
ST[0] := CHR(I);
END;
WRITELN(ST);
END.
Задача 4.
PROGRAM STARS;
VAR A:STRING;
I,N:INTEGER;
BEGIN
WRITE('WWEDITE CHISLO *'); READLN(N);
A:='';
FOR I:=1 TO N DO A:=A+'*';
WRITELN(A);
END.
Задача 5.
PROGRAM SINGTH;
VAR A:STRING;
I:INTEGER;
BEGIN
WRITE('WWEDITE STROKY'); READLN(A);
FOR I:=1 TO LENGTH(A) DO A:=A+'!';
WRITELN(A);
END.
Задача 6.
PROGRAM PROBEL;
VAR A,A1:STRING;
I:INTEGER;
BEGIN
WRITE('WWEDITE STROKY'); READLN(A);
A1:='';
FOR I:=1 TO LENGTH(A) DO A1:=A1+COPY(A,I,1)+' ';
WRITELN(A1);
END.
Задача 8.
PROGRAM SS;
VAR A,A1:STRING;
I,L:INTEGER;
BEGIN
WRITE('WWEDITE STROKY'); READLN(A);
A1:=''; L:=LENGTH(A); WRITELN(L);
FOR I:=1 TO L DO
BEGIN A1:=A1+COPY(A,LENGTH(A)-I+1,1);
END;
WRITELN(A1);
END.
Задача 9.
PROGRAM STARS;
CONST C='АОУЭЫЯЮИЕаоуыэяюеи' ;
VAR A:STRING[100];
K,N :INTEGER;
BEGIN
WRITE('WWEDITE STROKY'); READLN(A);
N:=0;
FOR K:=1 TO LENGTH(A) DO
IF POS(A[K],C)>0 THEN N:=N+1;
WRITELN(N);
END.
10.
PROGRAM KONTEXT;
VAR A,B:STRING[40];
k: INTEGER;
BEGIN
WRITE('WWEDITE STROKY'); READLN(A);
B:=A;
REPEAT K:=POS('SQR',B);
IF K>0 THEN
BEGIN
DELETE(B,K,3); INSERT('EXP',B,K);
END;
UNTIL K=0;
WRITELN(B);
END.
Задача 11.
PROGRAM SS;
VAR STR:STRING[40];
SLOVO:STRING;
N,K:INTEGER;
BEGIN
WRITE('WWEDITE STROKY'); READLN(STR);
WRITE('WWEDITE SLOVO'); READLN(SLOVO);
N:=0;
REPEAT K:=POS(SLOVO,STR);
IF K>0 THEN
BEGIN
DELETE(STR,K,LENGTH(SLOVO)); N:=N+1;
END;
UNTIL K=0;
WRITELN(N);
END.
Задача 13
PROGRAM KUKU;
VAR STR:STRING;
N,K:INTEGER;
BEGIN
WRITE('WWEDITE STROKY'); READLN(STR);
N:=1; K:= LENGTH (STR);
WHILE (N
BEGIN INSERT ('КУ',STR,2*N+1); N:=N+2; END;
WRITELN(STR);
END.
Массивы
- Таблица содержит 18 выигрышных номеров. Проверьте, является ли билет с номером N выигрышным.
- С 8 до 20 часов температура воздуха измерялась ежечасно. Известно, что она понижалась в этот период времени. Определить, в котором часу впервые была отмечена отрицательная температура.
- Написать программу анализа значений температуры больного за сутки: минимальное, максимальное значения, среднюю арифметическую. Замеры температуры производились каждые 4 часа.
- Сложить элементы, стоящие между максимальным и минимальным элементами массива.
- Поменять местами максимальный и минимальный элементы в массиве.
- В массиве из 80 элементов найти все локальные максимумы (минимумы). Найти минимальный (максимальный) из локальных максимумов (минимумов). Элемент является локальным максимумом (минимумом), если он больше (меньше) своих соседей.
- Введите массив из 5 фамилий и выведите на экран те из них, которые начинаются с определенной буквы, которая вводится с клавиатуры
- Заполнить массив из 20 элементов следующим образом: 1,3,9,27...
- Сколько раз в массиве встречается заданное значение
- Удалить из массива элемент, стоящий на S – ом месте.
- Задан массив из 10 элементов. Сформировать из него новый массив, в который войдут
- элементы, стоящие на четных местах
- элементы, значения которых – четные числа
- элементы, значения которых превосходят S
- Вставить в массив новый элемент в s-ю позицию.
- В массиве определить, имеются ли элементы с одинаковыми значениями.
- Даны список футбольных команд высшей лиги России и количество очков, набравших каждой командой в чемпионате. Известно, что нет команд с равным количеством очков. Какая команда стала чемпионом? Составьте список команд в порядке возрастания мест.
- Задан список городов России. Напечатайте самое длинное (короткое) название. Все названия городов из 8 букв.
- Дан входной упорядоченный массив А длиной N. В массив С переписать неповторяющиеся элементы из А
- Реализовать операции объединения, пересечения и объединения без пересечения 2-х массивов размерности n и m.
Объединение двух массивов – это третий массив, в который входят все элементы первого и второго массива, причем только один раз.
Пересечение двух массивов – это третий массив, в который входят все совпадающие элементы первого и второго массива.
Объединение без пересечения двух массивов – это третий массив, в который входят все несовпадающие элементы первого и второго массива
Массив, не содержащий ни одного элемента, называется пустым.
Примеры программ
Задача 6
program lokal;
var a,b:array[1..80]of integer;
i,g,j,m,n:integer;
begin
randomize;
for i:=1 to 80 do
a[i]:=round(random(1000));
for i:=1 to 80 do begin
write(a[i],' ');
if (i mod 10)=0 then writeln;end;
g:=1;
for i:=1 to 78 do
if (a[i]>a[i+1])and (a[i+2]>a[i+1])then begin b[g]:=a[i+1];g:=g+1;end;
writeln('Локальные минимумы:');
for j:=1 to g-1 do begin
write(b[j],' ');
if (j mod 10)=0 then writeln;end;
m:=b[1];
for j:=1 to g-1 do
if m
writeln('Больший из локальных ',m);
readln;
end.
Задача 17
program mnoj;
var a,b:array [1..100] of integer;
c: array [1..200] of integer;
i,j,k,n,m:integer;
l:boolean;
begin
writeln('введите размерность первого массива'); readln(m);
writeln('введите размерность второго массива'); readln(n);
writeln('ведите первый массив');
for i:=1 to m do read (a[i]);
writeln('ведите второй массив');
for i:=1 to n do read (b[i]);
{пересечение}
k:=1;
for i:=1 to m do
for j:=1 to n do
if a[i]=b[j] then begin c[k]:=a[i]; k:=k+1;end;
if k=1 then write ('пересечение пусто') else begin
write('пересечение ');
for i:=1 to k-1 do write (c[i],' '); end;
writeln;
{объединение}
l:=true; k:=m+1;
for i:=1 to m do c[i]:=a[i];
for j:=1 to n do begin
for i:=1 to m do
if b[j]=a[i] then l:=false;
if l then begin c[k]:=b[j]; k:=k+1; end;l:=true; end;
write('объединение ');
for i:=1 to k-1 do write (c[i],' ');
writeln;
{ объединение без пересечения}
l:=true; k:=1;
for j:=1 to n do begin
for i:=1 to m do
if b[j]=a[i] then l:=false;
if l then begin c[k]:=b[j]; k:=k+1; end;l:=true; end;
for i:=1 to m do begin
for j:=1 to n do
if a[i]=b[j] then l:=false;
if l then begin c[k]:=a[i]; k:=k+1; end;l:=true; end;
if k=1 then write ('объединение без пересечения пусто') else begin
write('объединение без пересечения ');
for i:=1 to k-1 do write (c[i],' '); end;
writeln;
end.
Процедуры
1. По введенным оценкам (не более 6) по литературе, математике, физике и химии у N (не более 40) учащихся вывести средние
program class;
var fam : array [1..40] of string;
lit,mat,fiz,chem : array [1..40,1..6] of integer;
i,j,N:integer;
procedure wwod (var a: matrix;s:string;k:integer);
var i,j:integer;
begin
writeln('сколько оценок по ',s,' у ',fam[k]);
readln(i);
for j:=1 to i do begin
writeln('введите оценки по ',s);readln(a[k,j]);end;
end;
procedure sred(var a:matrix; k:integer);
var i,j,s:integer;
e:real;
begin
S:=0; i:=0;
for J:=1 to 5 do
if a[k,j]<>0 then begin
i:=i+1; s:=s+a[k,j]; end;
if i<>0 then e:=s/i;a[k,6]:=round(e); end;
begin
writeln('введите КОЛИЧЕСТВО учеников'); readln(N);
for i:=1 to n do begin
writeln('введите фамилию ',i,' -го ученика'); readln(fam[i]); end;
for i:=1 to n do
for j:=1 to 6 do begin
lit[i,j]:=0; mat[i,j]:=0; fiz[i,j]:=0; chem[i,j]:=0; end;
for i:=1 to n do begin
wwod(lit,'литературе',i);wwod(mat,'математике',i);
wwod(fiz,'физике',i);
wwod(chem,'химии',i); end;
for i:=1 to n do begin
sred(lit,i);
sred(mat,i);
sred(fiz,i);
sred(chem,i); end;
writeln(' лит мат физ хим');
for i:=1 to n do
writeln(fam[i],' ',lit[i,6],' ',mat[i,6],' ',fiz[i,6],' ',
chem[i,6]);
end.
Альбина Владимировна Розина
ПРОГРАММИРОВАНИЕ НА ПАСКАЛЕ
Методическое пособие
300000>