Страница 2 из 6
Re: Програмисты помогите новичку Pascal
Добавлено: 22 янв 2007, 13:30
Code(R)
Пишу программы на Turbo Pascal, Delphi.
Быстро, недорого и качественно. Хороший стиль программировния (отступы, комментарии и т.п.). Если вам нужно, могу прокомментировать каждую строчку программы (и вам не нужно будет мучиться, отвечая на вопрос преподавателя - что означает этот оператор?).
Пишите мне на
al@liceum.secna.ru.
Re: Програмисты помогите новичку Pascal
Добавлено: 22 янв 2007, 23:59
Tre
Хотите решить для интереса одну задачку? Эту задачу я не смог решить на экзамене, а в последствии оказалось, что и сам преподаватель не смог решить ее! Ну кому интересно, можете посмотреть, только скажите,когда что-нибудь получится. Так вот: в Delphi без объявления глобальных переменных нужно вычислить сумму двух элементов с помощью обычной процедуры. Вот код:
procedure sum( :integer);
var :integer;
begin
c:=a+b;
end;
procedure TForm1.Button1Click (Sender: TOBject);
var a,b,c:integer;
begin
a:=10;
b:=11;
sum();
edit1.text:=inttostr(c);
end;
В скобках вы должны объявить переменные, какие надо, и если необходимо, что-то изменить. Существенных изменений не должно быть. Повторяю, без глобальных переменных! Используя только локальные переменные
Re: Програмисты помогите новичку Pascal
Добавлено: 23 янв 2007, 00:08
Tre
somewhere писал(а):Немного переделанная версия
Кстати, спасибо Вам всем за предоставленную мне помощь! Особенно Somewhere. Ты сумел заложить хотя бы какое-то представление о Delphi. И я все-таки смог сегодня сдать этот экзамен. Причем на 5. А все потому, что я идеально смог ему сдать задачу, которую я без твоей помощи и не сделал бы. Все в твоих программах было доступно и понятно, поэтому было бы странно сдать экзамен плохо. Спасибо
Re: Програмисты помогите новичку Pascal
Добавлено: 23 янв 2007, 01:49
Хыиуду
че-то я не понял условие задачи... Если написать просто
procedure sum(a,b:integer;var c:integer);
никакого использования глобальных переменных не будет. Переменные a,b,c объявлены внутри процедуры Button1Click, следовательно, локальные
Re: Програмисты помогите новичку Pascal
Добавлено: 24 янв 2007, 21:40
Tre
Хыиуду писал(а):че-то я не понял условие задачи... Если написать просто
procedure sum(a,b:integer;var c:integer);
никакого использования глобальных переменных не будет. Переменные a,b,c объявлены внутри процедуры Button1Click, следовательно, локальные
А ты пробовал это реализовать? Не все так просто! Если ты напишешь прогу так как ты думаешь, ничего не получится! выведет ответ либо "0", либо очень-очень большую цифру, точно не равную правильному ответу, как в том алгоритме, это 21
Re: Програмисты помогите новичку Pascal
Добавлено: 24 янв 2007, 21:54
Хыиуду
Код: Выделить всё
procedure sum(a,b:integer;var c:integer);
begin
c:=a+b;
end;
var a,b,c:integer;
begin
a:=10;
b:=11;
sum(a,b,c);
writeln(c);
end.
Выводит 21. В чем вопрос-то?
В Дельфи то же самое
Код: Выделить всё
procedure sum(a,b:integer;var c:integer);
begin c:=a+b; end;
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:integer;
begin
a:=10;
b:=12;
sum(a,b,c);
Button1.Caption:=inttostr(c);
end;
Re: Програмисты помогите новичку Pascal
Добавлено: 24 янв 2007, 22:10
Tre
Хыиуду писал(а):
В Дельфи то же самое
Код: Выделить всё
procedure sum(a,b:integer;var c:integer);
begin c:=a+b; end;
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:integer;
begin
a:=10;
b:=12;
sum(a,b,c);
Button1.Caption:=inttostr(c);
end;
а он мне втирал, что процедуре Sum " var c:integer " надо писать не в скобках, а как локальная переменная в этой процедуре
То есть procedure sum(a,b:integer);
var c:integer;
begin
c:=a+b;
end;
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:integer;
begin
a:=10;
b:=12;
sum(a,b);
Button1.Caption:=inttostr(c);
end;
Все разъяснил, завтра я над ним поиздеваюсь
Re: Програмисты помогите новичку Pascal
Добавлено: 24 янв 2007, 22:30
Хыиуду
То, что он тебе объяснил, действует так:
Создаем три целых переменных (a,b,c);
в a,b записываем значения 10 и 11. с остается неинициализированной. То есть какая-то ячейка памяти, в которой до начала работы программы находился скорее всего ноль, но возможно какие-то абсолютно левые данные, относящиеся к другой программе, которая уже завершена, а следы в памяти оставила.
После этого вызывается процедура sum. Внутри нее есть переменная c - но она никак не связана с той переменной с, которая определена внутри Button1Click. То есть с точки зрения программиста она носит то же название, но с точки зрения компилятора - это две совершенно разных переменных, находящихся в разных местах памяти.
Потом выполняется с:=а+в. В переменную с, которая определена внутри процедуры sum, записывается 21.
После этого процедура sum завершается. Значение "21" остается мирно лежать там, где раньше находилась процедурная переменная. Только где она лежала, после окончания процедуры уже никто не узнает.
А теперь мы кнопке в качестве названия передаем значение переменной с - той самой, которая определена в Button1Click. Которую не изменяли с момента начала программы и в которой по прежнему лежит либо ноль, что скорее всего, либо всякий космический мусор.
Re: Програмисты помогите новичку Pascal
Добавлено: 28 янв 2007, 00:00
Tre
Хыиуду писал(а):То, что он тебе объяснил, действует так:
Создаем три целых переменных (a,b,c);
в a,b записываем значения 10 и 11. с остается неинициализированной. То есть какая-то ячейка памяти, в которой до начала работы программы находился скорее всего ноль, но возможно какие-то абсолютно левые данные, относящиеся к другой программе, которая уже завершена, а следы в памяти оставила.
После этого вызывается процедура sum. Внутри нее есть переменная c - но она никак не связана с той переменной с, которая определена внутри Button1Click. То есть с точки зрения программиста она носит то же название, но с точки зрения компилятора - это две совершенно разных переменных, находящихся в разных местах памяти.
Потом выполняется с:=а+в. В переменную с, которая определена внутри процедуры sum, записывается 21.
После этого процедура sum завершается. Значение "21" остается мирно лежать там, где раньше находилась процедурная переменная. Только где она лежала, после окончания процедуры уже никто не узнает.
А теперь мы кнопке в качестве названия передаем значение переменной с - той самой, которая определена в Button1Click. Которую не изменяли с момента начала программы и в которой по прежнему лежит либо ноль, что скорее всего, либо всякий космический мусор.
Ага, вот оно что! Спасибо за разъяснение!
Re: Програмисты помогите новичку Pascal
Добавлено: 29 янв 2007, 14:51
Oleg_Rus
1) второй массив
for i:=1 to n do
for j:=1 to n do
if i<j then a[i, j]:=Random(53)-17 else
if i+j>n+1 then a[i, j]:=Random(900)+100;
2) третий массив
for i:=1 to n do
for j:=1 to n do
if i+j=n+1 then a[i, j]:=5;
if i+j<n+1 then a[i, j]:=n-i;
Хотя насчет третьего не уверен, но идея примерно такая:
саму побочную диагональ забиваем 5, а последующие n-i.
Должно работать!
Если увидите какие недоработки или ошибки, прошу известить!