Резултати от 1 до 4 от общо 4

Няколко теоретични въпроса в Паскал

Сподели във Facebook Сподели в Twitter Изпрати на Email Сподели в LinkedIn
  1. Junior Member
    Тук е от
    Nov 2004
    Мнения
    100
    #1

    Няколко теоретични въпроса в Паскал

    Отново пускам тема за Паскал (сигурно ставам досаден, но имам много важен изпит на него). Та въпросите:

    1. "Кога се пише "var" при деклариране на променливи в процедурите - пример : "procedure action (var a:Masiv, y:integer)
    В учебника пише, че когато компютъра бърка в оперативната памет, тогава се използва "var", но от това пояснение не ми става ясно, бихте ли ми дали точни примери ?

    2. Как се определят интервалите в type ? Пример имам задача с интервал от елементи на масив от -999.99 до 999.999 и в type интервала е "1..30,1..30" ? Каква е логиката интервала да го декларирам с "1..30,1..30" ?

    3. Имаме команда "write x[i,j]:4" (при процедура "Извеждане на Данни") как разбирам това ":4" какво число да бъде или примерно":4:2"? До колкото знам това са десетиците и единиците на изведените числа, но не ми е ясно как се определят чрез тези отношения

    4. Кога се използва Byte ?

    5. Имаме for "i:=1 to y do
    j:=1 to y do
    "

    Кога се слага begin между "i:=1 to y do" и "j:=1 to y do" и кога след тях ?

    6. Кога се слага begin след "j:=1 to y do" и кога "if" без begin ?

    7.

    begin
    res[i,j] :=Q
    count := count + 1;
    end
    else
    res[i, j] :=a[i,j];
    replace :=count;
    end;
    Защо в този случай "end" е без точка и запетая ?


    Благодаря ви предварително

  2.  
     
  3. Member
    Тук е от
    Nov 2005
    Мнения
    295
    #2

    Re:Няколко теоретични въпроса в Паскал

    Дай да почваме леко-полека:

    Първи въпрос
    Това е е***и учебника, ако така е написано. Има два вида предаване на параметри - по име (като указател) и по стойност. Това ще рече, че ако имаш променлива i, която е равна на 4 например, и я предадеш като параметър по стойност на функция, то функцията ще получи числото 4 и може да го използва за каквото е необходимо, но както и да го манипулира няма да се промени нищо. Ако се предаде по име, то функцията ще получи адреса на променливата, т.е. ще има достъп до нея и ако я манипулира, това ще се отрази. Нещо много сложно стана, нека дам пример:

    Код:
    function po_stoinost( i: integer )
    begin
     i:=i+1;
    end;
    
    function po_ime( var i: integer )
    begin
     i:=i+1;
    end;
    
    
    begin
     i:=4;
     po_stoinost( i );
     writeln(i);
     po_ime( i );
     writeln(i);
    end.
    Ще ти изведе следното:
    4
    5

    Втори въпрос
    Тези интервали дефинират масиви. Интервалът 1..30 ще ти дефинира едномерен масив с 30 елемента, а интервалът 1..30,1..30 ще дефинира двумерен масив с общо 30х30 или 900 елемента

    Трети въпрос
    :4 означава да се изведе числото на 4 позиции, т.е. 2 ще се изведе като 3 интервала и числото 2, а 22 ще се изведе като 2 интервала и числото 22. Това е удобно да се форматират резултатите. Форматът :4:2 указва отново извеждане на 4 позиции, като 2 означава броя позиции за дробната част. Например 2.222:4:2 ще изглежда 2.22

    Пети и шести въпрос
    begin … end заграждат блок от команди, т.е разглеждат се като едно цяло. Независимо след if или for или какъвто и да било друг оператор е необходимо да се сложи begin … end за да се изпълнят повече от една команди. Ето пак един пример:

    Код:
    if( 1 = 2 )
     writeln( 'Лъжа' );
     writeln( 'Истина' );
    
    if( 1 = 2 )
     begin
      writeln( 'Лъжа' );
      writeln( 'Истина' );
     end
    Първото ще изпише „Истина“, защото if-ът, който не се изпълнява, ще важи само за първата команда. Второто няма да изпише нищо, защото отново if-ът важи само за първата команда след него, но това в случая е begin … end, който съдържа в себе си повече команди.

    Седми въпрос
    Просто преди else не трябва да има ;

    Успех!

    П.П. може да има някоя и друга грешка в синтаксиса, че сигурно 20 г. не съм писал на Pascal.

  4. Member Аватара на shanto
    Тук е от
    Feb 2008
    Мнения
    621
    #3

    Re:Няколко теоретични въпроса в Паскал

    Защо в този случай "end" е без точка и запетая ?
    Защото синтаксиса (правописа) на изписването на оператора "If .. Then .. Else" е следния:
    Пример1
    If условие Then оператор 1
    Else оператор 2;

    или
    Пример2
    If условие Then
    Begin
    оператор 1
    оператор 2
    End
    Else
    оператор 3;
    Изпълнява се по следния начин:
    Пример1 -> Ако твърдението "условие" Е ВЯРНО , тогава изпълни оператор1, излез от условната структура и премини към изпълнението на следващия оператор след оператор2.Ако обаче твърдението "условие" НЕ Е ВЯРНО , тогава изпълни САМО оператор2, излез от условната структура и премини към изпълнението на следващия оператор.

    Пример2 -> Ако твърдението "условие" Е ВЯРНО , тогава изпълни оператор1 и оператор2 (защото се използва Begin..End - изпълнява се всичко между тях), излез от условната структура и премини към изпълнението на следващия оператор след оператор3.Ако обаче твърдението "условие" НЕ Е ВЯРНО , тогава изпълни САМО оператор3, излез от условната структура и премини към изпълнението на следващия оператор.
    Символът ";" се слага винаги след оператора след "Else", тоест в края на условната структура.

    4. Кога се използва Byte ?
    Byte е целочислен тип данни, тоест ако кажем , че променливата P е от тип Byte, то тя може да приема стойности само от 0 до 255.

  5. Junior Member
    Тук е от
    Nov 2004
    Мнения
    100
    #4

    Re:Няколко теоретични въпроса в Паскал

    Благодаря ви много, а за да не спамя с нова тема искам да попитам за ето тази програма :

    7. Да се състави главна програма за обработка на два двумерни масива А[10,10] и B[12,12]. Данните и в двата масива са в интервала [-500 - 500]. Съответните подпрограми да извършват следните обработки:
    • минималните елементи на всеки ред да се изнесат в първата колонка, а максималните - в последната колонка; Да се определи броя на максималните елементи по-големи от зададено число М и броя на минималните елементи по-малки от зададено число N;

    procedure moveMin(var a: matrix; size, M, N: integer; var max, min: integer);
    var
    i, j, minIndex, maxIndex, temp: integer;
    begin
    max := 0;
    min := 0;
    for i := 1 to size do
    begin
    minIndex := 1;
    for j := 2 to size do
    if a[i, j] < a[i, minIndex] then
    minIndex := j;
    if a[i, minIndex] < N then
    min := min + 1;
    if minIndex > 1 then
    begin
    temp := a[i, minIndex];
    for j := minIndex downto 2 do
    a[i, j] := a[i, j - 1];
    a[i, 1] := temp;
    end;

    maxIndex := 1;
    for j := 2 to size do
    if a[i, j] > a[i, maxIndex] then
    maxIndex := j;
    if a[i, maxIndex] > M then
    max := max + 1;
    if maxIndex < size then
    begin
    temp := a[i, maxIndex];
    for j := maxIndex to size - 1 do
    a[i, j] := a[i, j + 1];
    a[i, size] := temp;
    end;
    end;
    end;


    Можете ли да ми я разясните ?

Сподели във Facebook Сподели в Google Plus Сподели в Twitter Изпрати на Email Сподели в LinkedIn

Подобни теми

  1. Няколко въпроса за S40 SUB
    От vencifcl във форум Тонколони
    Отговори: 9
    Последно: 19-09-13, 18:03
  2. Няколко въпроса за LG 42 LW5590
    От Pronto във форум LG телевизори
    Отговори: 22
    Последно: 11-10-12, 17:17
  3. няколко въпроса за С++ ?
    От brankod във форум Програмиране
    Отговори: 5
    Последно: 07-03-07, 15:46
  4. Няколко въпроса за LVM
    От fori във форум Linux
    Отговори: 1
    Последно: 09-11-03, 18:12
  5. Няколко въпроса...
    От Stealth във форум Процесори и Дънни платки
    Отговори: 44
    Последно: 03-06-02, 15:01

SetCombG.com
SetCombG.com е портален сайт и Форум за битова техника, телевизори, климатици, лаптопи и смартфони, създаден през 1999 година.
Заедно сме над 20 години!
Следвай ни
Горе