С какого ЯП начать?

Kent

Новичок
Здравствуйте, хочу начать изучать ЯП. Думал начать изучать C++ , но многие люди говорят что начинать изучение С++ без знания других языков все равно что начинать учить математику с линейных уравнений. Прошу подсказать с какого языка программирования стоит начать.
 

Krinkels

Он где то тут
Администратор
но многие люди говорят что начинать изучение С++ без знания других языков все равно что начинать учить математику с линейных уравнений
Бред. Ну изучишь ты, скажем, паскаль, и что тебе это даст? Начнешь учить плюсы, а значит, нужно привыкать к новому синтаксису, нужно заводить новые привычки, новые правила. А так, что то не понятно, полез в тот же msdn, там и описание, и примеры на плюсах, изучай не хочу
 

Kent

Новичок
Бред. Ну изучишь ты, скажем, паскаль, и что тебе это даст? Начнешь учить плюсы, а значит, нужно привыкать к новому синтаксису, нужно заводить новые привычки, новые правила. А так, что то не понятно, полез в тот же msdn, там и описание, и примеры на плюсах, изучай не хочу
Спасибо за совет, поставил Visual Studio и начал таки изучать с ++ . Пока-что вроде-бы все понятно :good:
 

Timick

Старожил
Krinkels, Ну ну совсем согласен. Смысл в том, что на C++ самый сложный синтаксис (для меня, по крайне мере). Там даже простейшая программа страшно выглядит, не говоря уже о чем-то серьёзном. Вот пример:
Решение квадратного уравнения: С++
Код:
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;

int main()
{
    double a,b,c,D;
    do
    {
        cout<<"Solving a*x^2 + b*x + c = 0\n";
        cout<<"a = ";cin>>a;
        cout<<"b = ";cin>>b;
        cout<<"c = ";cin>>c;
        D = pow(b,2) - 4*a*c;
        if(0 <= D)
        {
            cout<<"x1 = "<<(-b - sqrt(D))/2*a<<endl;
            if(0 < D)
                cout<<"x2 = "<<(-b + sqrt(D))/2*a<<endl;
        }
        else
        {
            cout<<"Equation has complex answer\n";
            //sqrt(D) = 0 + j*val
            //0 + j*val + re = re + j*val
            D = fabs(D);
            cout<<"x1 = "<<-b/2*a<<" - j*"<<sqrt(D)/2*a<<endl;
            cout<<"x2 = "<<-b/2*a<<" + j*"<<sqrt(D)/2*a<<endl;
        }
        cout<<"Press Y - for new input\n";
    }
    while(toupper(getch()) == 'Y');
    system("pause");
    return 0;
}

Решение квадратного уравнения: Паскаль
Код:
Var
  a, b, c, d: real;
begin
  write('Введите коэффициенты a,b,c ');
  readln(a, b, c);
  d := sqr(b) - 4 * a * c;
  if d = 0 then
  writeln('Корень один x = ', (-b / (2 * a))
  else if d >0 then
  writeln('x1 = ',(-b + sqrt(d)) / (2 * a), ' x2 = ',(-b - sqrt(d)) / (2 * a))
  else writeln('Действительных корней нет');
end.

Но это моё скромное ИМХО, решать в любом случае Вам. Но не даром же в школах изучают Паскаль, а не, скажем, C++ (По крайне мере в тех, которые я знаю)

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cyr_io.h"

void add(void)
{
        FILE    *File;
        char myfile[50];
        short   Iter=0;
        short   Temp=0;
        short   CoordX=0;
        short CoordY=0;
        short   SumObj=0; //Коллличество объектов уже записанных в файле
        short NPoint=0; // Количество точек в метрике объекта
// Открываем файл на чтение, чтобы проверить его на наличие и количество записаных объектов
        rprintf("Введите имя файла\n");
        gets(myfile);
        if((File=fopen(myfile,"rb"))!=NULL)
        {
            while(!feof(File))
            {
                fread(&Temp,sizeof(short),1,File);
                if(Temp=='\n')  SumObj++;
            }
            SumObj--;
            fclose(File);
        }

        if(SumObj==0)
        {
            File=fopen(myfile,"wb");
        }
        else
        {
            File=fopen(myfile,"ab");
        }

        SumObj++;
        fwrite(&SumObj,sizeof(short),1,File);

    rprintf("Введите количество точек в метрике объекта:");
    scanf("%d",&NPoint);
        fwrite(&NPoint,sizeof(short),1,File);

        for(Iter=0;Iter<NPoint;++Iter)
        {
            rprintf("Введите X координат объекта:");
            scanf("%d",&CoordX);
            rprintf("Введите Y координату объекта:");
            scanf("%d",&CoordY);
            fwrite(&CoordX,sizeof(short),1,File);
            fwrite(&CoordY,sizeof(short),1,File);
        }
        Temp='\n';
        fwrite(&Temp,sizeof(short),1,File);

        fclose(File);
    getchar();
}

void view(void)
{
    FILE    *File;
    short   NPoint=0;//Количество точек в метрике объекта
    char myfile[50];
    short   NObj=0;// № объекта
    short   SumObj=0;// Количество объектов уже записаных в файе
    short   Iter=0;
    short   Temp=0;
// Открываем файл на чтение, чтобы проверить его наличие и количество записаных объектов
        rprintf("Введите имя файла\n");
        gets(myfile);
    if((File=fopen(myfile,"rb"))!=NULL)
    {
        while(!feof(File))
        {
            fread(&Temp,sizeof(short),1,File);
            if(Temp=='\n')  SumObj++;
        }

        SumObj--;

        fclose(File);
    }
    else
    {
        rprintf("Файл с метриками отсутствует !");
        return;
    }

    do
    {
        rprintf("Введите номер объекта:");
        scanf("%d", &NObj);
    }   while(NObj<1 || NObj>SumObj);

    File=fopen(myfile,"rb");
    while(!feof(File))
    {
        fread(&Temp,sizeof(short),1,File);
        if(Temp==NObj)
        {
            fread(&NPoint,sizeof(short),1,File);
            for(Iter=0;Iter<NPoint;++Iter)
            {
                fread(&Temp,sizeof(short),1,File);
                rprintf("Координата X: %2d, ",Temp);
                //CoordObj1[0][Iter]=Temp;
                fread(&Temp,sizeof(short),1,File);
                rprintf("Координата Y: %2d\n, ",Temp);
                //CoordObg1[1]=Temp;
            }
        }
        do
        {
            fread(&Temp,sizeof(short),1,File);
        } while(Temp !='\n');
    }
    fclose(File);
}
int menu_select(void)
{
    char str[2],pos;

    printf("\n");
    rprintf("1. Добавить объект в картограф.\t");
    rprintf("2. Вывести метрику объекта.\t");
    rprintf("3. Выход");

    do
    {
        rprintf("\n Введите номер нужного пункта:");
        gets(str);
        pos=atoi(str);
    } while(pos<0 || pos>3);
    return pos;
}

void main(void)
{
    char select;
    system("cls");
    for(;;)
    {
        select=menu_select();
        switch(select)
        {
        case 1: add(); break;
        case 2: view(); break;
        case 3: exit(0); break;
        default: break;
        }
    }
}
 
Последнее редактирование:

SotM

Участник
Проверенный
Не корректное сравнение (решение квадратного уравнения). Ты сравни обычный Си с Паскалем, а не С++ с Паскалем.

И вообще это:
system("pause");
Дурной тон.
 

Krinkels

Он где то тут
Администратор
Решение квадратного уравнения: С++
И что тут сложного? Нормально отформатированный код, любо дорого смотреть. Все ясно все понятно.

Решение квадратного уравнения: Паскаль
А вот тут нагромождения строк, в таком коде не то что разбираться, просто смотреть неприятно.

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

Timick

Старожил
Не корректное сравнение (решение квадратного уравнения). Ты сравни обычный Си с Паскалем, а не С++ с Паскалем.
Почему? Автор темы конкретно хотел начать изучать C++, поэтому пример именно на нем

И вообще это:
system("pause");
Дурной тон.
Программа взята из интернета, так что...

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

А какие языки изучают в институте? Просто любопытно узнать)
 

Krinkels

Он где то тут
Администратор
Timick, В паскале вместо begin/end ставим скобки, и вуаля, получаем почти что Си.

по-моему мнению, лучше начать с языков, у который синтаксис проще (паскаль, питон)
Да что уж мелочиться то, давай начнем изучать с bat файлов, проще некуда.
З.Ы. Я бы не сказал что у питона такой простой синтаксис
 

Kent

Новичок
Кстати, если вам не трудно, подскажите хороший учебник по срр.
 

Loner

Новичок
Выучишь с++, на остальные языки перепрыгнуть будет проще..После c++ прыгаешь на C# - а там и Java не далеко и прочие ништяки.
Синтаксис не такой уж плохой...плохо в с++ только winapi. Как по мне если разрабатываешь ещё и интерфейс..код становится абсолютно нечитаемым и немногим противным..;)
Не знаю..разрешены ли ссылки тут..но я как-то по чуть-чуть читал отсюда
https://tproger.ru/books/cpp-books-definitive-guide/
Если боишься, что с++ не осилишь...пробуй C#, Java они более дружелюбны в плане кода и понятности...Если плохо с английским тогда лучше C#. На него почти вся документация на русском и почти на любой вопрос можно найти решение.

Ещё раз повторюсь..знаешь с++ - будешь знать на подсознательном уровне почти все с-подобные языки..
 
  • Like
Реакции: Kent

Kent

Новичок
Loner,
Спасибо, с английским у меня все "вери гуд" так-что буду учить ++
 
Сверху