Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];

Вниз

Delphi To TP   Найти похожие ветки 

 
{RASkov} ©   (2007-12-10 19:43) [0]

"Переведите" вот этот код с Делфи на Турбо Паскаль пожалуйста:
program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils;

var N: Integer;
begin
 Write("Введите длину ребра куба: ");
 ReadLn(N);
 Writeln("Площадь грани ="+IntToStr(N*N));
 Writeln("Вся площадь ="+IntToStr(N*N*6));
 Writeln("Объем ="+IntToStr(N*N*N));
 Readln;
end.


Попросила одна девулька(соседка) помочь с контрольным заданием, там нужно на ТП.... А я и не знаю как там в ТП....

Подозрения вот на эти строки
{$APPTYPE CONSOLE}

uses
 SysUtils;


и соответственно IntToStr...
Так же подозреваю, будет выглядеть вот так:
program Project1;

uses ???;

var N: Integer;
begin
 Write("Введите длину ребра куба: ");
 ReadLn(N);
 Writeln("Площадь грани ="+N*N);
 Writeln("Вся площадь ="+N*N*6);
 Writeln("Объем ="+N*N*N);
 Readln;
end.

Верно ли? И что там в юзас нужно? Спасибо)


 
@!!ex ©   (2007-12-10 19:46) [1]

program Project1;
uses CRT; //помойму без него readln Не работает. хотя могу ошибаться.
var N: Integer;
begin
Write("Введите длину ребра куба: ");
ReadLn(N);
Writeln("Площадь грани =",N*N);
Writeln("Вся площадь =",N*N*6);
Writeln("Объем =",N*N*N);
Readln;
end.


 
@!!ex ©   (2007-12-10 19:48) [2]

И вообще, вот этот код, не правильно написан.
program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

var N: Integer;
begin
Write("Введите длину ребра куба: ");
ReadLn(N);
Writeln("Площадь грани ="+IntToStr(N*N));
Writeln("Вся площадь ="+IntToStr(N*N*6));
Writeln("Объем ="+IntToStr(N*N*N));
Readln;
end.


IntToStr Нафиг не нужен. Write спокойно выводит числа, тупо через запятую, перевод в строку - лишняя операция, как и сложение строк.


 
БарЛог ©   (2007-12-10 19:49) [3]

> program Project1;
не обязательно

> uses CRT; //помойму без него readln Не работает. хотя могу ошибаться.
да


 
{RASkov} ©   (2007-12-10 19:56) [4]

Спасибо. Значит в [1] - это самое то...


 
Amoeba ©   (2007-12-10 22:16) [5]

CRT не нужен.


 
Германн ©   (2007-12-10 22:25) [6]


> {RASkov} ©   (10.12.07 19:56) [4]

Так будет красивше:
program Project1;

uses Crt;

var N: Integer;
begin
 repeat
   Write("Введите длину ребра куба: ");
   ReadLn(N);
   Writeln("Площадь грани =",N*N);
   Writeln("Вся площадь =",N*N*6);
   Writeln("Объем =",N*N*N);
   Writeln("Продолжить "Y" Выйти из программы "N");
 until UpCase(ReadKey) =  "N";
end.


 
{RASkov} ©   (2007-12-10 22:51) [7]

> [6] Германн ©   (10.12.07 22:25)

;)
У меня ТП нет, а в делфи такое не проверишь, но я вижу нововведение в код, и понимаю его смыл :) Спасибо)

>
ПЫСЫ Я вот другие задачи по контрольному заданию смотрю..... о ужас.... зачем я согласился помагать :(


 
Alex Konshin ©   (2007-12-10 22:55) [8]

> {RASkov} ©   (10.12.07 22:51) [7]
> зачем я согласился помагать :(

Мы догадываемся, но никому не скажем :)


 
AlexKniga ©   (2007-12-10 22:56) [9]

> uses Crt;
Лишнее.


 
{RASkov} ©   (2007-12-10 23:03) [10]

> [8] Alex Konshin ©   (10.12.07 22:55)

:)


 
{RASkov} ©   (2007-12-10 23:09) [11]

> [5] Amoeba ©   (10.12.07 22:16)

> [9] AlexKniga ©   (10.12.07 22:56)

Это понятно, а вот для такой строки:
sqrt(sqr(x1 - x2) + sqr(y1 - y2))
т.е. sqrt, sqr и еще pi - есть в ТП и необходим ли какой доп модуль в юзас?


 
Юрий Зотов ©   (2007-12-10 23:14) [12]

"sqrt, sqr и еще pi" - все есть и все встроенное.


 
{RASkov} ©   (2007-12-10 23:14) [13]

> [12] Юрий Зотов ©   (10.12.07 23:14)

Спасибо


 
Германн ©   (2007-12-11 00:37) [14]


> AlexKniga ©   (10.12.07 22:56) [9]
>
> > uses Crt;
> Лишнее.
>

В моем варианте оно отнюдь не лишнее.


> {RASkov} ©   (10.12.07 22:51) [7]
>
> > [6] Германн ©   (10.12.07 22:25)
>
> ;)
> У меня ТП нет, а в делфи такое не проверишь, но я вижу нововведение
> в код, и понимаю его смыл :) Спасибо)
>

Токмо сейчас (в спокойной обстановке) я бы чуть-чуть изменил бы код:
   Writeln("Продолжить - любая клавиша, Выйти из программы "ESC");
until ReadKey =  #27;


 
Германн ©   (2007-12-11 01:19) [15]


> БарЛог ©   (10.12.07 19:49) [3]
>
> > program Project1;
> не обязательно
>

Эт точно, но некрасиво.

> > uses CRT; //помойму без него readln Не работает. хотя
> могу ошибаться.
> да
>

Нет. Read (ReadLn), Write (WriteLn) не нуждаются и никогда не нуждались в указании чего-либо в uses. Все они "встроены" в компилятор.


 
Anatoly Podgoretsky ©   (2007-12-11 08:52) [16]

> Германн  (11.12.2007 00:37:14)  [14]

> > uses Crt;
> Лишнее.
>

> В моем варианте оно отнюдь не лишнее.

Это что бы помучался?


 
AlexKniga ©   (2007-12-11 09:05) [17]


> Все они "встроены" в компилятор.

:lol:
В TURBO.TPL лежат модули System и некоторые другие.


 
Германн ©   (2007-12-11 09:20) [18]


> Anatoly Podgoretsky ©   (11.12.07 08:52) [16]

Не. Это чтобы не было мучительно больно.


 
Германн ©   (2007-12-11 09:23) [19]


> AlexKniga ©   (11.12.07 09:05) [17]
>
>
> > Все они "встроены" в компилятор.
>
> :lol:
> В TURBO.TPL лежат модули System и некоторые другие.
>

Лежат. Ну и что?


 
Германн ©   (2007-12-11 09:43) [20]


> AlexKniga ©   (11.12.07 09:05) [17]

В догонку. Может ты подскажешь как в Паскале описать процедуру с произвольным количеством параметров? Да еще и если эти параметры произвольного типа?


 
AlexKniga ©   (2007-12-11 10:32) [21]

> Германн ©   (11.12.07 09:43) [20]
Обычными параметрами передаешь количество и размеры. На asm вручную вдавливаешь в стек перед вызовом и в самой функции выгребаешь из стека. Примерно так, сам не пробовал.


 
@!!ex ©   (2007-12-11 10:34) [22]

> [21] AlexKniga ©   (11.12.07 10:32)

Да не об этом речь.
А о том, что реализовать функционал write/read на паскале невозможно. Эти процедуры нигде не описаны, они вшиты в компилятор.


 
korneley ©   (2007-12-11 10:47) [23]


> Германн ©   (11.12.07 09:43) [20]
> как в Паскале описать процедуру с произвольным
> количеством параметров? Да еще и если эти параметры произвольного
> типа?
Насколько я помню - никак :( Я пользовал нетепизированые параметры, что-нибудь типа procedure MyProc(var par); и в локальных переменных процедуры var что-то : какого-то типа absolute par


 
Palladin ©   (2007-12-11 11:09) [24]


> Германн ©   (11.12.07 09:43) [20]

:)
очень просто

Procedure proc(SsylkaNaKuchuParametrovProisvolnogoTipa:Pointer);


 
korneley ©   (2007-12-11 11:22) [25]


> Palladin ©   (11.12.07 11:09) [24]
Ну это вообще универсально. И чревато. Особенно в "умелых" руках ;-)


 
korneley ©   (2007-12-11 11:26) [26]


> А о том, что реализовать функционал write/read на паскале
> невозможно. Эти процедуры нигде не описаны, они вшиты в
> компилятор.
К тому же нереентерабельны. Попробуйте в обработчике, скажем, 8-го прерывания их использовать... :)))


 
oldman ©   (2007-12-11 11:38) [27]


> {RASkov} ©   (10.12.07 19:43)  


Тебе еще повезло...
Меня попросили помочь - написать маленькую программку и нарисовать блок схему.
Сделал.

оказалось - надо на QBasik :(((
Вот уж попереводишь, так попереводишь...


 
{RASkov} ©   (2007-12-11 15:00) [28]

> [27] oldman ©   (11.12.07 11:38)
> оказалось - надо на QBasik :(((

Изначально был выбор - QBasic или Turbo Pascal
Я услышав про Паскаль, согласился :)
Но теперь, когда посмотрел задания, там математика сплошная..... т.е. есть дано: длина окружности(readln(N)), нужно посчитать ее площадь и вывести на экран(writeln(<тыры-пыры колдовство над(N)>))
Это самое простое наверное задание :)
Код-то я напишу, а вот формулы, по которым расчеты идут, уже не спомню.... :(
Я решил с ней все это делать, пусть она "вспоминает" формулы, а я ей в код переведу....
Она не на программера учится, поэтому ей знание языка, как такового, и не нужно)

ЗЫ Но, если что, переводить не буду! :)


 
Vlad Oshin ©   (2007-12-11 15:37) [29]

ReadKey, кажется, требует crt..


 
@!!ex ©   (2007-12-11 16:15) [30]

> [29] Vlad Oshin ©   (11.12.07 15:37)

да


 
Германн ©   (2007-12-11 16:45) [31]


> @!!ex ©   (11.12.07 10:34) [22]

Именно. Хоть кто-то меня правильно понял.


 
AlexKniga ©   (2007-12-11 17:15) [32]

> @!!ex ©   (11.12.07 10:34) [22]
Write/Read НЕ вшиты в компилятор TPC.EXE! Они лежат в модуле System расположенном в файле TURBO.TPL


 
@!!ex ©   (2007-12-11 17:20) [33]

> [32] AlexKniga ©   (11.12.07 17:15)

да? тогда вы не могли бы ответить на вопрос заданный в [20]?


 
Германн ©   (2007-12-11 17:20) [34]


> AlexKniga ©   (11.12.07 17:15) [32]

А ты его хоть раз сам своими глазами видел?
А ты знаешь что собственно файл TURBO.TPL не нужен, что можно его и не использовать?


 
AlexKniga ©   (2007-12-12 13:48) [35]

> @!!ex ©   (11.12.07 17:20) [33]
См. AlexKniga ©   (11.12.07 10:32) [21]

> Германн ©   (11.12.07 17:20) [34]
> А ты знаешь что собственно файл TURBO.TPL не нужен, что можно его и не использовать?
Удали сей файл. Пересобири проект, перезапустив ИДЕ. Или, если умеешь, то из коммандной строки.


 
@!!ex ©   (2007-12-12 14:10) [36]

> См. AlexKniga ©   (11.12.07 10:32) [21]

вообщето при вызове Write количество параметров не предеается.
ПРиведите пожалуйста код, который бы работал на паскале и реализовывал такую же работу с параметрами, как и write/read.


 
ыы   (2007-12-12 14:45) [37]

Write("Площадь грани ", N*N) при компиляции на уровне complier magic преобразуется в последовательность WriteString("Площадь грани"); WriteInteger(N*N);
А процедур с переменным количеством параметров без compiler magic таки нету.


 
AlexKniga ©   (2007-12-12 15:54) [38]

> @!!ex ©   (12.12.07 14:10) [36]
То, что компилятор по особенному обрабатывает некоторые функции, еще не означает, что они встроены в компилятор.

У меня нет исходников System.pas из TP7, по этому я смотрю исходники System.pas в Delphi5. Реализация WriteLn написана полностью.
Хотя и наличиствует следующий комент:
{*******************************************************}
{                                                       }
{       Borland Delphi Runtime Library                  }
{       System Unit                                     }
{                                                       }
{       Copyright (C) 1988,99 Inprise Corporation       }
{                                                       }
{*******************************************************}

unit System; { Predefined constants, types, procedures, }
            { and functions (such as True, Integer, or }
            { Writeln) do not have actual declarations.}
            { Instead they are built into the compiler }
            { and are treated as if they were declared }
            { at the beginning of the System unit.     }


 
Германн ©   (2007-12-12 16:01) [39]


> Instead they are built into the compiler

Ну а я об чем говорил?
А в исходниках ТР7 вообще нет никакой явной реализации Writeln и подобных ей процедур. Могу дать эти исходники для проверки.

P.S. А насчет Turbo.tpl это я погорячился. Краем уха припомнил что прочие модули можно хранить либо в ней, либо отдельно.


 
Anatoly Podgoretsky ©   (2007-12-12 16:13) [40]

> AlexKniga  (12.12.2007 15:54:38)  [38]

Откуда ты нашел реализацию Writeln - это же compiler magic



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.007 c
3-1189600405
voe
2007-09-12 16:33
2008.01.27
Удаление сокрытие данных после выборки


2-1198427858
Ezorcist
2007-12-23 19:37
2008.01.27
read div real


15-1198152858
Сергей М.
2007-12-20 15:14
2008.01.27
О файрволах и платформах


2-1198561743
uno
2007-12-25 08:49
2008.01.27
Компанент UdpSocket


15-1198134455
авыф
2007-12-20 10:07
2008.01.27
Font





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский