реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> 2 вопроса по паскалю, всего 2...
_Pasha
сообщение Nov 17 2008, 06:18
Сообщение #16


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(777777 @ Nov 17 2008, 09:31) *

ппц... но если интересно, сходите по линкам во втором посте топика.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 17 2008, 06:20
Сообщение #17


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(777777 @ Nov 17 2008, 11:31) *
Я, конечно, понимаю, что Паскакаль дебильнй язык, но про эти "функции" всегда думал, что это не функции и не процедуры, а лишь указание компилятору считать аргументы другим типом. То есть, оператор преобразования типа.


Во, чувствуется знаток паскаляsmile.gif

Цитата
Если же это действительно реальные функции, которым что-то передается и они генерируют вызов - то какие еще могут быть разговоры о паскале? Нахрена он это все делает?


Чтобы преобразовать численное значение в строку и обратно. Как atoi/itoa в Си.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
777777
сообщение Nov 17 2008, 07:50
Сообщение #18


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(AHTOXA @ Nov 17 2008, 09:20) *
Во, чувствуется знаток паскаляsmile.gif

Я отюдь не знаток паскаля и, к счастью, никогда на нем не писал.
Цитата(AHTOXA @ Nov 17 2008, 09:20) *
Чтобы преобразовать численное значение в строку и обратно. Как atoi/itoa в Си.

Значит я спутал с другими "функциями" одна из них называлась кажется ord() а обратная не помню. Ну хоть они-то не функции, а операторы языка?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 17 2008, 09:04
Сообщение #19


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(777777 @ Nov 17 2008, 13:50) *
Я отюдь не знаток паскаля и, к счастью, никогда на нем не писал.


Почему же тогда вы считаете, что можете судить о нём?

Цитата(777777 @ Nov 17 2008, 13:50) *
понимаю, что Паскакаль дебильнй язык


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Ivan_33
сообщение Nov 17 2008, 11:26
Сообщение #20


fpga designer
****

Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928



вот у меня есть функция tip в нее экспортируется 1 параметр и 1 массив... выходное значение функции - integer....
как мне в главное программе какой то переменной присвоить значение этой функции?!?!? все время в этой строке пишет ошибку напишите пример плс...


--------------------
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Nov 17 2008, 11:47
Сообщение #21


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(_Ivan_33 @ Nov 17 2008, 15:26) *
вот у меня есть функция tip в нее экспортируется 1 параметр и 1 массив... выходное значение функции - integer....
как мне в главное программе какой то переменной присвоить значение этой функции?!?!? все время в этой строке пишет ошибку напишите пример плс...

Так, что ли ?
Код
type
Tbuffer= array[1..100] of integer;
var
work,index:integer;
buffer: Tbuffer;

function tip(param1: integer; var param2: Tbuffer)
begin
tip := param2[lo(param1)] mod param1; (* хз чего сделали *)
end;

(* THE MAIN PROGRAM *)
BEGIN
(*Заполнили случайными числами буфер сюда можно не смотреть*)
randomize;
for index := 1 to 100 do buffer[index]:=random(65535);

(* а сюда уже смотреть надо*)
for index := 1 to 60000 do
  begin
   work := tip(index,buffer)
   writeln ('сделали еще ХЗ чего с индексом ',index, ' и оно равно ', work );
  end;
END.
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 18 2008, 09:31
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(_Pasha @ Nov 17 2008, 14:47) *
Так, что ли ?
Код
type
Tbuffer= array[1..100] of integer;
var
work,index:integer;
buffer: Tbuffer;

function tip(param1: integer; var param2: Tbuffer)
begin
tip := param2[lo(param1)] mod param1; (* хз чего сделали *)
end;

(* THE MAIN PROGRAM *)
BEGIN
(*Заполнили случайными числами буфер сюда можно не смотреть*)
randomize;
for index := 1 to 100 do buffer[index]:=random(65535);

(* а сюда уже смотреть надо*)
for index := 1 to 60000 do
  begin
   work := tip(index,buffer)
   writeln ('сделали еще ХЗ чего с индексом ',index, ' и оно равно ', work );
  end;
END.
В последний раз на Pascal писал лет 20 назад, но все равно до сих пор помню, что тип значения, возвращаемого функцией, надо указывать:

Код
  function tip(param1: integer; var param2: Tbuffer) : integer;
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Nov 18 2008, 09:43
Сообщение #23


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(XVR @ Nov 18 2008, 13:31) *
до сих пор помню, что тип значения, возвращаемого функцией, надо указывать:

Эт точно. smile.gif Очепядко.
Спасибо!
Go to the top of the page
 
+Quote Post
_Ivan_33
сообщение Nov 21 2008, 06:53
Сообщение #24


fpga designer
****

Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928



спасибо все работает
а еще вопрос - может ли функция возвращать массив
ну типа в главное программе написать tip[i]...???


--------------------
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Nov 21 2008, 07:18
Сообщение #25


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(_Ivan_33 @ Nov 21 2008, 10:53) *
а еще вопрос - может ли функция возвращать массив


Можно только два варианта:

Код
function tip(param1: integer; var param2: Tbuffer):integer;
                                                     ^
                                                      через параметр по ссылке


Второй вариант возможен, но он кривой. Лучше так не делать, потому что можно привыкнуть к этому и на автопилоте возвращать в функции огромные блоки данных, что заставляет машину заниматься черти-чем, и еще служит источником трудноуловимых глюков переполнения стека, т.к. значения функций возвращаются через стек.
Код
function tip2(param1: integer): Tbuffer;
(**********************************)

(*основная программа *)
var
mass1: Tbuffer;
param:integer;

begin
mass1:=tip2(param);
end.


А это - бессмыслица.
Код
var param1,param2 :integer;
begin
param1 := tip2(param2)[1];
end;

Зачем городить кучу данных, если надо что-то одно ?
После вызова функции ее результат доступен ведь только один раз.
Go to the top of the page
 
+Quote Post
_Ivan_33
сообщение Dec 9 2008, 19:48
Сообщение #26


fpga designer
****

Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928



гы, дошел до файлов...
у меня блокнот видит иероглифы если я записал прогой файл...
команда записывает русскую строку в файл - такое можно?
и как чтоб не было иероглифов?
кодировку менял
файл текстовый...
и еще как записать в типизированный файл кучу чисел(массив) а потом этот же массив прочитать(конечно с виду это извращения - но препод говорит что это его правила игры... и я с ним согласен)
заранее благодарен за ответы


--------------------
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Dec 11 2008, 12:32
Сообщение #27


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(_Ivan_33 @ Dec 9 2008, 23:48) *
у меня блокнот видит иероглифы если я записал прогой файл...

Каким паскалем пользуетесь? Старым BP7 ? Если да - то ничем не могу помочь, пользуюсь FPC. Подробностей с кракозябрами не помню.

Цитата
и еще как записать в типизированный файл кучу чисел(массив)

Код
const
MaxElement = 9000;
var
f: file of integer;
map: array[1..MaxElement] of integer;
i: integer;
begin
assign(f,'temp.bin');(*назначили имя файла - он будет там же, где и файл программы, т.е. ЕХЕ-шник *)
rewrite(f); (* открыли файл на вывод*)
for i:= 1 to MaxElement do  write(f,map[i]); (*записали все,что надо из массива*)
close(f);(*закрыли файл, но в данном случае это необязательно*)
reset(f);(*открыли файл для чтения, но можно и по-другому, через процедуру seek();*)

(*прочитать можно таким же образом, как и записали но можно и так, если вспомнить
    о том, что в реальном мире размер файла может содержать другое число элементов,
    поэтому проверим условия конца файла и выхода за пределы массива.
*)
i:=1;
repeat
read(f,map[i]);
i := i+1;
until eof(f) or (i > MaxElement);
close(f);
end.


Надеюсь, кто-нить поправит, если допустил ошибку.
smile.gif вместо того чтоб флудить в ветке "Pascal для AVR"
Go to the top of the page
 
+Quote Post
_Ivan_33
сообщение Dec 11 2008, 19:46
Сообщение #28


fpga designer
****

Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928



СПАСИБО ВАМ ОГРОМНОЕ!!!! СДЕЛАЛ С ВАШЕЙ ПОМОЩЬЮ ВСЕ РАБОТАЕТ!!! ЗАВТРА ПОЙДУ ПОЛУЧАТЬ ЗАЧЕТ!!!


--------------------
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 16:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01493 секунд с 7
ELECTRONIX ©2004-2016