Другие языки программирования и технологии

С/C++ программисту изучить turbo pascal 7 в короткие сроки (вынужденная необходимость)

Нобходимо в ВУЗе писать на паскале (сказали версия 7 - на сколько понимаю турбо) .

Сам знаю С/C++ очень основательно (не хеловорлды писать - писал несколько достаточно больших проектов) . Необходимо в короткие сроки понять синтаксис паскаля (и ооп в нем) . Посоветуйте какую-нибудь брошуру\книгу вроде "Быстрый разбор всех возможностей паскаля для С\С++ программистов" или просто 2 столбика брошуру - как "это" делается в паскале и С - гугль ничего аткого не нашел.

Спасибо,
Гордо называющий себя так, штудент МФТИ в котором зачем-то учат паскаль :)
Ой, да я тебе прямо тут объясню.

Типичная структура программы:

program Someth; // Пишется в начале главной программы. Обязательно. Имя программы обязано совпадать с именем файла, в котором она хранится.
uses Unit1, Unit2; // Аналог #INCLUDE по умолчанию подключается модуль System, поэтому можно вообще эту секцию не писать
const Myconst=1; // Аналог #DEFINE
type MyType=Integer; // Так можно определять типы.
var MyVar:MyType; // Описание переменной. Обрати внимание: сначала имя, потом через двоеточие тип. В теле программы переменные описывать нельзя.
begin // Точка входа основной программы, то же что и void main(void)
end. // В конце программы - точка

Процедуры и функции. Пишутся в любом месте между uses и begin основной программы. Если ты писал void MyProc(int x) {} и int MyFunc(int x) {}, то теперь писанины будет больше:

procedure MyProc(x:integer);
begin
end;

function MyFunc(x:integer):integer;
begin
MyFunc:=42;
end;

Вообще, begin - end - полный аналог логических скобок {} Обрати внимание, как функция возвращает значение, а также на операнд присваивания := . Ее выполнение на этом не заканчивается, если есть еще команды - они будут выполнены. Досрочный выход - exit; Если необходимо передать значение по ссылке (int *x), используется var:

procedure NextIntVal(var x:integer);
begin
x:=x+1;
end;

Передача разнотипных параметров:

procedure Amba(k:integer; s:string);

Циклы:
for j:=1 to n do
for j:=n downto 1 do - наоборот
Паскалевский цикл со счетчиком всегда идет подряд по любому перечисляемому типу. Значение переменной цикла внутри него менять нельзя - результат непредсказуем. После выполнения цикла значение переменной цикла может быть любым.

while j< n do inc(j);

repeat
inc(j);
until n>=j; - это вместо do - while;

Досрочный выход из цикла - break;

Ветвления:

if a=b then b:=c else d:=e;

Если используется сложное булевское выражение, его части берутся в скобки:

if (a=b) and (c=d) then begin end;

Аналоги булевских операций:

and &&
or ||
not !
= ==
< > != - без пробела
xor -извини, не знаю как это на С
< <
> >

Основные типы данных:

shortint -128 127
byte 0 255
integer -32768 32767
word 0 65535
longint - четырехбайтный со знаком
real - плавающая точка, малая точность
double - это ты знаешь
extended - это тоже
char - оин символ
string - символьная строка до 255 символов длиной. Нулевой элемент содержит ASCII код длины строки. Со строками можно работать как с массивом данных:
s:='bibigon';
write(s[5]); - выведет g

pointer - указатель на память

Описание массивов:

var a:array [-8..n] of integer;
ac: array[char] of integer
zh:array[7] of char;

Примеры обращения к этим массивам:
a[-5]:=8;
ac['u']:=77;
zh[0]:='g';
zh[6]:='a';

Ввод-вывод:

write('a'); printf("a");
writeln('a') ; printf("a\n");
read(b); scanf(*b);

Вкратце - все. Теперь ты сможешь большинство сишных программ перевести на паскаль.
Алексей Антошин
Алексей Антошин
87 076
Лучший ответ
Сергей Шмаков >> program Someth; // Пишется в начале главной программы. Обязательно.

Если не изменяет склероз, то совсем не обязательно. По-крайней мере для ТР

>> Имя программы обязано совпадать с именем файла, в котором она хранится.

Только в том случае, если это имя модуля.

А вообще +5
Кот Баюн Плюс 5. Хотя насчет имени программы Gennady прав - это из Delphi.
Александр Исаев +5. Блеск. Спасибо.

Еще бы ООП в такой же форме - было бы вообще прекрасно. :)

Кстати "индея" будет пользоваться большой популярнойстью - такой туториал "to Pascal from C".
Паскаль довольно простой язык, идет как стартовый в большинстве ВУЗов. Очень интересная и понятная книга Фаронов Turbo pascal 7.0; Думаю тебе будет достаточно полистать ее, да и в интернете она есть в свободном доступе.

http://global-download. ru/pas/128-v-v-faronov-turbo-pascal-70-nachalnyj-kurs.html
Егор Сидоренко
Егор Сидоренко
20 142
синтаксис в паскале проще гораздо чем в С, скачай любое пособие и почитай, ничего там особо сложного нет, тем более для тебя, если знаешь С/С++
Александр Исаев Да это понятно, только тратить часов 10-20 (т.е. несолько дней) времени на проштудирование учебника по паскалю не хочется. Ведь на самом деле все достаточно прозрачно там должно быть. - просто сравнительной таблички бы хватило.
В короткие сутки ты не выучиш я учил 6 лет
Александр Исаев Хм. Мне кажется, что они как бы похожи, нет? Оба высокого уровня. В паскале тем более нет низкоуровневого доступа - уже проще. Я не говорю освоить все доп. библиотеки и модули. МНе бы элементарно понять синтаксис не читая многотомники с описанием опреатора присваивания.