Цикл
С |
PHP |
Pascal |
while (a <= 10) a = a++; |
while ($a <= 10) $a++; |
while (a <= 10) do a = a++; |
Ветвление
С |
PHP |
Pascal |
if (a == 0) b = 1; |
if ($a == 0) $b = 1; |
if a=0 then b := 1; |
Используя основные конструкции |
Используя производный оператор |
<?php if ($i == 0) { echo "i equals 0"; } elseif ($i == 1) { echo "i equals 1"; } elseif ($i == 2) { echo "i equals 2"; } ?> |
<?php switch ($i) { case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; case 2: echo "i equals 2"; break; } ?> |
С |
PHP |
Pascal |
int INC (int a) { return a+1; } |
|
function INC (a:integer): integer; INC := a+1 End; |
С |
PHP |
Pascal |
char int float double |
boolean integer float string |
boolean char integer real |
Указатели
Массивы
С |
PHP |
Pascal |
= + - * / % |
= + - * / % |
:= + - * div mod |
Задача: найти наибольший общий делитель (НОД) чисел a и b.
{ a и b – целые числа, не равные 0 одновременно}
программа
{x = НОД(a,b)}
{ a и b – целые числа, не равные 0 одновременно}
выбрать достаточно большое x
{всякое число, более x, не является общим делителем a, b}
уменьшать x пока не найдем требуемое
{x = НОД(a,b)}
Выбор достаточно большого x
{ a и b – целые числа, не равные 0 одновременно}
если а не равно 0 то x ← a
если b не равно 0 то x ← b
{всякое число, более x, не является общим делителем a, b}
Уменьшение х
{всякое число, более x, не является общим делителем a, b}
пока x не является общим делителем уменьшить x на единицу
{x = НОД(a,b)}
НОД(a, b) = НОД(a, –b) = НОД(–a, b)
НОД(a, 0) = a
НОД(a – b, b) = НОД(a, b)
НОД(a, b–a) = НОД(a, b)
{ a и b – целые числа, не равные 0 одновременно}
A ← a, B ← b
{НОД(A, B) = НОД(a, b)}
Изменять A и B не изменяя НОД(A, B) пока A или B не станет 0.
{НОД(A, B) = НОД(a, b), A = 0 или B = 0}
если A равно 0 то x ← B
если B равно 0 то x ← A
{x = НОД(a,b)}
{НОД(A, B) = НОД(a, b)}
Сделать A и B не отрицательными
{НОД(A, B) = НОД(a, b) A > 0 и B > 0}
Уменьшать A и B не изменяя НОД(A, B) пока A или B не станет 0.
{НОД(A, B) = НОД(a, b), A = 0 или B = 0}
{НОД(A, B) = НОД(a, b)}
eсли А => 0, B => 0 ничего не делать
eсли А => 0, B < 0 B ← –B
eсли А < 0, B => 0 A ← –A
eсли А < 0, B < 0 A ← –A, B ← –B
{НОД(A, B) = НОД(a, b) A > 0 и B > 0}
{НОД(A, B) = НОД(a, b) A > 0 и B > 0}
Уменьшать A и B не изменяя НОД(A, B) пока A или B не станет 0.
{НОД(A, B) = НОД(a, b), A = 0 или B = 0}
Первая попытка
{НОД(A, B) = НОД(a, b) A > 0 и B > 0}
Пока A или B не станут равным нулю повторять
A ← A – B
{НОД(A, B) = НОД(a, b), A = 0 или B = 0}
Правильный вариант
{НОД(A, B) = НОД(a, b) A > 0 и B > 0}
Пока A или B не станут равным нулю повторять
если A > B A ← A – B
если A < B B ← B - A
{НОД(A, B) = НОД(a, b), A > 0 и B > 0, A = 0 или B = 0}
Предусловие
Постусловие
Условие окончания цикла
Инвариант
Исчисление (логика) Хоара
Факториал
fact(1) = 1;
fact(n) = fact(n-1)*n;
int fact(int n);
{
if n=1 return 1;
return fact(n-1)*n;
}
Числа Фиббоначи
fib(1) = 1;
fib(2) = 1;
fib(n) = fib(n-1) + fib(n-1);
Инвариант
Условие окончание
Предусловие
Постусловие
Тело цикла
f = 1;
Для I от 1 до N
F =F*I;
Стандарт кодирования GNU
http://www.opennet.ru/docs/RUS/coding_standard/
Соглашения по оформлению кода команды RSDN
http://www.rsdn.ru/article/mag/200401/codestyle.XMl
Количество операторов в строке
Пробелы
Пустые строки
Шрифт
Табуляция
Стиль Олмана
if (<cond>)
{
········<body>
}
Имена переменных и функций
ignore_space_change_flag
MouseEventHandler
Венгерская нотация
sClientName
Комментарии
/*
многострочный
комментарий */
//
однострочный комментарий
Что комментировать:
исходный файл
каждую функцию, тип данных, класс (структурную единицу)
глобальные переменные
нетривиальные алгоритмы
#define LOWER 0
void assert (int выражение)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.