9 / 9 / 4
Регистрация: 19.05.2013
Сообщений: 63
1
.NET 4.x

Нужен совет опытных программистов на C#

19.05.2013, 03:16. Показов 1994. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добрый день! Я здесь абсолютно новенький! Так что прошу сразу не кидать камнями если задаю вопросы не там где нужно!

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

Нашел неплохую книгу и каждый день ее читаю (Герберт Шилд). Дошел всего ничего, до 120й страницы, где только только закончилось пояснение операторов for.

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

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using System;
 
class Calculator
{
    static void Main()
    {
        decimal x = 0, y = 0, sum = 0;
        string choose = null;
        bool z = true;
        for (; ;)
        {
            for (; ;)
            {
                Console.Write("Введите первое число:  ");
                z = Decimal.TryParse(Console.ReadLine(), out x);
                if (!z) Console.WriteLine("Нет, так не пойдет!!!\n\n");
                else break;
            }
            for (; ;)
            {
                Console.Write("Введите один из операторов + - * /:  ");
                choose = Console.ReadLine();
                switch (choose)
                {
                    case "+":
                        break;
 
                    case "-":
                        break;
 
                    case "*":
                        break;
 
                    case "/":
                        break;
                    default:
                        Console.WriteLine("Неверное Значение!!!\n\n");
                        continue;
                }
                break;
            }
            for (; ;)
            {
                Console.Write("Введите второе число:  ");
                z = Decimal.TryParse(Console.ReadLine(), out y);
                if (!z) Console.WriteLine("Нет, так не пойдет!!!\n\n");
                else if (y == 0 && choose == "/") Console.WriteLine("Делить на 0 нельзя!!!\n\n");
                else break;
            }
            Console.WriteLine();
 
            switch (choose)
            {
                case "+":
                    sum = (decimal)(x + y);
                    break;
 
                case "-":
                    sum = (decimal)(x - y);
                    break;
 
                case "*":
                    sum = (decimal)(x * y);
                    break;
 
                case "/":
                    sum = (decimal)(x / y);
                    break;
 
                default:
                    Console.WriteLine("Неверное уравнение!");
                    break;
            }
            Console.WriteLine("Ваше уравнение: {0} {1} {2} = {3:#.###}", x, choose, y, sum + "\n");
            Console.WriteLine("###################################################################\n");
        }
    }
}


Хотел у вас спросить уважаемые пользователи:
1. По 5 бальной шкале, какую бы вы оценку поставили данному коду? (При условии что я понятия еще не имею что такое классы методы и прочее).

2. Что в данном коде можно было бы изменить, чтоб он выглядел более качественно? (Не используя методы и классы)

3. После прочтения книги Герберта Шилда, какую книгу стоит выбрать дальше?

4. Могу ли я рассчитавать на работу Junior Developer не имея высшего образования?

Спасибо вам за любой ответ. Всего вам хорошего.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2013, 03:16
Ответы с готовыми решениями:

Прошу совет опытных у программистов
Здравствуйте. Я разрабатываю программу в учебных целях и я хотел бы посоветоваться с Вами насчет...

Нужен совет опытных программистов
Задача: Написать систему логирования LS кода, подсчета производительности (как долго исполняется LS...

Нужен совет от опытных проектировщиков БД и программистов
Здравствуйте! Скажите пожалуйста как обычно реализуется (в БД) на крупных порталах: - система...

Нужен совет по Python от опытных программистов
Здравствуйте! Я новичок в программировании, и мне нужен совет от профессионалов. Посоветуйте...

22
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
19.05.2013, 19:50 2
1. В начале изучения абсолютно не важно качество кода. Язык бы выучить.

2. Заменить for( ; ; ) на while(true). И подсократить код местами. Например строки 21-40 можно заменить как нибудь так:
C#
1
2
3
 string choose = Console.ReadLine().ToCharArray().FirstOrDefault().ToString();
            if (choose != null && "*/+-".Contains(choose)) break;
            else continue;
3. Вооружаетесь msdn и на киберфорум в раздел для начинающих - лучшей книги не найдете (разве что ангоязычные ресурсы).

4. Не знаю.
0
9 / 9 / 4
Регистрация: 19.05.2013
Сообщений: 63
19.05.2013, 20:04  [ТС] 3
Спасибо огромное за ответы! While я изначально пробовал, но остановился на for просто потому, что так пришлось бы после каждого цикла инициализировать bool переменную как true.
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.05.2013, 20:36 4
Mostick, 1)для самого новичка - 4-. В коде максимум допускается один вечный цикл, а куча брейков это ужас.


2)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
 
namespace ConsoleApplication20
{
    class Program
    {
        static void Main()
        {
            var a = new decimal[2];
            for (int i = 0; i < a.Length; i++)
                do 
                    Console.WriteLine("Введите {0}е число", i + 1);
                while (!decimal.TryParse(Console.ReadLine(), out a[i]));
            decimal sum = 0;
            string s;
            do
            {
                Console.WriteLine("Введите желаемую операцию");
                s = Console.ReadLine().Trim();
                switch (s)
                {
                    case "+":
                        sum = a[0] + a[1];
                        break;
                    case "-":
                        sum = a[0] - a[1];
                        break;
                    case "*":
                        sum = a[0]*a[1];
                        break;
                    case "/":
                        sum = a[0]/a[1];
                        break;
                    default:
                        Console.WriteLine("Неверная операция! Попробуйте еще раз");
                        break;
                }
            } while (string.IsNullOrEmpty(s));
            Console.WriteLine("Ваше уравнение: {0} {1} {2} = {3:#.###}", a[0], s, a[1], sum);
            Console.WriteLine("###################################################################");
            Console.ReadKey();
        }
    }
}
3) Чистый код.
4) Нескоро (1-2 года практики),

Добавлено через 2 минуты
freeba,
C#
1
string choose = Console.ReadLine().ToCharArray().FirstOrDefault().ToString();
а не проще?
C#
1
char choose = Console.ReadLine()[0];
0
9 / 9 / 4
Регистрация: 19.05.2013
Сообщений: 63
19.05.2013, 20:42  [ТС] 5
Спасибо огромное. Буду учить дальше...

По поводу вашего кода, вы не исключили деление на ноль и набор других символов вместо + * - /
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.05.2013, 20:50 6
C#
1
2
case "/":
   sum = a[1] == 0 ? double.NaN : a[0]/a[1];
Ну так у вас и складывать ноль нельзя почему-то, а не только делить.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
 
namespace ConsoleApplication20
{
    class Program
    {
        static void Main()
        {
            var a = new double[2];
            for (int i = 0; i < a.Length; i++)
                do 
                    Console.WriteLine("Введите {0} число", i + 1);
                while (!double.TryParse(Console.ReadLine(), out a[i]));
            double sum = double.NaN;
            string s = "";
            while (double.IsNaN(sum))
            {
                Console.WriteLine("Введите желаемую операцию");
                s = Console.ReadLine().Trim();
                switch (s)
                {
                    case "+":
                        sum = a[0] + a[1];
                        break;
                    case "-":
                        sum = a[0] - a[1];
                        break;
                    case "*":
                        sum = a[0]*a[1];
                        break;
                    case "/":
                        sum = Math.Abs(a[1]) < double.Epsilon? double.NaN : a[0]/a[1];
                        break;
                    default:
                        Console.WriteLine("Неверная операция! Попробуйте еще раз");
                        break;
                }
            }
            Console.WriteLine("Ваше уравнение: {0} {1} {2} = {3:f}", a[0], s, a[1], sum);
            Console.WriteLine("###################################################################");
            Console.ReadKey();
        }
    }
}
0
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
19.05.2013, 20:50 7
Цитата Сообщение от Psilon Посмотреть сообщение
а не проще?
Проще. Рефлекторно обработал крайний случай когда ReadLine возвращает пустую строку.
0
9 / 9 / 4
Регистрация: 19.05.2013
Сообщений: 63
19.05.2013, 20:50  [ТС] 8
Да нет, у меня вроде все работает. кроме деления на 0.

Ладно, спасибо огромное вам еще раз. Мне нужно учить учить и еще раз учить.
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.05.2013, 20:52 9
freeba, ну можно и так обработать (короче и быстрее):
C#
1
(Console.ReadLine() ?? " ")[0]
1
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
19.05.2013, 20:52 10
Цитата Сообщение от Psilon Посмотреть сообщение
4) Нескоро (1-2 года практики),
После 1-2 лет активной практики можно с сеньорами потягаться
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.05.2013, 20:53 11
Хотя если будет пустая строка, то у вас офк универсальней.
0
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
19.05.2013, 20:53 12
Цитата Сообщение от Psilon Посмотреть сообщение
ну можно и так обработать (короче и быстрее):
Действительно

Заболел LINQ'ом. Скоро пройдет
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.05.2013, 20:54 13
freeba, ну хз, я начал шарп учить начиная с конца прошлой зимы, я бы не сказал, что сильно халявил, равно как и то, что я могу тягаться с сеньором
0
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
19.05.2013, 20:58 14
Psilon, А почему нет?
0
9 / 9 / 4
Регистрация: 19.05.2013
Сообщений: 63
19.05.2013, 21:03  [ТС] 15
Да мне , хотя бы джуниором...

Вопрос просто был немного в другом. Без высшего вообще реально лезть в программирование? Или без диплома даже смотреть на знания не будут?
0
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
19.05.2013, 21:06 16
Mostick, Смотря где. Небольшие компании смотрят на знания, диплом редко спрашивают, собеседование + гоняют по тестовым заданиям. А, например, в гос. учереждениях без диплома даже разговаривать не будут, хоть сам Билли перед HR предстанет...
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.05.2013, 21:11 17
Mostick, ну, мне хватило фразы про неоконченное высшее и отсутствие проблем в военкомате


freeba, ну меня на джуниора спрашивали SQL, жизненный цикл ПО, основы ООП, итераторы, интерфейс IDisposable и его реализации, назначение, необходимость деструкторов в шарпе, linq по-моему тоже был. Пара примеров на все это дело (на полиморфизм, на JOIN пары-тройки таблиц). Ну и на вопрос "что вы последнее программировали" я небрежно бросил "программа многомерной многоэкстремальной нелинейной оптимизации целевой функции методом деформируемого симплекса"

Добавлено через 2 минуты
freeba, Билли получил диплом, не надо тут
0
9 / 9 / 4
Регистрация: 19.05.2013
Сообщений: 63
19.05.2013, 21:14  [ТС] 18
Psilon, Про все вышеперечисленное вами, где лучше всего почитать? Где сами учили, что читали. Посоветуйте пожалуйста.

Очень важно знать мнение человека, который прошел через все это.
0
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
19.05.2013, 21:16 19
Цитата Сообщение от Psilon Посмотреть сообщение
freeba, Билли получил диплом, не надо тут
Ну да. Спустя 34 года после поступления


Psilon, Серьезно расспрашивали, меня погоняли по синтаксису, немного ООП (типа чем класс от структуры отличается, инкапсуляция, наследование...), SQL-запросы самое элементарное (select, right\left join). Но это в 2005 было...
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.05.2013, 21:22 20
Mostick, из того, что я говорил:
1) шилдт,
2) Нейгел К., Ивьен Б., Глинн Дж., Уотсон К. - C# 4.0 и платформа .NET 4 для профессионалов - 2011
3) Мартин Фаулер - Рефакторинг. Улучшение существующего кода
4) Мартин Р. - Чистый код. Создание, анализ и рефакторинг (Библиотека программиста) - 2010
5) Керниган,Ритчи - Программирование на C.2ed.2009
6) Мак-Дональд М., Фримен А., Шпушта М. Microsoft ASP.NET 4 с примерами на C# 2010 для профессионалов - 2011
7) The Expert Voice in Databases - Shaw S., Kellenberger K. - Beginning T-SQL 2012 - 2012
8) Mohammad Rahman Expert C# 5.0: with .NET 4.5 Framework

+ из второй части того, что я говорил - это как раз-таки вышка: матан, линал, дифуры, дискретка, матлогика, твимс, ТоПИУ, ТОАУ, ТАУ, САУ, статдинамика, исследование операций, планирование эксперимента + 100500 других.
0
19.05.2013, 21:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.05.2013, 21:22
Помогаю со студенческими работами здесь

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

Требуется совет опытных программистов
Основы С++ более менее изучены. Что же дальше? Что учить чтоб писать хоть какие то простенькие...

Хочу получить совет от опытных геймеров и программистов,по выбору Материнской Платы
Всем добрый день=) Хочу получить совет от опытных геймеров и программистов,по выбору Материнской...

Нужен совет Опытных =)
1. Доменное имя мого сайта: krasnuha.net.ru 2. И есть у меня еще зарегистрированые домены с...

Нужен совет опытных!
Здравствуйте я начинающий веб-дизайнер (совсем начинающий) и не опытный хочу сделать главную...

Нужен совет опытных кодеров
Добрый день! Знаю, что такие вопросы задают часто....но хотелось бы услышать советов от...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru