Програмування в Delphi в консоли

Автор: Пользователь скрыл имя, 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

Работа содержит 1 файл

делфи-консоль.docx

— 518.74 Кб (Скачать)
    • константи та змінні;
    • скалярні та структуровані;
    • стандартні та дані користувача.

Константи – це величини, що не змінюють своїх значень в  ході виконання програми. Змінні –  об'єкти, що можуть приймати різні значення. Але це не означає, що змінна обов'язково повинна прийняти інше значення. Далі вважатимемо, основним об'єктом програми є змінна.

Скалярні величини являють  собою прості значення. Тобто, скалярний  об'єкт може приймати в будь-який момент виконання програми лише одне якесь значення. Структуровані величини складаються з декількох значень, тобто, одній величині відповідає деякий набір значень одразу.

Стандартні величини реалізовані  в трансляторі мови ПАСКАЛЬ, тому їх можна використовувати без  додаткового оголошення. Крім того, користувач може оголошувати і використовувати власні величини, які називаються даними користувача.

Тип даних визначає множину  значень, що може приймати змінна. Кожній змінній в програмі необхідно  задати один, і тільки один тип даних. Хоча ПАСКАЛЬ може опрацьовувати  достатньо складні типи даних, усі  вони складаються з простих (неструктурованих) типів.

Вивчення типів даних  розпочнемо зі скалярних стандартних  типів даних. Їх в ПАСКАЛІ є  чотири: 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 подані у формі з фіксованою точкою.

Експоненційна форма подає  число у так званому нормалізованому  вигляді: мантиси і порядку. Мантиса  лежить у діапазоні [1 ; 10) і складається  з 12 символів: однієї цифри на цілу частину, одного символу на десяткову точку  і десяти цифр на дробову частину. Якщо дробова частина містить  менше цифр, то решта заповнюється нулями. Порядок складається з  чотирьох символів і починається  літерою Е, після якої йде знак порядку та дві цифри – його значення. Приклад запису чисел поданий  в таблиці 2.

 

Таблиця 2. Запис дійсних чисел

Форма з фіксованою точкою 

Експоненційна форма

1.4529

1.4529000000Е+00

0.000029

2.9000000000Е-05

39870 

3.9870000000Е+04


 

Дані булевого типу (іноді  його називають логічним) можуть приймати значення, обумовлені стандартними ідентифікаторами true (істина) і false (неправда). При виконанні  операцій відношення вважають справедливим співвідношенням: false Змінна булевого типу займає в пам'яті 1 байт.

Значенням змінної літерного  типу може бути один із символів, що входять  у таблицю символів.. Символи впорядковані один щодо одного відповідно до їх значень  в коді ASCII, наприклад: "А" < "У". Значення кодів символів у ASCII змінюються від 0 до 255. Змінна символьного типу займає один байт пам'яті.

    1. Особливості архітектури програми в ос windows

Об’ектно-орієнтоване  програмування - це не просто сучасна  технологія створення програмних продуктів, а новий загальновизнаний спосіб мислення. Об’ектно-орієнтований підхід істотно знижує складність програмних продуктів, що дозволяє розроблювачам мов програмування з самого початку закласти в них можливості рішення чималої кількості широко розповсюджених задач. Причому це стосується практично всіх аспектів реалізації програм, у тому числі й алгоритмічних частин, і фрагментів програм, керуючих даними.

 

 

 

ПРАКТИЧНА ЧАСТИНА

Завдання 1

Використовуючи  структуру, що  розгалужується, скласти  блок-схему  обчислення  значення  складеної  функції, що має різний  вид на різних  ділянках  аргументу,  потім  скласти  програму, що  реалізує  даний алгоритм (значення аргументу  функції вводиться із клавіатури).

Складена функція задана в такий спосіб:

Блок-схема

Код програми

{$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.

Скріншоти програми

Завдання 2

Одиниці  довжини  пронумеровані  в  такий спосіб: 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.

Скріншоти програми

Завдання 3

Скласти й програму для заповнення таблиці значень  функції 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.

Скріншот програми

Завдання 4

Скласти блок-схему й програму табулювання двох функцій 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(pi/4))/2;

    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.

Скріншот програми

Завдання 5

У масиві 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.

Скріншоти програми

 

Завдання 6

Дано матрицю А розмірності 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.

Скріншоти програми

 

 

Завдання 7

Дано масив  з 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!');

Информация о работе Програмування в Delphi в консоли