
Pascal |
C/C++ |
Uses module_name (Crt например) |
#include <module_name> stdio.h – содержит описание функций ввода/вывода; math.h – математические функции; iostream.h – функции потока данных. #include - директива препроцессора |
:=(присваивание) |
= |
=(сравнение) |
== |
x=x+y; |
x += y; (или x=x+y, но первый вариант предпочтительней) |
i=i+1 или Inc(i); |
i++; |
integer |
int |
real |
float, double |
char |
char |
string |
string, AnsiString(только в Borland C++) |
write(); writeln(); |
printf(“Результат: %d”, x); %d – int, %f – float (double), %c - char, %s –string printf(“M( %d) = %f\n”, t, M); \n - переводит курсор на новую строку. Например, в результате на экране отобразится: M(2)=5,238 |
read(); |
scanf(“%d”, &x); & - взятие адреса (обязательно) |
if ( ) then begin … end [else begin … end] |
if () { … } [else { … } ] |
case |
switch (в двух словах не опишешь, см [2], стр.86) |
[] – значит необязательно, т.е. else может и не указываться |
|
for i := 1 to 10 do begin … end |
for (i=1; i<=10; i++){ … } |
while () do begin … end |
while () {… } |
repeat begin … end until () |
do { … } while () |
A – массив размерностью n |
|
A[1],A[2],…,A[n] |
A[0],A[1],…,A[n-1] |
К С/С++: Если вы выделяете символьный массив, к примеру на 10 символов, то сможете уместить только 9. Последний десятый это символ окончания строки – ‘\0’, подробнее см. [1] |
|
Function FunctName(var: type,…): returning_type Begin … End (кажется так) |
прототип функции (инициализируют до функции main): int FunctName(int , …); описание функции (идет после функции main): int FunctName(int x, …) { int Result; … return Result; } return можно и не указывать, тогда функция ничего не возвращает (процедура). |
Procedure |
void FunctName(int x, …) {…} – функция, которая ничего не возвращает. Инициализация как у функции. Понятия процедуры в Си нет. |
Функция main – точка входа в вашу программу. Аналогично Begin/End , которые пишут в самом начале/конце программы на Паскале. Прототип для этой функции не требуется.
Пример программы на каноническом Си:
#include <stdio.h> /* необходим для работы ф-ций printf, scanf */
#include <conio.h> /* необходим для работы ф-ции getch*/
int F(int ); /* Прототип функции. */
/*
Ниже и есть та самая функция main, которая может иметь аргументы argc и argv. Это зависит от того, есть ли параметры для исполняемого файла в командной строке. Подробнее см. [1].
*/
int main() {
int x; /* Инициализация переменной x с типом integer. */
printf("Введите значение: "); /*Выводим надпись на экран.*/
scanf("%d", &x); /* Считываем переменную х, введенную пользователем с клавиатуры.*/
printf("Квадрат значения: %d", F(x)); /*Выводим результат, которая вернула функция F.*/
getch(); /*А ля readln;*/
} /* конец программы */
int F(int y) { /* описание функции F*/
/* можно включить в параметры переменную с именем x
(объявление локальных/глобальных переменных см. [2]) */
return y*y; /* Оператор возврата функции. Может возвращать любую переменную из тела функции, а так же саму функцию (рекурсия).*/
}
Математические функции (файл math.H)
мат. функция |
синтаксис |
примечание |
acos |
double acos(double x) |
arcos (аналогично arcsin, atan) |
cos |
double cos(double x) |
Есть также sin, tan; x – в радианах |
cosh |
double cosh(double x) |
cos гиперболический (sinh, tanh) |
ceil |
double ceil (double x) |
округление вверх |
exp |
double exp(double x) |
экспонента |
abs |
double fabs(double x) |
абсолютное значение (модуль) |
hypot |
double hypot(double x, double y) |
гипотенуза |
ln |
double log (double x) |
логарифм натуральный (!) |
log10 |
double log10 (double x) |
логарифм десятичный |
power |
double pow(double x, double y) |
|
sqrt |
double sqrt (double x) |
корень квадратный |
Другие полезные функции
функция |
синтаксис |
примечание |
rand |
int rand(void) (stdlib.h) |
псевдослучайное целое число в диапазоне 0 – RAND_MAX |
random |
int random (num) (stdlib.h) |
псевдослучайное целое число в диапазоне 0 – num |
atof
|
double atof (const char * s) (math.h, stdlib.h) |
преобразует строку S в число с плавающей запятой |
atoi |
int atoi (const char * s) (stdlib.h) |
преобразует строку S в целое число |
ecvt |
char * ecvt(double value, int ndig, int *dec, int *sign) (stdlib.h) |
преобразует число с плавающей запятой value в строку с числом цифр ndig; dec сохраняет позицию десятичной точки, sign – знак |
gevt |
char * gevt(double value, int ndec, char *buf) (stdlib.h) |
преобразует value в строку buf с числом цифр ndec |
itoa |
char * gevt(int value, char *string, int radix) (stdlib.h) |
Целое value в строку string по основанию radix. |
Множество других функций, в т.ч. работы с символами и строками можно найти в [2]. Их не описываю, т.к. для написания лаб они не нужны.
Среда разработки. Что выбрать?
Помимо самого языка, требуется знание среды разработки (IDE). Среда разработки – это набор инструментов, облегчающих работу программиста. Включает компилятор, отладчик, текстовый редактор, трасировщик, объект-инспектор для изменения свойств компонентов (кнопки, окна, текстовые поля и т.п.), графический редактор (для рисования кнопочек, иконок и т.п.), обозреватель классов и кучу полезных вещей. Самые распространенные: Microsoft Visual Studio, Nokia Qt, Borland C++, Eclipse и т.д. Каждая из них имеет свою особенность – платформу, интерфейс пользователя, свой набор классов, свои иерархии классов, описание пользовательского интерфейса. Разработчики сред добавляют свои типы данных, классы (AnsiString у Borland’a к примеру), а Microsoft вообще переделывает имена файлов главных канонических библиотек (например include “STDIO.H” вместо <stdio.h>). Я думаю, они хотели переделать и синтаксис, но им не позволили, а язык лег в основу C#. Тем не менее, зная Studio, работу вы точно найдете. Но есть одно но. Мне эта IDE, уже писавшему программы с графическим интерфейсом, показалась непонятной и сложной. Без самоучителя, в лоб ее точно не освоить. А читать литературу, еще и по программированию, многие не любят. Да и время это требует.
Borland C++. Я учился в этой среде. Мне она нравится больше, она как то более логична. Продуктам Microsoft логичность не свойственна. Среда сложновата для начинающего, но разобраться в ней можно.
Nokia Qt – перспективная кроссплатформенная среда, быстро набирающая популярность. Можно разрабатывать приложения для Windows, Linux, Mac OS, Unix, Symbyan (или как он там пишется?), и сейчас даже на Android. Требует книжного изучения.
Я бы советовал начинать не с IDE, а с простого компилятора. Т.е. писать код в текстовом редакторе, а потом компилировать в командной строке и там же запускать cкомпилированное приложение. Покажется дико, но на самом деле это не так уж и сложно. Почему? Команду придется набирать только один раз - стрелочками на клавиатуре (вверх или вниз) можно выбирать ранее введенные команды. Компилятор мало весит, быстро качается и ставится, занимает мало дискового пространства. И самое главное, компилятор gcc приближен к каноническому С/С++, зная который вы потом сможете выбрать IDE по вкусу.
IDE ставятся легко, найти через поиск хакнутые версии и кейген я думаю вы сможете. Для счастливых обладателей лицензионной Windows можно скачать халявный Express Visual Studio (нужна регистрация) , у Nokia есть версия Qt с открытым исходным кодом. У Borland тоже есть ознакомительные версии (урезанные, но лабы написать хватит).