Автор: Пользователь скрыл имя, 02 Марта 2013 в 01:57, контрольная работа
З моменту першої реалізації мови Pascal технології програмування зробили величезний крок вперед. І, незважаючи на те, що Pascal теж розвивався, його останній версії, випущеній фірмою Borland у 1990 році, істотно бракує можливостей, властивих іншим сучасним мовам програмування. В середовищі Delphi використовується оновлений варіант цієї популярної мови. Зміни торкнулись, перш за все, об’єктно- орієнтованої частини Pascal, однак, здавалося б цілком завершені інструменти структурного і модульного програмування також придбали деякі нові особливості.
Вступ 3
ТЕОРЕТИЧНА ЧАСТИНА. 4
1. Програмування в Delphi. 4
2. Основні елементи програми 4
3. Основна частина програми 5
4. Модулі 7
5. Проект 10
6. Turbo Pascal та Borland Pascal 10
7. Алфавіт мови 11
8. Типи даних. 12
9. Особливості архітектури програми в ос windows 14
ПРАКТИЧНА ЧАСТИНА 16
Завдання 1 16
Блок-схема 16
Код програми 17
Скріншоти програми 18
Завдання 2 18
Блок-схема 19
Код програми 19
Скріншоти програми 20
Завдання 3 21
Блок-схема 22
Код програми 22
Скріншот програми 24
Завдання 4 24
Блок-схема 25
Код програми 25
Скріншот програми 27
Завдання 5 27
Блок-схема 28
Код програми 28
Скріншоти програми 30
Завдання 6 30
Блок-схема 31
Код програми 31
Скріншоти програми 33
Завдання 7 33
Блок-схема 34
Код програми 34
Скріншоти програми 37
Висновок 38
Література 39
Константи – це величини, що не змінюють своїх значень в ході виконання програми. Змінні – об'єкти, що можуть приймати різні значення. Але це не означає, що змінна обов'язково повинна прийняти інше значення. Далі вважатимемо, основним об'єктом програми є змінна.
Скалярні величини являють
собою прості значення. Тобто, скалярний
об'єкт може приймати в будь-який
момент виконання програми лише одне
якесь значення. Структуровані величини
складаються з декількох
Стандартні величини реалізовані в трансляторі мови ПАСКАЛЬ, тому їх можна використовувати без додаткового оголошення. Крім того, користувач може оголошувати і використовувати власні величини, які називаються даними користувача.
Тип даних визначає множину значень, що може приймати змінна. Кожній змінній в програмі необхідно задати один, і тільки один тип даних. Хоча ПАСКАЛЬ може опрацьовувати достатньо складні типи даних, усі вони складаються з простих (неструктурованих) типів.
Вивчення типів даних розпочнемо зі скалярних стандартних типів даних. Їх в ПАСКАЛІ є чотири: integer (тип цілих чисел) , real (тип дійсних чисел), char (літерний тип) та boolean (логічний тип).
У ТУРБО ПАСКАЛЬ існує п'ять вбудованих цілочисельних типів: Shortint (коротке ціле), Integer (ціле), Longint (довге ціле), Byte (довжиною в байт) і Word (довжиною в слово). Кожний тип визначає певну підмножину цілих чисел, як це показано таблиці 4.1.
Таблиця 1. Вбудовані цілочисельні типи
Тип |
Діапазон |
Формат |
Shortint |
-128 .. 127 |
8 бітів із знаком |
Integer |
-32768 .. 32767 |
16 бітів із знаком |
Longint |
-2147483648 .. 2147483647 |
32 біта зі знаком |
Byte |
0 .. 255 |
|
8 бітів без знака |
Word | |
0 .. 65535 |
16 бітів без знака |
До дійсного типу відноситься підмножина дійсних чисел, що можуть бути подані у форматі з плаваючою точкою з фіксованим числом цифр.
Є п'ять видів дійсних типів: Real, Single, Double, Extended і Comp.
Дійсні типи розрізняються діапазоном і точністю пов'язаних з ними значень. Основним є перший тип, тому детально зупинимось саме на його вивченні.
Перш за все, дані дійсного типу можуть подаватись у двох формах: з фіксованою точкою та плаваючою точкою (експоненційній формі). Перша форма подання чисел більш звична. В ній явно задана ціла та дробова частина, які відокремлені точкою Так, числа 2.729, -89.084109, 134 подані у формі з фіксованою точкою.
Експоненційна форма подає
число у так званому
Таблиця 2. Запис дійсних чисел
Форма з фіксованою точкою |
Експоненційна форма |
1.4529 |
1.4529000000Е+00 |
0.000029 |
2.9000000000Е-05 |
39870 |
3.9870000000Е+04 |
Дані булевого типу (іноді його називають логічним) можуть приймати значення, обумовлені стандартними ідентифікаторами true (істина) і false (неправда). При виконанні операцій відношення вважають справедливим співвідношенням: false Змінна булевого типу займає в пам'яті 1 байт.
Значенням змінної літерного типу може бути один із символів, що входять у таблицю символів.. Символи впорядковані один щодо одного відповідно до їх значень в коді ASCII, наприклад: "А" < "У". Значення кодів символів у ASCII змінюються від 0 до 255. Змінна символьного типу займає один байт пам'яті.
Об’ектно-орієнтоване програмування - це не просто сучасна технологія створення програмних продуктів, а новий загальновизнаний спосіб мислення. Об’ектно-орієнтований підхід істотно знижує складність програмних продуктів, що дозволяє розроблювачам мов програмування з самого початку закласти в них можливості рішення чималої кількості широко розповсюджених задач. Причому це стосується практично всіх аспектів реалізації програм, у тому числі й алгоритмічних частин, і фрагментів програм, керуючих даними.
Використовуючи структуру, що розгалужується, скласти блок-схему обчислення значення складеної функції, що має різний вид на різних ділянках аргументу, потім скласти програму, що реалізує даний алгоритм (значення аргументу функції вводиться із клавіатури).
Складена функція задана в такий спосіб:
{$APPTYPE CONSOLE}
uses
SysUtils,Math;
Var x,y: real;
Begin
writeln;
writeln(' Variant 6');
writeln('Programma vvodit znachennya argumenta X i obchislyuye znachennya funkcii Y');
writeln(' |2.5*Power(x,3)+6*sqr(2)-30 x>1.5');
writeln('Y= |x+1 x<0');
writeln(' |x 0<=x<=1.5');
writeln;
write('vvedite x= ');
readln(x);
If x>1.5 then
y:=2.5*Power(x,3)+6*sqr(2)-30
Else
If x<0 then
y:=x
Else
y:=x+1;
writeln('Y= ', y:7:3);
readln;
end.
Одиниці довжини пронумеровані в такий спосіб: 1 - дециметр, 2 - кілометр, 3 - метр, 4 - міліметр, 5 - сантиметр. Дано номер одиниці довжини й довжина відрізка L у цих одиницях (речовинне число). Вивести довжину даного відрізка в метрах.
Program LR2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var n: integer; l:real;
begin
writeln;
writeln(' Variant 6');
writeln('Programma vyvodit dovjinu danogo vіdrіzka v metrah');
writeln;
write('Vvedite nomer yedenicu izmerenia, 1 - decimetr, 2 - kіlometr, 3 - metr, 4 - mіlіmetr, 5 - santimetr: ');
readln(n);
write('Vvedite dovjinu vіdrіzka: ');
readln(l);
case n of
1: write(l:5:2, 'dm=',l/10:5:2, 'm');
2: write(l:5:2, 'km=',l*1000:5:2, 'm');
3: write(l:5:2, 'm=', l:5:2, 'm');
4: write(l:5:2, 'mm=',l/1000:5:2, 'm');
5: write(l:5:2, 'sm=',l/100:5:2, 'm');
else write('pomylka');
end;
readln;
end.
Скласти й програму для заповнення таблиці значень функції y = f(x) на відрізку із зазначеним кроком зміни аргументу. Вид функції заданий завданні № 1. Значення функції виводити з точністю до тисячних часток.
Program LR3;
{$APPTYPE CONSOLE}
uses
SysUtils,Math;
Const h=0.5;
Var x,y:real;
Begin
writeln;
writeln(' Variant 6');
writeln(' Programma dlya zapolneniya tablicy znachenii funkcii');
writeln(' |2.5*Power(x,3)+6*sqr(2)-30 x>1.5');
writeln('Y= |x+1 x<0');
writeln(' |x 0<=x<=1.5');
writeln('na otrezke [0; 5] s shagom 0.5');
writeln;
writeln;
x:=-2;
While x<=3 do
Begin
If x>1.5 then
y:=2.5*Power(x,3)+6*sqr(2)-30
Else
If x<0 then
y:=x
Else
y:=x+1;
writeln('Y= ', y:7:3);
x:=x+h
end;
Readln;
End.
Скласти блок-схему й програму табулювання двох функцій S і Y у заданому діапазоні зміни аргументу x є [0,1; 1]. Тут n - число доданків суми
S= .
Результат табулювання вивести у формі таблиці.
program LR4;
{$APPTYPE CONSOLE}
uses
SysUtils, Math;
const n=25;
h=0.05;
var i:byte;
x,y,s,slag:real;
function fact(n: integer): integer;
begin
if n > 1 then fact := n * fact(n-1) // функция вызывает сама себя
else fact:= 1; // факториал 1 равен 1
end;
Begin
writeln;
writeln(' Variant 6');
writeln(' Programma tabulirovaniya funkcii, a takje vychisleniya summy ryada ');
writeln;
writeln ('! x ! y ! s !');
x:=0.1;
while x<1+h do
begin
y:=exp(x*cos(pi/4))*cos(x*sin(
s:=1; { Початкове значення суми, включаючи нульовий доданок}
slag:=1; {Значення нульового доданка}
for i:=1 to n do
begin
slag:= cos(i*pi/4)*power(x,i)/fact(i)
s:=s+slag;
end;
writeln('|',x:7:2,' |',y:7:3,' |',s:7:3,' |');
x:=x+h;
end;
readln;
end.
У масиві A=(a1, а2, ..., аn) видалити всі негативні елементи, що підряд ідуть, що йдуть слідом за мінімальним елементом масиву.
program LR5;
{$APPTYPE CONSOLE}
uses
SysUtils;
type arr=array[1..15] of integer;
var a:arr; {массив}
i,j,n: byte; {индексы, длина массива}
i_min: byte; {индекс максимального элемента массива}
min:integer; {максимальный элемент}
begin
writeln;
writeln(' Variant 6');
writeln(' Dan odnomernyi massiv celyh chisel.');
writeln(' Udalit vse otricatelniye elementy, raspolojennye sprava ot minmalnogo ');
writeln;
{$R+} {Включение контроля значений индексов}
n:=15;
randomize;
writeln('Ishodnyi massiv:');
for i:=1 to n do {генерация элементов массива}
begin
a[i]:=-20+random(41); {в диапазоне [-20; 20]}
write(a[i]:4);
end;
writeln;
min:=a[1];
i_min:=1;
for i:=2 to n do {поиск максимального элемента массива}
if a[i]<min then
begin
min:=a[i];
i_min:=i;
end;
i:=i_min+1;
while i<=n do {цикл для проверки элементов на знак }
begin
if a[i]<0 then {если элемент отрицательный, то}
begin
for j:=i to n-1 do {цикл удаления i-го элемента}
a[j]:=a[j+1];
n:=n-1; {уменьшение длины массива}
end
else
i:=i+1; {иначе переход к следующему элементу}
end;
writeln('Rezultat obrabotki:');
for i:=1 to i_min do
write(a[i]:4);
readln;
{$R-} {Выключение контроля значений индексов}
end.
Дано матрицю А розмірності n x n. Знайти й вивести той рядок у цій матриці, що містить найбільшу кількість парних чисел.
program LR6;
{$APPTYPE CONSOLE}
uses
SysUtils;
const n=7;
type matr=array[1..n,1..n] of integer;
var a:matr;
i,j,par,max_par,i_par:integer;
begin
writeln;
writeln(' Variant 6');
writeln;
{$R+} {Включение контроля значений индексов}
writeln('Ishodnaya matrica');
randomize;
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(100);
write(a[i,j]:3);
end;
writeln;
end;
max_par:=0;
for i:=1 to n do
begin
par:=0;
for j:=1 to n do
begin
if a[i,j] mod 2 =0 then
par:=par+1;
end;
if par>max_par then
begin
max_par:=par;
i_par:=i;
end;
end;
writeln;
writeln('Iskomaya stroka:');
for j:=1 to n do
write(a[i_par,j]:3);
writeln;
readln;
{$R-}
end.
Дано масив з n слів довільної довжини (довжина слова не перевищує 80 символів). Як символи можуть використовуватися тільки арабські цифри. Видалити з масиву слово, що містить найбільшу кількість парних цифр.
program LR7;
{$APPTYPE CONSOLE}
uses
SysUtils;
type T_str=array [1..10] of string[80];
T_set=set of char;
var s:T_str; {массив слов}
alf:T_set; {множество символов}
n, {количество слов}
i,j:byte; {индексы}
cod,
{код ошибки преобразования
k,
{число, полученное
tmp, {сумма цифр слова}
sum:integer; {сумма цифр всех слов}
function OddEven(s:String):Boolean;
var i,o,e:integer;
begin
o:=0;e:=0;
for i:=1 to length(s) do
if s[i] in ['2','4','6','8'] then inc(o) else inc(e);
OddEven:=o>e;
end;
begin
writeln;
writeln(' Variant 6');
writeln;
alf:=['A'..'Z','0'..'9'];
{задается множество
repeat
write ('Vvedite kolichestvo slov (ne bolee 10) ');
readln(n); {ввод числа слов}
if not (n in [1..10]) then
begin
writeln;
writeln ('Ошибка ввода!');
writeln;
end;
until (n in [1..10]);
for i:=1 to n do
begin
write ('vvedite ',i,'-e slovo ');
readln(s[i]); {ввод i-го слова}
tmp:=0; {обнуление суммы цифр i-го слова}
for j:=length(s[i]) downto 1 do
if UpCase(s[i,j]) in alf then {проверка допустимости j-
го символа i-го слова}
begin
if s[i,j] in ['0'..'9'] then {если j-й символ i-го
слова - цифра}
begin
val(s[i,j],k,cod); {преобразование символа в число}
tmp:=tmp+k; {накапливается сумма цифр i-
го слова}
end
end
else
begin
writeln('Vstretilsya nedopustimyi simvol!');