Язык Паскаль и среда PascalABC



Паскаль обычно применяют для обучения школьников, в реальной промышленности он на момент 2017 года мало где применяется и является несерьёзным. Хотя раньше, м.б. в 90-х, этот язык был гораздо более популярен наряду с Бейсиком. Тем не менее полезно изучить хотя бы основы. Т.к. мы уже знакомы с одним языком, изучение второго не представляет особой трудности- основные принципы программирования тебе уже и так понятны, поэтому не нужно долго размусоливать то, что ты уже и так знаешь.

Для программирования на паскаль мы можем использовать среду разработки PascalABC, она абсолютно бесплатна и общедоступна, скачать её можно на официальном сайте: pascalabc.net.

К слову сказать, это и среда разработки, и версия языка одновременно. Сделано нашими российскими разработчиками- вся инфа есть на их сайте. Сам язык Паскаль придуман человеком с интересной фамилией Вирт (есть же слово- виртуальный- вряд ли это связано, просто интересно) в конце 60-х, опубликован 1970-м году. К слову, с++ придуман тоже товарищем с интересной фамилией- Страуструп.

Изначально в паскале не было ООП (объектно-ориентированного программирования), но позже его добавили и язык уже стал называться Delfi (дельфи) или Delfi Object Pascal. Чем-то похоже на эволюцию с++ из языка си. В среде PascalABC немного изменённая и доработанная версия уже дельфи паскаля с ООП. Кроме того, тут есть упрощающие модуля для графики и виндовс окон. Виндовс приложения тут создавать гораздо легче чем в с++, потому что тут можно видеть сразу и явно дизайн, предлагаются варианты что можно прописывать и прочее. Также тут есть задачник для тренировки, справка по языку- в общем, можно самостоятельно освоить Паскаль на базовом уровне лишь по тем материалам, которые уже есть в самой программе PascalABC. В общем, тут всё создано для того чтобы какому-нибудь школьнику или студенту освоить с нуля разные части программирования (основы, ООП, виндовс окна, графика и прочее) было как можно легче и доступнее.

Итак, скачиваешь программу PascalABC c официального сайта:

http://pascalabc.net/downloads/PascalABCNETWithDotNetSetup.exe

Устанавливаешь, запускаешь- проект создаётся при запуске автоматически. Вместо int main() у нас используется начало и конец:

begin

// тут будет вся программа (комментарии делаются так же двумя слэшами)

end.

Кстати, есть у всей системы веб-версия, которая позволяет проверять код без использования самой среды на компьютере, своеобразный онлайн-компилятор:

http://wde.pascalabc.net

Здесь мы рассмотрим только основы, потому что можно написать целую аналогичную книгу, рассмотрев чуть ли не все типы, команды и прочее. Впрочем, ты сам это можешь посмотреть в справке (F1). Также тут есть примеры программ для самообучения: помощь -> изучаем pascalabc.net. И ещё есть задачник для самотренировки: модули -> посмотреть задания.

Никаких include, using namespace- этой всей фигни тут нет. Регистр букв тоже не важен, т.е. ты можешь писать Begin c большой буквы и разницы для компилятора никакой не будет. То же самое касается всех остальных команд.

Переменные объявляются после поля var. Например ниже примеры объявления целых чисел, вещественных и строк. Для строк ничего подключать не надо.

var

x,y : integer;

r : real;

s,s1,s2 : string;

Можно писать и так:

var x,y : integer;

var r : real; и т.п.

Переменные можно объявлять как до главного бегина, так и внутри.

Для ввода из консоли используются функции read или readln. В pascalABC разницы никакой не замечено. Для вывода- write и writeln. Если мы пишем writeln, то после вывода происходит переход на новую строку.

Ниже пример всей программы: создаём 2 переменные целого цисла, складываем и выводим:

begin

var a,b : integer;

write('a= '); read(a);

write('b= '); read(b);

writeln('a+b= ', a+b);

end.

Для запуска жмём зелёную кнопочку наверху или F5. Вывод будет внизу в самой среде, без консольных окон. Если нам нужно консольное окно, то программу нужно скомпилировать: верхнее меню -> программа -> компилировать (CTRL + F9). Далее в корневой папке диска С находим папку PABCWork.NET, в ней будет уже готовый exe файл с программой.

Для того чтобы не вылетало, тут нет system("pause"), поэтому запросим ввести какую-нибудь переменную, например тут в конце программы напишем просто read(a). И как только мы введём любое число и нажмём enter, консольное окно закроется. Можно предварительно также выводить что-то вроде "Программа завершена. Для выхода введите любое число и нажмите enter"

Можно вводить несколько переменных сразу: read(a,b,c,d);

Чтобы сделать просто лишний переход на новую строку, пишем: writeln(); это аналог cout << endl;

Присваивание идёт через двоеточие и равно. Например:

var pi : real; pi:= 3.141592653;

Также есть отличия в плане целых и дробных: если мы поделим 2 целых, которые нацело не делятся, то получится дробное и так выведется. Пусть мы делим 2 целых числа: a/b. Если нам нужна целая часть, пишем a div b. Остаток находится так: a mod b. Округлить до целого можно так: trunc(x);

Также работают операции изменения: a+=2 всё равно что a:= a+2;

Математические функции во многом аналогичны: sqrt(), abs(), sin() и т.д. Для них подключать ничего не надо. Точный список функций можно найти в справке.

Условие реализуется так:

if (условие) then делать;

Или так: if(условие) then делать одно else делать другое ;

Если действие больше чем одно, то вместо фигурных скобок у нас begin и end; Главный end с точкой, все остальные- с точкой с запятой.

Ниже пример упрощённой программы, которая считает корни квадратного уравнения:

begin

var a,b,c,d : real;

read(a,b,c);

if(a<>0) then begin

           d:= b*b - 4*a*c;

           if (d<0) then writeln('Корней нет');

           if (d=0) then writeln('x= ', -b/(2*a));

           if (d>0) then begin

                           writeln('x1= ', (-b + sqrt(d) ) / (2*a));

                           writeln('x2= ', (-b - sqrt(d) ) / (2*a));

           end;

end;

end.

Ах да, знаки тут немного отличаются: присваивание (:=), равенство (=). В отличие от с++, где у нас присваивание(=), равенство(==). Ну а "не равно" на паскале пишется как меньше или больше, т.е. <>

Для объединения условий: or (или), and (и), not (не). При этом тут не нужно заключать в скобки всё условие, если мы например что-то перечисляем:

if (x mod 2 = 0) and (x>=100) and (x<=999) then writeln(x);

Теперь циклы. Тут в основном 2 типа:

var i: integer;

for i:=1 to 100 do что-то делаем 100 раз

или

while (условие соблюдается) do делаем

Также есть третий редкий тип, аналог do while в c++, но с одним отличием: в с++ мы делаем пока условие какое-то соблюдается, а в паскале делаем пока какое-то условие не станет таким как надо:

repeat

делаем что-то

until (нужное нам условие чтобы выйти из цикла) ;

Например:

var a: real;

Repeat

read(a);

if(a<10) then writeln('Ошибка');

until (a>=10);

Прям так копируется как в паскаль абс- это даже круто ))) масштаб мы можем менять колёсиком, как и в visual studio.

Для цикла for в паскале у нас по умолчанию i++, в этом плане функционал меньше. Если мы хотим наоборот уменьшать итератор, то можно писать например так:

for var i:=8 downto 2 do write(i,' ');

Теперь посмотрим как делать массивы и функции. Массив из 10 целых чисел объявится к примеру так:

var mass : array[1..10] of integer;

и у нас есть элементы mass[1], mass[2] и т.д. до mass[10]. Нумерация здесь может идти не только с 0, но и с любого числа, например var a:array[4..14] of real; в этом плане функционал больше.

Можно сделать двумерный массив: var m:array[1..7, 1..5] of integer; И обращаться к элементу так: m[3,2];

Функции создаются так. Ниже на примере факториала:

function fact (n:integer) : integer;

begin

var res, i: integer;

res:=1;

for i:=1 to n do res:= res*i;

fact:= res;

end;

Заметим разницу: return тут нет, вместо этого присвоение значения имени функции, в нашем случае fact. Также всегда пишется кодовое слово function, а тип возвращаемого значения указывается после аргументов. И ещё точка запятой после этого.

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

function mrrow (a,b : real; c:string) : integer;

Используется функция как обычно, например write(fact(6)); или a:= fact(5);

Функции, которые ничего не возвращают, называются процедурами, а типа void тут нет, пишется так: procedure имя (аргументы) ;

Например, процедура перехода на новую строку n раз:

procedure nl (n:integer);

begin

for var i:=1 to n do writeln();

end;

Также можно использовать перегрузку функций.

Случайное число от 1 до n можно вызвать так: random(n)- это будет целое значение, которое можно использовать как мы хотим.

Вместо класса тут может использоваться структура (запись), т.е. без ООП (объектно-ориентированного программирования). Например, точка:

type point = record

x,y : integer;

end;

Обращение как к обычному элементу класса, например var a:point; a.x:= 100; a.y:= random(100); и т.п.

...

Теперь посмотрим как тут можно делать графику. Это гораздо проще чем в си плюс плюс. В начале программы пишем uses GraphABC; и можно сделать далее begin и end основные. Запустим- вылезет окошечко.

Система координат начинается с левого верхнего угла. Окно по умолчанию: 640 по ширине вправо и 480 по высоте вниз. Вместо 640 и 480 можно писать WindowWidth и WindowHeight. Также можно задать размеры окна самому, например 500 на 400:

SetWindowSize(500,400);

Теперь напишем, начиная с точки с координатой 100 вправо и 200 вниз, слово "привет". Для этого пишем такую программу, покажу всю:

uses GraphABC;

Begin

textout(100,200,'Привет');

end.

Можно выводить и числа- надо вместо 'Привет' написать какое-нибудь число.

Далее мы можем рисовать круги, прямоугольники и линии. Для этого используются свои функции:

circle(x,y,r); нарисовать круг с центром в (x,y) и радиусом r.

rectangle(x1,y1,x2,y2); нарисует прямоугольник между 2 диагональными точками: (х1,у1) и (х2,у2).

line(x1,y1,x2,y2); рисует линию по 2 точкам.

Можно в цикле рисовать несколько таких фигур. А ещё можно задавать цвет. Для этого перед рисованием фигуры пишем: SetBrushColor(цвет); Чтобы закрасить обводку, пишем SetPenColor(цвет). По умолчанию обводка чёрная, а цвет фигуры белый. Цвет начинается с cl и далее название на английском. Ниже пример рисования 5 красных линий:

uses GraphABC;

Begin

for var i:=1 to 5 do begin

SetPenColor(clRed);

line(0,0+i*50, 640, i*50);

end;

end.

Можно использовать случайный цвет: clRandom. Ниже мы нарисуем картину из 100 красных кругов со случайным радиусом и в случайных местах:

uses GraphABC;

Begin

for var i:=1 to 100 do begin

SetPenColor(clRed);

SetBrushColor(clRed);

circle(random(300), random(300), random(100));

end;

end.

Можно даже сделать простую анимацию, для этого делается задержка: sleep(миллисекунды); Например, будем рисовать круги вправо с задержкой:

uses GraphABC;

Begin

for var i:=1 to 10 do begin

sleep(300);

SetBrushColor(clRandom);

circle(i*50,100,50-i*4);

end;

end.

Посмотрим как загружать картинки. Нужно создать переменную типа picture:

var p : picture;

Естественно, у нас подключено graphabc. Далее я сделал в пэинте тестовую картинку, сохранил как jpg и переместил в папку PABCWork.NET на диске C.

Загрузка картинки: p:= picture.Create('example.jpg');

Помещение этой картинки в нужную координату: p.Draw(300,200);

Ниже я приведу код игры сапёр, на примере которого ты можешь со всеми этими технологиями ознакомиться:

uses graphABC;

 

Var

mass: array [0..11,0..11] of integer;

pic: array [0..15] of Picture;

x,y,i,j,n:integer;

size:integer;

 

procedure GameOver();

var i,j:integer;

Begin

for i:=1 to 10 do

for j:=1 to 10 do

pic[mass[i][j]].Draw(i*size, j*size);

end;

 

 

procedure MouseDown(x,y,mb:integer);

Begin

 i:=x div size;

 j:=y div size;

 if mb=1 then pic[mass[i,j]].Draw(i*size,j*size);

 if mb=2 then pic[11].Draw(i*size,j*size);

 if (mb=1) and (mass[i,j]=9) then GameOver();

end;

 

Begin

size:=32;

SetWindowSize(400,400);

OnMouseDown:=MouseDown;

 

for i:=0 to 11 do pic[i]:=Picture.Create('images/'+i.ToString()+'.jpg');

 

for i:=1 to 10 do for j:=1 to 10 do begin

mass[i,j]:=10;

if (random(5)=0) then mass[i,j]:=9;

end;

 

for i:=1 to 10 do for j:=1 to 10 do begin

n:=0;

if mass[i,j]=9 then continue;

if mass[i+1,j]=9 then n:=n+1;

if mass[i,j+1]=9 then n:=n+1;

if mass[i-1,j]=9 then n:=n+1;

if mass[i,j-1]=9 then n:=n+1;

if mass[i+1,j+1]=9 then n:=n+1;

if mass[i-1,j-1]=9 then n:=n+1;

if mass[i-1,j+1]=9 then n:=n+1;

if mass[i+1,j-1]=9 then n:=n+1;

mass[i,j]:=n;   

end;

 

for i:=1 to 10 do for j:=1 to 10 do pic[10].Draw(i*size, j*size);

 

end.

Картинки от этого сапёра ты можешь скачать и использовать здесь:

https://yadi.sk/d/72lR8VFy3KZT9Z

Про рисование игр на паскале можно было написать отдельную книгу, возможно я даже когда-нибудь её напишу, поэтому здесь мы на этом закончим. Всё-таки тут предполагался просто ознакомительный режим.

 

4 1 . Язык Си и отличия от С++

Как известно, язык с++ произошёл от си. В си нет объектно-ориентированного программирования. Сначала появился язык "си с классами", а позже уже и сам си плюс плюс. Название исходит из инкрементации си- как бы на единицу больше, т.е. чуточку получше. Язык си разработан в 1969-73 годах, примерно когда появился и язык паскаль.

Полезно посмотреть, как писать хотя бы простые вещи на языке си, тут во многом всё похоже на си плюс плюс. Кроме того, сам язык си входит в с++ (если упрощённо рассматривать, хотя всё чуточку сложнее), т.е. ты можешь в программе на с++ спокойно писать участки кода с конструкциями языка си и компилятор будет это переваривать. Хотя в общем случае это не так, но для начала для простоты мы можем принять и так. Язык си также называют "чистый си", в отличие от c++, c# и прочих. С++ был разработан в начале 80-х как усовершенствование языка си, опубликован в 1985 году.

Но мы можем создать и проект чисто на языке си. Для этого не нужна какая-то отдельная среда. В devcpp ты так же создаёшь проект, только выбираешь при этом не с++, а просто с. Создастся файл main.c. В visual studio ты тоже просто можешь создать файл main.c

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

Итак, приступим. В языке си тоже нужно подключать библиотеки, только они называются немного по-другому. Например, вместо iostream у нас stdio.h. Для подключения библиотек используется та же команда #include.

Для вывода информации используется функция printf(); Как в паскале примерно. Например, чтобы вывести привет, мы пишем: printf("Privet"); Для поддержки русского языка можно использовать такие же приёмы. Для перехода на новую строку можно использовать только последовательность "\n"; Типы переменных такие же: int, char, double и прочие.

Программа, которая выводит Privet:

#include <stdio.h>

int main() {

           printf("Privet\n");

           system("pause");

}

Теперь попробуем создать 2 переменные целого числа и сложить. В си есть заморочка с вводом и выводом переменных и ты сейчас офигеешь насколько в с++ в этом плане сделали всё проще.

Чтобы создать переменную a, мы пишем как привыкли: int a;

Можно через запятую создать две: int a,b;

А вот вводить переменную, например a, нужно так: scanf("%d",&a);

Т.е. мы не просто вводим переменную, а указываем через "%d" что мы вводим именно целое число. Для каждого типа переменной нужно указывать свои буквы после процента. А далее мы вводим не просто переменную, а ещё и с амперсентом, чем обозначается адрес.

На этом заморочки не заканчиваются. Выводить тоже надо с процентными последовательностями до переменных, но адрес ставить уже не надо. Вот вся программа, которая складывает 2 целых числа:

#include <stdio.h> // библиотека ввода-вывода

int main() {

           int a,b; // освобождение 2 ячеек памяти под целые числа с именами a,b

           scanf("%d",&a); // ввод переменной a

           scanf("%d",&b); // ввод b

           printf("%d",a+b); // вывод суммы

           printf("\n"); // переход на новую строку

           system("pause"); // пауза чтобы консольное окно не вылетало

}

А как же с типами float, double и прочими? Ниже список с процентными символами, которые нужно указывать:

%d — целое число типа int со знаком в десятичной системе счисления;

%u — целое число типа unsigned int;

%x — целое число типа int со знаком в шестнадцатеричной системе счисления;

%o — целое число типа int со знаком в восьмеричной системе счисления;

%hd — целое число типа short со знаком в десятичной системе счисления;

%hu — целое число типа unsigned short;

%hx — целое число типа short со знаком в шестнадцатеричной системе счисления;

%ld — целое число типа long int со знаком в десятичной системе счисления;

%lu — целое число типа unsigned long int;

%lx — целое число типа long int со знаком в шестнадцатеричной системе счисления;

%f — вещественный формат (числа с плавающей точкой типа float);

%lf — вещественный формат двойной точности (числа с плавающей точкой типа double);

%e — вещественный формат в экспоненциальной форме (числа с плавающей точкой типа float в экспоненциальной форме);

%c — символьный формат;

%s — строковый формат.

Поехали дальше. Арифметика в языке си такая же как в с++, т.е. знаки плюс, минус и прочее всё то же самое. Условия и циклы имеют такой же синтаксис.

Тогда теперь сосчитаем сумму чисел от 1 до 100 с помощью цикла на языке си. Это выглядит так:

#include <stdio.h>

int main() {

           int sum= 0, i;

           for (i=1; i<=100; i++) sum+= i;

           printf("%d",sum);

           system("pause");

}

Важно: в printf мы указываем только 2 аргумента: процентный символ и выводимое число. Все дальнейшие аргументы через запятую игнорируются. Приходится prinf писать несколько раз.

Если мы хотим вывести "Сумма: 5050" то тогда это выглядит так:

printf("Сумма: %d",sum);

Для русского языка как обычно прописываем setlocale(0,"");

...

Для корня, модуля и т.п. всё то же самое, но библиотека уже <math.h>

Ниже программа, которая считает арифметический корень из семи:

#include <stdio.h>

#include <math.h>

int main() {

           setlocale(0,"");

           printf("%lf",sqrt(7));

           printf("\n");

           system("pause");

}

Помним про процентные символы для ввода-вывода.

...

Статические массивы создаются и используются так же. Пример:

int a[5]= {2,4,7,5,1}; printf("%d", a[2]);

А вот динамические создаются по-другому. Нужно подключить библиотеку:

#include <malloc.h>

Массив целых чисел под именем mass и с числом элементов n создаётся так:

int *mass; mass = (int*)malloc(n * sizeof(int));

Ниже будет программа, где мы создаём массив, вводим элементы и затем выводим:

#include <stdio.h> // для ввода-вывода

#include <malloc.h> // для динамических массивов

int main() {

           setlocale(0,""); // для вывода русских символов

           int i,n;

           printf("Размер массива: "); scanf("%d", &n); // сколько элементов

           int *a; a = (int*)malloc(n * sizeof(int)); // создали массив

           // вводим элементы

           for (i = 0; i<n; i++) {

                    printf("a[%d] = ", i); // выводится будет a[0]=, a[1]= и т.д. в цикле

                  scanf("%d", &a[i]);

      }

      for (i = 0; i<n; i++) printf("%d ", a[i]); // выводим

           printf("\n"); system("pause");

}

Случайные числа создаются такими же функциями, только библиотеки <stdlib.h>, <time.h>

Ну и помнить про процентные символы, они тут как воздух в языке си.

Функции делаются так же как в си плюс плюс. Ниже пример генерация случайного двузначного числа через функцию:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int getrand() { return rand()%90 + 10; }

int main() {

           setlocale(0,"");

           srand(time(NULL));

           printf("%d ", getrand());

           printf("\n");

           system("pause");

}

Напоследок посмотрим работу с файлами поверхностно. Тут не нужно подключать библиотеки кроме stdio.h.

1. Для работы с файлами создаём переменную-указатель типа FILE:

FILE *f;

2. Для открытия файла с записью туда пишем:

f= fopen("test.txt", "w");

Если файла с таким именем в папке с exe нет, то он создатся.

Запишем туда число 134: fprintf(f,"%d", 134);

3. Закрытие файла: fclose(f);

4. Открытие файла для чтения: f= fopen("test.txt", "r");

Извлечём число: int a; fscanf(f,"%d", &a);

5. Закроем файл и выведем в консоль:

fclose(f); printf("%d",a);

Ну вот и всё. На этом, думаю, общее знакомство с языком С мы закончим.

Основы языка Java

Язык java является также одним из самых распространённых языков программирования. Он появился позже чем с++ (в 1995 году) и является более высокоуровневым, поэтому и более медленным, но в каких-то случаях более удобным для разработки на нём. Тем не менее java является си-подобным языком и поэтому похож на си плюс плюс. Но всё же тут очень много отличий и сложностей, это мы и посмотрим- как написать самые простые вещи на языке джава или ява.

Джава используется для программирования приложений на операционной системе для смартфонов Android, в этом может быть весомый интерес. К слову сказать, на iOS приложения пишутся на другом языке- Objective C. Изначально джава создавался как кроссплатформенный язык, чтобы можно было его использовать хоть на мобильниках, хоть в кофемолках (отсюда и название с логотипом), хоть и на компьютерах- в этом его особенность. Программы, написанные на java, переводятся в т.н. байт-код (машинно-независимый код низкого уровня), благодаря чему они могут работать на любой компьютерной архитектуре. Даже на старейших кнопочных телефонах обычно игры написаны на джава. А ещё на java написана легендарная игра майнкрафт. Ну вот, теперь после такого экскурса можно и приступать.

Для работы с java нам нужна виртуальная машина- скачать её можно на официальном сайте, называется java virtual machine. Или можно просто ввести "скачать джава на компьютер". Если ты когда-то играл в игры или пользовался приложениями, написанными на джаве, ты уже наверняка это скачивал и знаешь про это.

https://java.com/ru/download

Далее нам нужно скачать пакет разработчика- java development kit (JDK). Так же вбиваем в поисковик, заходим на официальный сайт и скачиваем. Эта вещь нужна чтобы писать программы на джава, т.е. уже для разработчика, а не просто для пользователя. Если у тебя 64-битная система, то выбираешь именно эту версию.

Ну и далее мы скачаем среду для программирования, хотя можно обойтись и без неё- но это для любителя будет слишком сложно поначалу и он бросит затею попробовать писать на джава ещё на старте. Поэтому мы скачаем IDE. Их несколько самых используемых: Eclipse, Netbeans, Intellij idea, а также android studio. Я пользовался eclipse, она у меня прижилась и работает, поэтому на её примере я и буду всё показывать. Скачать её можно бесплатно с официального сайта.

Важный момент: старые версии eclipse уже не устанавливаются. Поэтому с официального сайта нужно скачать последнюю версию.

JDK: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Eclipse: https://www.eclipse.org/downloads/

Теперь как создать новый проект в eclipse. Естественно, сначала мы её скачиваем и устанавливаем. В установке лучше идти по умолчанию. В начале выбрать eclipse for java developers. Ждём окончания установки. Всё, теперь можно использовать. Запускаем, жмём Launch. Выбираем директорию для сохранения проектов, можно оставить по умолчанию и поставить галочку "do not ask again". На рабочем столе также создастся ярлык.

Сразу скажу о ключевых заметных отличиях джавы от си плюс плюс:

1. Язык изначально объектно-ориентирован, всё тут завязано на классах.

2. Нет разделения на заголовочные файлы и исполняемые, всё в одном расширении .java

3. Всё преимущественно динамическое: массивы, классы, переменные и прочее. Причём эта динамичность тут как сама собой разумеющаяся по умолчанию.

4. Нет возможности лазить куда-то в память через указатели, адреса и прочее- это всё зашито самим языком от программиста.

5. Сборщик мусора, т.е. все ненужные переменные, объекты класса и прочее удаляются автоматически, в си плюс плюс нам нужно удалять вручную или через деструкторы.

И да, отдельно нужно сказать, что все эти java-штуки создают кучу мусора на компе во всяких папках вроде AppData, что потом хер вычистишь это всё. Eclipse тоже лезет туда и в обычную папку Program Files не устанавливается. И компиляция тут не совсем такая- создаются не exe файлы, а jar. Для создания же exe-запускателя нужны дополнительные ухищрения. Для начинающего это наверное самый замороченный язык и технологии из популярных- как сам код, так и потом преобразование его в рабочие программы, как мне, будучи "человеком с улицы", показалось, тем не менее мы посмотрим что тут да как, чтобы было хотя бы общее представление.

Теперь можем начинать. Сначала создадим новый проект следующим образом: file -> new -> java project

Пишем имя проекта в поле project name, остальное не трогаем, жмём finish. Далее слева на папку src нажимаем правой кнопкой мыши и выбираем new -> class. Пишем имя класса, я напишу mrrow. Ставим внизу галочку Which method stubs would you like to create? на поле public static void main(String[] args) и жмём finish. Создастся файл mrrow.java и некий главный код:

package test;

public class mrrow {

  public static void main(String[] args) {

  // ТУТ МЫ БУДЕМ ПИСАТЬ ПРОГРАММУ (ЭТО ГЛАВНАЯ ФУНКЦИЯ)

  }

}

Здесь ничего не убираем, это всё нужно. В главной функции пишем следующую команду:

System.out.println("Privet");

Она выводит слово Privet. Далее наверху жмём на самую левую зелёную кнопочку пуска или наверху Run -> Run (CTRL + F11) и внизу выйдет Privet как в паскале.

Если с++ показался достаточно громоздким по сравнению с паскалем, то java по сравнению с этим будет ещё более громоздкой. Вот этот код только для того чтобы вывести 1 строку:

package test;

public class mrrow {

  public static void main(String[] args) {

         System.out.println("Privet");

  }

}

Главная функция заключена тут ещё в одну конструкцию. Чем дальше ты углубишься в java, тем больше ты увидишь что классами тут является практически чуть ли не всё, это основа самого языка.

Ввод информации ещё веселее, но это будет дальше. Сначала как получить сам .jar файл, а не интерпретатор. Сначала мы переводим всё в формат .jar, для этого в eclipse выбираем file -> export -> java -> runnable jar file и внизу next. Далее Launch Configuration выбираем наш проект единственный из списка, export destination это в какой папке будет созданный jar файл и его имя. И далее finish. Теперь у нас создастся .jar файл.

Исполняемые файлы создаются чуть более сложнее, здесь мы подробно не будем рассматривать все эти технические аспекты, т.к. у нас просто поверхностное знакомство. Файл .jar тоже можно сделать исполняемым.

...

Ввод значений переменных производится таким образом:

1. В начале подключаем библиотеку: import java.util.Scanner;

2. Теперь можно использовать ввод вывод. Сначала создаётся сканер:

Scanner in = new Scanner(System.in);

3. Далее этот сканер можно использовать для ввода переменных:

int x= in.nextInt();

Либо в случае массива это так:

int []mass = new int [10];

for (int i=0; i<mass.length; i++) nums[i]= in.nextInt();

Да, в java можно определять длину массива атрибутом length. Ввод других типов переменных, например double- аналогичен. Там будет просто nextDouble();

Ещё есть:

next(): считывает введенную строку до первого пробела

nextLine(): считывает всю введенную строку

Ну и вводим мы латиницу. Для кириллицы обычно в настройках среды нужно поставить кодировку windows 1251.

...

Условия и циклы имеют аналогичный синтаксис как в с++, всё то же самое. Массивы, как можно заметить, объявляются чуть иначе: нужно 2 скобки перед именем массива ставить. И да, все массивы по умолчанию динамические.

При выводе информации в println мы можем использовать символьные последовательности из языка си, они тоже могут присутствовать.

Типы данных такие же как в си и с++, единственное строки мы объявляем как String, т.е. пишем с большой буквы. И сравнивать через равно строки нельзя, тут нужен метод equals: if (s1.equals(s2)) как-то так.

Функции и классы создаются так же, как в с++, тут тоже принципиально нового ничего нет. Есть перегрузки, шаблоны и всё стандартное.

 

Основы языка C#

Язык C# появился позже чем java и был разработан компанией Microsoft в 1998-2001 годах. Тем не менее он заметно похож на java. Произносится "си шарп". Работать с ним можно в той же Visual Studio 2012, просто вместо проекта на с++ мы создаём C# проект. Либо есть отдельные среды, если громоздкая VS не помещается на маленькую память. Я буду показывать всё на примере SharpDevelop, весит она всего 50 мб и легко устанавливается. Скачать можно тут:

https://yadi.sk/d/V-pL1FGT3L83e8

С# изначально создан для нужд майкрософт на основе java, т.е. на нём пишут обычно только под виндовс, в частности если это приложения для последний версий 8 и 10. Или ещё есть Windows Phone. Также язык c# тесно связан с игровыми движками вроде Unity. Язык с# тесно связан с платформой .NET Framework- поэтому тебе её нужно установить, если среда не будет работать или какая-то программа написанная на c#- хотя у тебя уже эта вся фигня может быть установлена, если ранее ты использовал какие-то программы, где замешан си шарп- а таких немало, например тот же Sony Vegas Pro для монтажа видео.

После установки среды и необходимых требуемых компонентов мы можем приступать к разработке на си шарп. Запускаем среду программирования, далее создаём новый проект следующим образом: file -> new -> solution. Выбираем консольное приложение. Пишем имя проекта (лучше на английском всегда сначала писать). Всё, создастся тестовый код:

using System;

namespace Mrrow {

           class Program {

                           public static void Main(string[] args) {

                                           Console.WriteLine("Hello World!");

                                           // TODO: Implement Functionality Here

                                           Console.Write("Press any key to continue . . . ");

                                           Console.ReadKey(true);

                           }

           }

}

Тут я стёр комментарии наверху о том что проект был создан в такое-то время, также немного причесал код. Ты можешь скомпилировать и запустить это, нажав зелёную кнопочку пуска посередине наверху под пунктом Analysis. Там всплывает подсказка: run compiled exe (does recompile)

По умолчанию всё создаётся в папке "мои документы". Компиляция, полагаю, происходит в связи с оболочкой, т.к. exe весит всего 5кб. Данный тестовый код просто выводит Hello World на экран. Можешь увидеть как это происходит. Понятно что вместо hello world можно писать любой свой текст. Также понятно как делается пауза.

Console.WriteLine("Hello World!"); аналог writeln в паскале (или println в java)

Console.Write("Press any key to continue . . . "); аналог write

Console.ReadKey(true); аналог cin.get в с++

public static void Main(string[] args) главная функция (как в java)

namespace Mrrow { ... Mrrow это имя проекта, я так назвал.

...

Типы данных такие же как в с++, тут есть int, double, char, bool. Менее точное для вещественных- float, более точное- decimal. Для целых соответственно short и long. Беззнаковое может делаться так: uint, ushort. И да, char тут имеет 2 байта (16 бит) и формат Unicode.

Вот пример работы с переменной:

int a=5;

Console.WriteLine(a+2);

Арифметика стандартная, объявление как в с++.

...

Теперь по поводу ввода информации. Почему-то эту тему всегда как бы пропускают во всех руководствах и самоучителях, как будто это и не важно. Хотя это ключевое вообще- нафига нам всё это надо, если мы сами не можем вводить числа и текста. Это удивительно для меня. Всё-таки видимо это редко используется где-то в крупных промышленных программах и там всё работает как-то само по себе.

Строку можно ввести так:

string a;

a=Console.ReadLine();

Причём даже русские символы вводятся и выводятся.

Пример с целым числом:

string a; a=Console.ReadLine();

int i=int.Parse(a); i=i+5; Console.WriteLine(i);

Теперь с вещественным:

string f = Console.ReadLine();

double F = double.Parse(f);

Console.WriteLine(F*2);

Важный момент- дробная часть тут вводится через запятую, как в бумажной математике.

...

Условия в с# делаются так же как в с++ или java, используем операторы if, else. Циклы то же самое как обычно: while, for. Но есть ещё один оператор, вот пример:

int[] mass = { 4, 7, 13, 20, 33, 23, 54 }; int sum = 0;

foreach (int x in mass) sum+= x; // высчитывает сумму всех элементов массива: для каждого int x в mass { делаем что-то }

Console.WriteLine(sum);

Массивы объявляются и используются как в java. А вот ещё: int[,,] numbers2 = new int[2, 2 ,3]; // объявление трехмерного массива

Также массивы можно делать ступенчатыми (в java тоже есть такая возможность, в с++ это делается через класс vector)

Функции делаются так же как привыкли в с++, но указывается вначале ещё public static.

 

Основы языка Python

Последним языком программирования мы рассмотрим Python (питон, пайтон), т.к. он тоже довольно популярный и распространённый на текущий момент. В отличие от ранее рассматриваемых языков, питон имеет уже динамическую типизацию: здесь при создании переменных не нужно указывать её тип, компилятор сам это определяет- это первое что бросается в глаза. Ну и язык сам ещё более высокоориентированный чем java. Пишут на нём, когда скорость разработки важнее скорости работы программы.

Чтобы начать писать на питоне, нужно установить соответствующее программное обеспечение.

1. С официального сайта качаем поддержку самого языка:

https://www.python.org/ftp/python/3.6.2/python-3.6.2.exe

Устанавливаем, весит это всё около 100 мб.
Разные версии питона могут немного отличаться, но мы будем использовать последнюю на текущий момент. Всё равно мы смотрим только в общих чертах.

2. Далее сама программа на рабочем столе ярлык не делает, нам нужно зайти в Start Menu на windows 8 или 10 или пуск-> недавно добавленные -> дополнительно -> открыть папку с файлом. И запускаем IDLE, это среда программирования, поставляемая в комплекте.

3. Открывается нечто похожее на блокнот, это своеобразный интерпретатор. Тут мы уже можем что-то писать на питоне. Например, попробуй ввести print(2+3) и нажать enter.

...

Ты можешь поначалу заметить, что тут писать очень удобно. Например, мы хотим создать переменную. Делаем просто так:

a= 6 далее enter

print(a*2) и опять enter

выведет 12. Всё предельно просто.

Ты можешь попрактиковаться немного с арифметикой.

...

Чтобы работать не в интерпретаторе, а создавать файлы, компилировать и т.п, то создаём новый файл: file -> New File

Создастся файл. Напишем в нём какую-нибудь простую программу типа такой:

name = input("Как тебя зовут: ")

print("Привет,", name)

Точки с запятой на конце не ставятся, как ты уже понял. Далее жмём F5. Или Run -> Run Module. Можем перед этим сохранить файл как предлагают.

И всё, в этом интерпретаторе запустилось. Чем-то похоже на паскаль. Тут, кстати, можно ввести несколько слов через пробел- getline автоматический.

Тот файл, который мы сохранили перед запуском, мы можем запускать как обычный exe исполнитель. Только расширение у него .py, но тем не менее работает как обычное консольное приложение.

...

Идём дальше. Напишем программу, которая будет решать квадратное уравнение. Это полезная интересная программа, которую есть смысл писать всегда при изучении нового языка: тут мы можем понять ввод информации, вывод, переменные, а также условия.

Может возникнуть ряд сложностей, например как ввести переменные. input() возвращает строку, а нам нужно вещественное число. Для целого мы можем написать так: a= int(input()). Остальное аналогично: вещественные числа пишутся как float.

Второе: как нам сделать условия. Аналогично через if, else. Только конструкция else if объединяется в elif, а отступы тут обязательны. Условие в скобки не берётся, вместо then у нас двоеточие. Пример:

d= b*b-4*a*c

if d==0 :

           print("x= ", -b/(2*a))

Далее: как нам сделать квадратный корень. Он тут не работает просто sqrt. Мы должны в начале программы написать import math, что значит подключить математическую библиотеку. И далее использовать math.sqrt()

Получим весь решатель квура:

import math

print("Введите a,b,c: ")

a=float(input())

b=float(input())

c=float(input())

d= b*b-4*a*c

if d==0 :

print ("x= ",-b/(2*a))

elif d<0 :

print ("Корней нет")

else :

print("x1= ",(-b+math.sqrt(d))/(2*a))

print("x2= ",(-b-math.sqrt(d))/(2*a))

m= input()

В конце мы вводим новую переменную, чтобы в консоли программа не вылетала сразу после того как выведет корни.

...

Циклы в питоне похожи на те что были, слова те же, только синтаксис немного другой.

1. Цикл while на примере наибольшего общего делителя:

x=108; y=48

while y!=0 :

z= x % y

x= y

y= z

print(x)

2. Цикл for на примере сложения 1*1+2*2+...+100*100:

sum=0

for i in range(1,101) :

sum+= i*i

print(sum)

Вместо range может быть строка и мы можем делать что-нибудь в ней, например заменить букву:

for i in "муська" :

           if i=='у' :

                           i= 'У'

           print(i,end='')

Также range может принимать разное число аргументов. Вместо range(1,101) можно было бы написать просто range(101). По умолчанию начинается с нуля, типа как-то так: range(start=0, stop). Цикл работает пока i<stop. И ещё можно сделать изменение итератора как в с++ произвольное, например чтобы только через каждые 2 считал: range(1,101,2)

Также тут есть стандартно break и continue.

...

Теперь как делать массивы- это тут проще чем в языках со статической типизацией:

mass= [1,3,4,7]

print(mass)

И всё, никаких выводов в цикле не надо. Хотя в си-подобных языках мы и выносили вывод в отдельную функцию.

Двумерные создаются аналогично:

matrix= [[1,2,3],[4,5],[6]]

print(matrix[2][0])

Выведет 6. При выводе всей таблицы будет так же как при объявлении. По сути у нас тут следующее:

1 2 3

4 5

6

Т.е. мы легко и спокойно можем заносить подмассивы разной длины.

Ниже показано как объединить 2 массива в один:

a= [1,2,3,4,5]

b= [4,0,2,5,1]

print(a+b)

Выведет: [1, 2, 3, 4, 5, 4, 0, 2, 5, 1]

По факту же в питоне нет массивов в привычном понимании, это более обще называется списками.

Тут я сложил 2 массива поэлементно как обычно:

a= [1,2,3,4,5]

b= [4,0,2,5,1]

c= [0,0,0,0,0]

for i in range(5) :

c[i]= a[i] + b[i]

print(c)

Вообще массивы тут достаточно долгая тема, есть отдельные библиотеки для упрощения работы с ними. Мы пока на этом остановимся.

...

Функции- как же они тут делаются. Через кодовое слово def. Ниже пример для вычисления гипотенузы:

import math

def mdl (x,y) :

return math.sqrt(x*x+y*y)

print(mdl(2,1))

И да, все переменные тут шаблонны- вместо x,y могут быть и числа любого типа, строки и т.п.

Ну и напоследок: если мы хотим создать число типа float, а не int (если вдруг нам надо), то пишем изначально: a= 5.0, т.е. 0 после точки (дробной части)- это покажет компилятору что число вещественного типа. Здесь же нам это не нужно, sqrt сам возвращает в вещественном виде. Как и деление- всё аналогично паскалю.

________________________________________________

КОНЕЦ

Васька Мырт, 2017


Дата добавления: 2018-09-22; просмотров: 240; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!