Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2014, 07:48   #1
Iskryen
Пользователь
 
Регистрация: 21.01.2014
Сообщений: 31
По умолчанию Паскаль. Одномерный массив

Доброе Утро, Уважаемые Форумчане!

Помогите, Пожалуйста!

Меня зовут Илья, мне 33 года, решил изучить Язык Паскаль для себя, в школе не было, в ВУЗе не было.
Решил для себя изучить. Но застопорился на теме Одномерные Массивы.

Помогите мне, пожалуйста, разобраться в этом. Задача - в наличии.
С готовым решением.
Вот она, а ниже - мои вопросы.
Вы мне очень поможете, если ответите хотя бы на некоторые вопросы.
Я, конечно, сам попробую разобраться, но мне очень, очень нужна Ваша помощь!

Код:
program array_;

uses crt;

const m = 10;

type mas = array[1..m] of integer;

var massiv: mas;

procedure InserMas1(var mass: mas; n: integer);
var i: integer;
begin
  Randomize;
  for i := 1 to n do mass[i] := random(10);
end;

procedure InserMas2(var mass: mas; n: integer);
var i: integer;
begin
  for i := 1 to n do
  begin
    Write('Введите', i, -ый номер элемента массива');
    Readln(mass[i]);
  end;
end;

procedure PrintMas(mass: mas; n: integer);
var i: integer;
begin
  for i := 1 to n do write(mass[i]: 5);
end;

begin

  Clrscr;

  {InsertMas1 (massive, m);}

  InsertMas2(massive, m);

  PrintMas;

  Readln;

end.
Данная программа состоит из трёх процедур. В общем, одна показывает случайный набор десяти цифр из десяти, другая запрашивает ввод их с клавиатуры, чтобы не запутаться, первую я закомментировал.
А третья - PrintMas - выводит их на экран.

А теперь самое сложное.

Мои вопросы.

Пожалуйста, простите меня, если они покажутся Вам идиотскими.

Итак:

1. Для чего задаётся Const m, ведь мы могли бы указать
type mas=array[1..10]?

2. Мне не совсем понятен ввод Процедуры InserMas1, там пишется
(var mass: mas; n:integer);

Во-первых, я запутался в предназначениях переменных mass и massive.
А тут ещё n и i.... (((

Во-вторых, я вообще не понял кто из них за что отвечает -
mass, n и i. ПОМОГИТЕ!

3. Почему в Процедуре InserMas Оператор For указывается так:
for i:=1 to n do mas[i]:=random(10);
а в Процедуре For указывается следующим образом:
for i:=1 to n do write (mass[i]:5);
Почему они разные?

4. И почему в теле программы в процедурах InsertMas и PrintMas указываются дополнительные параметры (massive, m)?
Чтобы произошло, если бы их вообще не указывалось?

Уважаемые Форумчане, помогите, крик Души!

Я вообще не изучал ничего, поэтому вот так получилось. Извините.

Всем Удачи!

Спасибо!

______________________
Форматируйте код и используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ
Я желаю всем достигнуть поставленных целей!

Последний раз редактировалось Вадим Мошев; 13.09.2019 в 20:44.
Iskryen вне форума Ответить с цитированием
Старый 21.01.2014, 08:03   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Цитата:
1. Для чего задаётся Const m, ведь мы могли бы указать
type mas=array[1..10]?
Чтобы всегда знать размерность массива и оперировать ей при перекомпиляции (не менять в 100500 местах for i:= 1 to 10 на for i:= 1 to 20, а просто сменить константу.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 21.01.2014, 08:24   #3
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Замечательное сообщение.. вот бы все, просящие помощи, писали именно так..
Только код лучше обрамлять тегом (кнопчка с #)
Цитата:
type mas=array[1..10]?
Ну представьте, Вы долго-долго писали программку, которая что-то делает с массивом, где 10 элементов, а потом Вам вдруг нужно сделать тоже самое, но с 20-ю элементами.. И Вы будете вынуждены бежать по всей программе и исправлять.. а тут Вы исправите только одну цифирку в константе..

Цитата:
2. Мне не совсем понятен ввод Процедуры InserMas1, там пишется
Цитата:
Код:
Procedure InserMas1 (var mass: mas; n:integer); 
// var означает, что переменную мы передаем по ссылке, тоесть мы передаем не весь массив, который может быть огромен.. а лишь ссылку, 
которая "весит" всего 4 (или 8) байт..

 и именно var позволяет нам изменять этот mass.. n : она без var'a.. передается по значению.. и здесь мы может изменять N (только делать это
 лучше после цикла).. нигде эти изменения(кроме этой процедурки) видны не будут..


Var i:integer; // локальная переменная, которая видно только в этой процедуре

Begin

     Randomize;

     For i:=1 to n do mass[i]:=random(10);

End;
Цитата:
Во-вторых, я вообще не понял кто из них за что отвечает -
mass, n и i. ПОМОГИТЕ!
mass - Ваш массив
n - кол-во элементов
i - просто индекс..


Цитата:
Код:
for i:=1 to n do mas[i]:=random(10);
а в Процедуре For указывается следующим образом:
for i:=1 to n do write (mass[i]:5);
for - это цикл.. и записывается он так :
Код:
for переменная := начальное_значение to конечное_значение do
    оператор;
Если кол-во операторов > 1, то пишем begin end..

Вот и всё..

Цитата:
mas[i] := random(10);
i-тый элемент массива станет равен случайному число из [0; 9]
Код:
write (mass[i]:5);
выводим i-тый элемент в поле 5.. лучше пока не заморачиваться с этим.. и писать просто Write(mass[i], ' ');

Удачи!

Последний раз редактировалось Stilet; 21.01.2014 в 09:13.
Poma][a вне форума Ответить с цитированием
Старый 21.01.2014, 11:40   #4
Iskryen
Пользователь
 
Регистрация: 21.01.2014
Сообщений: 31
По умолчанию Спасибо!

Друзья! Спасибо Вам огромное!!! Я не ожидал, что получу такие развёрнутые, подробные ответы! Обязательно их разберу. Сейчас, к сожалению, не до этого - работа... Если в Форуме нельзя об этом писать, то прошу извинить меня. Добавляйтесь в Друзья, я всем буду рад! Я здесь первый день. Обязательно также учту форматирование Программы!
Я желаю всем достигнуть поставленных целей!
Iskryen вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив одномерный паскаль Ann2807 Помощь студентам 3 26.12.2012 17:11
Паскаль. Одномерный массив. Женька Good Помощь студентам 1 30.11.2011 18:52
одномерный массив.Паскаль Nastya2406 Помощь студентам 6 30.05.2011 16:59
Паскаль.Одномерный массив. D.bohlen Помощь студентам 10 19.05.2010 21:44
Одномерный массив.Паскаль **star** Помощь студентам 1 05.11.2009 19:52