это быстро и бесплатно
Оформите заказ сейчас и получите скидку 100 руб.!
Ознакомительный фрагмент работы:
Министерство науки и образования Республики Казахстан
Костанайский колледж автомобильного транспорта
Отчет
По учебной практике по предмету
Основы алгоритмизации и программирования
Выполнила: учащаяся гр.2 Пр-8
Леонова Ю.
Костанай 2008
Цель: Закрепить и углубить теоретические знания языка программирования на практике, по следующим темам: линейный алгоритм, условный оператор (модуль CRT), циклы, графика, подпрограммы, множества, записи, строки, одномерные и двумерные массивы.
Задачи.1. Повторить теоретический материал.
2. Закрепить теоретический материал.
3. Решить предложенные задачи на языке Паскаль.
4. Правильно оформить предложенные задачи в отчет.
2. Обзор языка программирования.
Основные концепции языка были разработаны в 1967-1968г. профессором Николаусом Виртом (Niklaus Wirth). Стандарт языка был разработан им в 1974г. (PASCAL - User Manual and Report, ISO Pascal Standard Kathleen Jensen and Niklaus Wirth) совместно с Кетлин Йенсен (Kathleen Jensen). Паскаль достаточно быстро превратился из средства, предназначенного для обучения студентов программированию, в инструмент, который стали использовать для создания больших программных проектов.
В настоящее время действуют три стандарта языка. Первый из них - нерасширенный Паскаль (unextended Pascal) был разработан в 1983 году. Второй - Extended Pascal - содержит расширения, касающиеся модульного программирования (раздельная компиляция модулей, импорт-экспорт подпрограмм, интерфейсная часть и реализация), и дополнен рядом процедур и функций (прямой доступ к файлам, работа со строками и т д). Последний - объектный Паскаль (Object-Oriented Extensions to Pascal), в отличие от первых двух, формально не утвержден, но оформлен в виде отчета (ANSI Technical Report) в 1993г. Объектный Паскаль поддерживает классы, обладающие свойствами и методами, наследование классов, переопределение методов у потомков (полиморфизм) и ряд других атрибутов объектно-ориентированного программирования.
Алгоритмомназывается точное и понятное предписание исполнителю совершить последовательность действий направленных на решение поставленной задачи.
Линейным алгоритмом - называется вычислительный процесс, при котором все этапы решения задачи выполняются в естественном порядке следования записи этих этапов.
Циклический алгоритм - это многократное повторяемый участок вычислений.
Перечислимый тип данных задается непосредственно перечислением всех значений, которые может принимать переменная данного типа. При описании отдельные значения указываются через запятую, а весь список заключается в круглые скобки. Например, Var Season: (winter, spring, summer, autum);
Temp: (23,24,25,26);
Строковый тип:
Строка - в общем случае это последовательность символов. Строка представляет собой особую форму одномерного массива символов, которая имеет существенное отличие. Массив символов имеет фиксированную длину (количество элементов), которая определяется при описании. Строка имеет две разновидности длины:
Общую длину строки, которая характеризует размер памяти, выделяемый строке при описании. Текущую длину строки (всегда меньше или равную общей длине), которая показывает количество смысловых символов строки в каждый конкретный момент времени.
Для определения данных строкового типа в Turbo Pascal 7.0 введены стандартные типы String и PChar.
Условные операторы предназначены для изменения порядка выполнения инструкций программы, в соответствии с некоторым условием.
Оператор условияIF.
Он может принимать одну из следующих форм:
IF условие THEN оператор; (неполная форма)
Условие задаётся переменной и её соотношением с некоторой константой или значением выражения. Если условие выполняется, то будет выполнен указанный оператор.
IF условие THEN оператор 1 ELSE оператор 2; (полная форма)
Добавление к конструкции служебного слова ELSEпозволяет выполнить определенные действия в случае, когда условие не выполняются.
Операторы цикла
Для выполнения некоторого количества повторяющихся действий целесообразно использовать операторы цикла.
Циклы со счетчиком
При использовании цикла со счетчиком следует задать переменную-счетчик. При этом надо помнить, что тип такой переменной должен быть скалярным: Integer, Char, Boolean, перечисляемый тип.
For <начальное значение счетчика> To <конечное значение> Do <тело цикла>;
Счетчик меняется от меньшего к большему с шагом 1
For <начальное значение счетчика> Downto <конечное значение> Do <тело цикла>;
Счетчик меняется от большего к меньшему с шагом 1
Циклы с предусловием
Цикл с предусловием используется для программирования процессов, в которых число повторений оператора цикла не известно, а задается некоторое условие его окончания.
| Оператор цикла с предусловием |
| while <условие> do <тело цикла>; |
Выполнение оператора цикла с предусловием начинается с проверки условия, записанного после слова while. Если оно соблюдается, то выполняется <тело цикла>, а затем вновь проверяется условие и т.д. Как только на очередном шаге окажется, что условие не соблюдается, то выполнение <тела цикла> прекратится.
В теле цикла обязательно должен быть оператор, влияющий на соблюдение условия, в противном случае произойдет зацикливание.
Циклы с постусловием.
Для программной реализации циклических процессов с неизвестным числом повторений существует ещё один оператор - оператор цикла с постусловием, который имеет следующий вид:
| Оператор цикла с постусловием |
| Repeat |
| <оператор 1>; |
| <оператор 2>; |
| ... |
| <оператор n>; |
| Until <условие>; |
где Repeat (повторять), Until (до тех пор, пока).
Этот оператор аналогичен оператору цикла с предусловием, но отличается от него тем, что проверка условия производится после очередного выполнения тела цикла. Это обеспечивает его выполнение хотя бы один раз.
Тип данных - это множество величин, объединенных определенной совокупностью доступных операций.
Одномерный массив - последовательность элементов. Число, которых фиксировано и которым присвоено одно имя.
Запись - это структура данных, состоящая из фиксированного числа компьютера, называется полями записи.
Множество в языке программирования Pascal представляет собой ограниченный, неупорядоченный набор различных элементов одного типа.
Строка - это последовательность символов ASCII (таблица кода). При использование в выражениях строка заключается в апострофы.
Двумерный массив-это совокупность данных каждого значения, которых зависит от 2 чисел, которые можно рассматривать как индекс строки, и индекс столбца матрицы.
Составить программу вычисления суммы n первых членов геометрической прогрессии по любым двум ее членам, номера которых известны.
| № | Переменные | тип | Значения |
| 1 | n | integer | Количество членов геометрической прогрессии |
| 2 | b1, b2 | real | Первый и второй члены геометрической прогрессии |
| 3 | Sn | real | Сумма n членов геометрической прогрессии |
| 4 | q | real | Знаменатель прогрессии |
Program progressiy;
Var n: integer; b1, b2, Sn, q: real;
Begin
Writeln ('введите n');
Readln (n);
Writeln ('введите 2 числа');
Readln (b1, b2);
q: =b2/b1;
Sn: = (b1* (exp (n*ln (q)) - 1) / (q-1));
Writeln (Sn: 3: 0);
Readln;
End.
Составить программу, проверяющую принадлежность точки с координатами (х, у) заштрихованной области.
| № | Переменные | тип | Значения |
| 1 | x, y | Real | Координаты точек |
program grafic;
var x,y: real;
begin
writeln ('введите координаты точек');
readln (x,y);
if (sqr (x) +sqr (y) >4) and (x>=-2) and (x<=2) and (y>=-2) and (y<=2)
and ( (x>0) and (y<0) or (x<0) and (y<0) or (x<0) and (y>0))
thenwriteln ('принадлежит') elsewriteln ('не принадлежит');
readln;
end.
Долгожитель, т.е. человек, проживший более 100 лет, обратил внимание, что если к сумме квадратов цифр его возраста прибавить число его дня рождения, то получится как раз его возраст. Определить, сколько лет этому человеку.
| № | Переменные | тип | Значения |
| 1 | n | integer | Возраст человека |
| 2 | i | integer | Месяц рождения человека |
| 3 | a | integer | Единицы |
| 4 | b | integer | Остаток от деления на 100 |
| 5 | h | integer | Десятки |
| 6. | с | integer | Сотни |
| 7 | v | integer | Сумма квадратов цифр его возраста |
Programdata;
Uses crt;
Var i, n, a, b, c, v, h: integer;
Begin
Clrscr;
For n: =100 to 999 do
for i: =1 to 31 do
begin
a: =n mod 10;
b: =n mod 100;
h: =b div 10;
c: =n div 100;
v: =a*a+h*h+c*c;
if n=i+v then writeln (n,' ', i);
end;
readln;
end.
Нарисовать рисунок.
| № | Переменные | тип | Значения |
| 1 | Gd | integer | Графический драйвер |
| 2 | Gm | integer | Графический режим |
Uses graph,crt;
Var gd,gm: integer;
Begin
gd: =0; gm: =0;
Initgraph (gd, gm,' ');
setcolor (5);
Line (100, 200,250, 200);
Line (250, 200, 209,150);
Arc (157,183, 61, 195, 60);
Setfillstyle (0,3);
Floodfill (256, 200,5);
Ellipse (200, 135, 75, 233, 15, 20);
Ellipse (200, 135, 303, 75, 15, 20);
Ellipse (208, 139, 303, 91, 15, 24);
setfillstyle (1,8);
floodfill (220,145,5);
Arc (120, 200, 180, 0,10);
Setfillstyle (1,1);
Floodfill (125, 202,5);
Arc (120, 200, 180, 0, 15);
Arc (130, 200, 260, 0, 15);
Arc (200, 200, 180, 0,10);
setfillstyle (1,1);
Floodfill (125, 202,5);
Arc (120, 200, 180, 0, 15);
Arc (130, 200, 260, 0, 15);
Arc (200, 200, 180, 0,10);
Setfillstyle (1,1);
Floodfill (200, 202,5);
Arc (200, 200, 180, 0, 15);
Arc (210, 200, 260, 0, 15);
Line (150, 90, 150, 124);
Line (155, 90, 155, 123);
Line (150, 90, 155, 90);
Setfillstyle (1,1);
Floodfill (153, 100,5);
Arc (144, 83, 41, 310,10);
Arc (158, 83, 259, 126,10);
Setfillstyle (1,1);
Floodfill (144, 83,5);
Circle (144, 83,5);
Setfillstyle (1,2);
Floodfill (144, 83,5);
Circle (158, 83,5);
Setfillstyle (1,2);
Floodfill (158, 83,5);
Circle (255, 200,5);
Setfillstyle (1,4);
Floodfill (255, 200,5);
Setfillstyle (1,8);
Floodfill (200, 150,5);
Circle (215, 177,7);
Setfillstyle (1,9);
Floodfill (215, 177,5);
Setfillstyle (1, 14);
floodfill (121, 200,5);
readkey;
closegraph;
end.
Даны первый член и разность арифметической прогрессии. Написать рекурсивную функцию для нахождения суммы n первых членов прогрессии.
| № | Переменные | Тип | Значение |
| 1 | Sn | Real | Сумма n первых членов арифметической прогрессии |
| 2 | n | integer | Количество членов арифметической прогрессии |
| 3 | A1,A2 | Real | Первый и второй члены арифметической прогрессии |
| 4 | d | Real | Разность прогрессии |
Program recursiy;
var A1,d,A2,Sn: real; n: integer;
function prog (n: integer): integer;
begin
if n=1 then prog: =A1 else prog: =A1+d* (n-1) +prog (n-1);
end;
begin
Writeln ('введите n');
readln (n);
writeln ('введите первый и 2-ой член арифметической прогрессии');
readln (A1, A2);
d: =A2-A1;
Sn: =prog (n);
writeln (Sn);
readln;
end.
Дан двумерный массив. Удалить среднюю строку (строки).
| № | Переменные | Тип | Значение |
| 1 | a | array | заполнение двумерного массива |
| 2 | i,j | integer | Параметры цикла |
| 3 | n, m | integer | Размерность массива |
| 4 | k | integer | Количество элементов до среднего |
Var a: array [1. .100,1. .100] of integer;
i,j,m,n,k: integer;
begin
writeln ('Введите разм. мас');
readln (n,m);
randomize;
for i: =1 to n do
begin
for j: =1 to m do
begin
a [i,j]: =random (100);
write (a [i,j]: 3);
end;
writeln;
end;
writeln ('После удаления');
if n mod 2<>0 then begin k: =n div 2+1;
For i: =k to n-1 do
for j: =1 to m do
a [i,j]: =a [i+1,j] ;
for i: =1 to n-1 do
begin
for j: =1 to m do
write (a [i,j]: 3);
writeln;
end;
end
else
if n mod 2=0 then begin k: =n div 2;
For i: =k to n-2 do
for j: =1 to m do
a [i,j]: =a [i+2,j] ;
for i: =1 to n-2 do
begin
for j: =1 to m do
write (a [i,j]: 3);
writeln;
end; end;
readln;
end.
Дан одномерный массив целых чисел произвольной длины. Заполните массив случайными числами до 100. Используя, оператор выбора, создайте меню, в котором при нажатии на клавишу производятся следующие действия:
1 - вычислить среднее геометрическое четных элементов массива;
2 - найти количество делителей максимального числа;
3 - вставить в массив два элемента с данными значениями: первый после минимального элемента, второй - перед минимальным элементом.
| № | Переменные | Тип | Значение |
| 1 | a | array | Заполнение одномерного массива |
| 2 | Max | integer | Максимальный элемент |
| 3 | Min | integer | Минимальный элемент |
| 4 | i | integer | Параметр цикла |
| 5 | N | integer | Размерность массива |
| 6 | k | integer | Количество делителей |
| 7 | m | integer | Выбор действия |
| 8 | s | Real | среднее геометрическое четных элементов массива |
| 9 | v, c | integer | два элемента вставляемые в массив |
| 10 | k1 | integer | Номер позиции перед (после) которой вставляем элемент |
| 11 | f | integer | Количество элементов, которые делятся на 2 без остатка |
| 12 | d | integer | Произведение всех элементов, которые делятся на 2 без остатка |
uses crt;
Var a: array [1. .100] of integer;
n, i,m,min,max,k,f,d,k1,c,v: integer;
S: real;
begin
clrscr;
randomize;
writeln ('введите разм. массива');
readln (n);
for i: =1 to n do
begin
a [i]: =random (101);
write (a [i]: 3);
end;
writeln;
writeln ('введите номер операции программы');
writeln ('1-вычислить среднее гео-ое четных эл. мас');
writeln ('2-найти ко-во делителей max числа');
writeln ('3-вставить в массив: 1-ый после min эл,2-ой перед min эл');
readln (m);
case m of
1: begin f: =0;
for i: =1 to n do
begin
if a [i] mod 2=0 then f: =f+1
end; writeln (f);
d: =1; s: =0;
for i: =1 to n do
begin
if a [i] mod 2=0 then d: =d*a [i] ;
end;
writeln (d);
if d=0 then s: =0 else s: =exp (1/f * ln (d));
writeln ('ср. геом=',S: 3: 3);
readln;
end;
2: begin
max: =a [1] ;
for i: =1 to n do
if a [i] >max then begin max: =a [i] ;
end;
for i: =1 to max do
if max mod i=0 then k: =k+1;
writeln ('ко-во делителей max числа',k);
readln;
end;
3: begin
writeln ('введите 2 числа');
readln (v,c);
min: =a [1] ;
k1: =1;
for i: =1 to n do
if a [i] <min then begin min: =a [i] ; k1: =i; end;
writeln;
for i: =n downto k1 do
a [i+1]: =a [i] ;
a [k1]: =v;
for i: =n+1 downto k1+1 do
a [i+1]: =a [i] ;
a [k1+2]: =c;
for i: =1 to n+2 do
write (a [i]: 3);
readln;
end;
end;
end.
Дан массив записей, содержащий сведения о расписании поездов: направление; фамилия, имя, отчество машиниста; время отправления поезда. Необходимо осуществить:
1. заполнение массива данными;
2. поиск поездов по фамилии, имени, отчеству машиниста;
3. редактирование времени отправления поезда;
4. удаление поездов по полю "Направление";
5. сортировку по полю "Направление".
| № | Переменные | Тип | Значение |
| 1 | A | array | Заполнение массива |
| 2 | N | integer | Количество поездов |
| 3 | Nap | string | Поле направления |
| 4 | fio | String | Поле фамилии имя отчества |
| 5 | vy | String | Поле время отправления |
| 6 | i, j | integer | Параметры цикла |
| 7 | q | integer | Выбор действия |
| 8 | s1 | string | Новое время |
| 9 | x | Rs | Дополнительная переменная для сортировки |
| 10 | s | String | Время |
| 11 | w | String | Фамилия, Имя, Отчество машиниста |
| 12 | r | String | Направление поезда, которое удаляем |
| 13 | k | Integer | Номер удаляемой записи |
| 14 | f | integer | флажок |
type RS=Record
Nap: string [40] ;
fio: string [40] ;
vy: string [10] ;
end;
var a: array [1. .50] of RS;
n, i,j,q,k,f: integer; s,s1,w,r: string; x: RS;
begin
Writeln ('введите kol poezdov');
readln (n);
for i: =1 to n do
begin
writeln ('введите Направление',' ', i,' ','поезда');
readln (a [i]. Nap);
writeln ('введите Ф. И.О. ',' ', i,' ','машиниста');
readln (a [i]. fio);
writeln ('введите время',' ', i,' ','отправления');
readln (a [i]. vy);
end;
writeln ('введите номер операции программы');
writeln ('1-поиск поездов по фамилии, имени, отчеству машиниста');
writeln ('2-редактирование времени отправления поезда');
writeln ('3-удаление поездов по полю <Направление>');
writeln ('4-сортировку по полю <Направление>');
readln (q);
case q of
1: begin
writeln ('ведите Ф. И.О. машиниста ');
readln (w);
f: =0;
for i: =1 to n do
begin
if a [i]. fio=w then begin
writeln ('Направление ',a [i]. Nap,' ','время ',a [i]. vy);
f: =1; end;
if f=0 then writeln ('таких нет');
end; end;
2: begin
writeln ('введите время которое вы хотите поменять');
readln (s);
writeln ('введите время на которое вы хотите поменять');
readln (s1);
for i: =1 to n do begin
if a [i]. vy=s then a [i]. vy: =s1;
end;
for i: =1 to n do
begin
writeln (i,’ ’,'машинист ',a [i]. fio,' ','Направление ',a [i]. Nap);
writeln ('время ',a [i]. vy);
writeln;
end; end;
3: begin
writeln ('введите Направление поезда, которое вы хотите удалить');
readln (r);
for i: =1 to n do begin
if a [i]. Nap=r then
k: =i;
for i: =1 to n do
if i<>k then
writeln (i,’ ’,'машинист ',a [i]. fio,' ','Направление ',a [i]. Nap);
writeln ('время ',a [i]. vy);
end;
end;
4: begin
for i: =1 to n-1 do
for j: =1 to n do
if a [i]. Nap>a [j]. Nap then
begin
x: =a [i] ;
a [i]: =a [j] ;
a [j]: =x;
end;
for i: =1 to n do
begin
writeln (i,’ ’,'машинист ',a [i]. fio,' ','Направление ',a [i]. Nap);
writeln ('время ',a [i]. vy);
end;
end;
end;
readln;
end.
Написать программу решения ребуса VOLVO+FIAT=MOTOR.
| № | Переменные | Тип | Значение |
| 1 | v, o, l, f, i, a, t, m, r | 0. .9 | Параметры цикла |
| 2 | dig | 0. .9 | Множество цифр |
| 3 | Sum | longint | Сумма VOLVO+FIAT |
| 4 | motor | longint | MOTOR |
Uses crt;
var
v, o, l, f, i, a, t, m, r: 0. .9;
dig: set of 0. .9;
sum, motor: longint;
begin
clrscr;
for v: =0 to 9 do begin
include (dig,v);
for o: =0 to 9 do
if not (o in dig) then begin
include (dig,o);
for l: =0 to 9 do
if not (l in dig) then begin
include (dig, l);
for f: =0 to 9 do
if not (f in dig) then begin
include (dig,f);
for i: =0 to 9 do
if not (i in dig) then begin
include (dig, i);
for a: =0 to 9 do
if not (a in dig) then begin
include (dig,a);
for t: =0 to 9 do
if not (t in dig) then begin
include (dig,t);
for m: = 0 to 9 do
if not (m in dig) then begin
include (dig,m);
for r: =0 to 9 do
if not (r in dig) then begin
include (dig,r);
Sum: =v*10000 + (o+f) *1000 + (l+i) *100 + (v+t) *10 + (o+t);
Motor: =m*10000+o*1000+t*100+o*10+r;
if sum = motor then
writeln (v,o,l,v,o,'+',f, i,a,t,'=', m,o,t,o,r);
exclude (dig,r)
end;
exclude (dig,m);
end;
exclude (dig,t);
end;
exclude (dig,a);
end;
exclude (dig, i);
end;
exclude (dig,f);
end;
exclude (dig,l);
end;
exclude (dig,o);
end;
exclude (dig,v);
end;
readln;
end.
Дана строка символов s1, s2, …, sn. Известно, что среди s1, …, sn есть, по крайней мере одна запятая. Найти натуральное i такое, что si- последняя по порядку запятая.
| № | Переменные | Тип | Значение |
| 1 | v | char | запятая |
| 2 | s | string | Строка |
| 3 | i | integer | Параметр цикла |
| 4 | n | integer | Номер позиции |
uses crt;
var v: char;
s: string;
i,n: integer;
begin clrscr;
writeln ('Vvedite stroky');
readln (s);
begin v: =',';
for i: =1 to length (s) do
if s [i] =v then n: =i;
end;
writeln (n);
readln;
end.
Я закрепила теоретические знания языка программирования на практике. Практические занятия используются для тщательного изучения содержательно-методических принципов построения программы, содержания и структуры прикладного программного обеспечения, обсуждения методики изучения отдельных тем курса с различными вариантами технического и методического обеспечения.
1. Немнюгин С.А. TurboPASCAL С-П Изд-во Питер 2000.
2. Фаронов В.В. TurboPascal 7.0.М. "Нолидж", 1999
3. Шаньгин В.Ф., Поддубная Л., серия ПО ЭВМ кн.7, М, ВШ, 1991
4. Васюкова Р.Д., Практикум по основам программирования, Язык ПАСКАЛЬ, М, ВШ, 1991
5. Новичков В.С., Алгоритмические языки в техникуме, ПАСКАЛЬ, М, 1990
Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников
Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.
Цены ниже, чем в агентствах и у конкурентов
Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит
Бесплатные доработки и консультации
Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки
Гарантируем возврат
Если работа вас не устроит – мы вернем 100% суммы заказа
Техподдержка 7 дней в неделю
Наши менеджеры всегда на связи и оперативно решат любую проблему
Строгий отбор экспертов
К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»
Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован
Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн
Требуется разобрать ст. 135 Налогового кодекса по составу напогового...
Решение задач, Налоговое право
Срок сдачи к 5 дек.
Школьный кабинет химии и его роль в химико-образовательном процессе
Курсовая, Методика преподавания химии
Срок сдачи к 26 дек.
Реферат по теме «общественное мнение как объект манипулятивного воздействий. интерпретация общественного мнения по п. бурдьё»
Реферат, Социология
Срок сдачи к 9 дек.
Выполнить курсовую работу. Образовательные стандарты и программы. Е-01220
Курсовая, Английский язык
Срок сдачи к 10 дек.
Изложение темы: экзистенциализм. основные идеи с. кьеркегора.
Реферат, Философия
Срок сдачи к 12 дек.
Заполните форму и узнайте цену на индивидуальную работу!