Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
216 / 1 / 2
Регистрация: 26.02.2020
Сообщений: 258

Нескучный С

26.02.2020, 19:58. Показов 842. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день всем гуру программирования! Тема названа так, потому что методика преподавания программирования, в частности С, в ВУЗах, большинстве курсов, книгах, по моему мнению, не позволяет многим людям пройти дальше этапа обучения. Практически всегда программа обучения построена на абстрактных вещах. К С я вернулся после того как узнал об платах Ардуино, т.к. там можно собрать что-то реальное т.е. заново появился интерес к этой теме. По С я читаю книгу Прата, очень приятная подача материала, но опять консольные окна везде. Везде и всюду говорят и пишут, что на С можно писать все что угодно, но кроме консольных окон никаких примеров больше нет, уже устал искать какие-то более интересные примеры. Подскажите, пожалуйста, где можно найти примеры программ или какие-то книги где можно найти разработку какого-то конечного продукта? Как пример даже тоже десктоп приложение/программа под винду.
0
88 / 108 / 6
Регистрация: 16.04.2019
Сообщений: 451
Записей в блоге: 4
27.02.2020, 11:46
mixa88, примеры программ, написанных на С, выбиратйе любую https://github.com/kozross/awesome-c

Вот ещё вариант, но в форме видео, однако, человек объясняет что он делает и зачем:
https://www.youtube.com/watch?... 1o&t=3484s
Не уверен, что там чистый Си, скорее всего, он использует некоторые плюшки из плюсов, но пишет в си-стиле.
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
27.02.2020, 11:53
Цитата Сообщение от mixa88 Посмотреть сообщение
на С можно писать все что угодно,
Это правда. Впрочем, то же самое можно сказать о любом языке общего назначения.
Но для работы с GUI (Графический интерфейс пользователя, то что вы видимо имели виду), требуется реализовать очень много мелких деталей. Да еще и зависящих от железа. Этим можно заняться. Но работа эта кропотливая, нервная, и очень не сразу даст она ощутимый результат. Да и зачем? Если до вас добрые и умные люди создали БИБЛИОТЕКИ, берущие на себя всю кропотливую работу по созданию ГУИ. Библиотеки эти - как китайская пагода. На нижнем уровне лежат такие вещи как WIN-API. Для других операционок и железяк есть свои АПИ. То есть свои библиотеки общения с экраном и клавиатурой. Я думаю, что такое же АПИ (такие же) должно быть и для Ардуино.
Дело в том, что общение на уровне консоли уже встроено в Си. То есть, есть соответствующая библиотека А общение на уровне ГУИ - не встроено.
1
216 / 1 / 2
Регистрация: 26.02.2020
Сообщений: 258
27.02.2020, 14:29  [ТС]
Спасибо за ответы ! Я согласен, что есть библиотеки и очень рад был бы воспользоваться ими, но нужно еще и уметь ими пользоваться. Мне как-то встречалась книга по С# (вроде) так там автор с самого первого урока начал составлять какое-то приложение, что-то вроде калькулятора и параллельно объяснять теорию и в итоге по окончанию курса человек может это же повторить т.е. в конечном итоге получить какой то продукт своей деятельности. Вот есть ли что-то подобное на С?
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
27.02.2020, 20:04
Цитата Сообщение от mixa88 Посмотреть сообщение
но нужно еще и уметь ими пользоваться.
Ключевой момент.
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
27.02.2020, 23:13
Цитата Сообщение от mixa88 Посмотреть сообщение
книга по С# (вроде) так там автор с самого первого урока начал составлять какое-то приложение, что-то вроде калькулятора
Видимо, имеется в виду оконное приложение "калькулятор", что вполне оправдано для си шарпа. Дело в том, что язык C# тесно связан с платформой .Net, и обычно используется со средой разработки Visual Studio. А там уже есть готовая библиотека (и даже не одна) для создания оконного интерфейса. Причём, не нужно ничего дополнительно устанавливать и настраивать - просто бери и пользуйся. Для новичков это очень важно.

В языке же С такой стандартной оконной библиотеки нет. И вообще, язык С довольно суров, а его стандартная библиотека крайне скудна. Так что, если хочется красивостей, то придётся дополнительно установить какую-то оконную библиотеку на выбор, или использовать WinAPI под Windows. А это всё довольно хлопотное дело, и в рамках книги для новичков способно отпугнуть сразу половину читателей (если не больше). Да и вообще, создавать сложное оконное приложение на языке С - не самое благодарное занятие. Есть гораздо более подходящие для этого языки/технологии. Например, тот же C#, или С++ с Qt.

Поэтому и получается, что консоль в языке С практически не имеет альтернатив на этапе начального обучения. А вот на более продвинутом уровне вполне можно замахнуться и на изучение того же WinAPI (если хочется именно под Windows).
0
913 / 339 / 135
Регистрация: 18.07.2017
Сообщений: 1,485
28.02.2020, 00:21
Цитата Сообщение от mixa88 Посмотреть сообщение
автор с самого первого урока начал составлять какое-то приложение, что-то вроде калькулятора
Это одно uз базовых заданuй для сuшнuков: напuсать консольный калькулятор.
Цитата Сообщение от mixa88 Посмотреть сообщение
Вот есть ли что-то подобное на С
Еслu ты про GUI, то перечuтай сообщенuе Байта. От себя только добавлю, что в QT есть графuческuй редактор для GUI. А еслu про формат подачu матерuала, то чего ты хотел? Художнuкu тоже сначала кубы u табуреткu рuсуют.
Цитата Сообщение от mixa88 Посмотреть сообщение
и в итоге по окончанию курса человек может это же повторить
Вот только стоuт поменять строчку u он нu за что не поймет как почuнuть программу. Почему? Потому что у него рука не набuта чтобы работать с указателямu uз-за чего у него постоянно segfault, неправuльно упакованы элементы структур, а следовательно увелuченый расход памятu, он не слышал про прuорuтет операцuй u в uтоге у него неправuльно счuтается формула...
А теперь как по твоему? Где проще найтu ошuбку? В маленькой программе uз 30 строк uлu в здоровенном проекте uз 15 файлов?
Но это еще не все! Программа все-равно работает не так как надо u ты уже не уверен: это ты неправuльно программу чuнuшь uлu все правuльно, просто ошuбок больше?
Цитата Сообщение от mixa88 Посмотреть сообщение
но опять консольные окна везде
Может потому что новuчку проще будет напuсать printf(), чем разобраться в том как создать окно, напuсать обработчuк событuй... u все это отладuть?
Цитата Сообщение от mixa88 Посмотреть сообщение
кроме консольных окон никаких примеров больше нет
Вот только гнать не надо!
Хочешь кастомную графuку: sfml uлu opengl
Хочешь 3d uгру: directX
Хочешь работать с ардуuно: качай AVR бuблuотекu u AVR assembler в нагрузку. (А лучше выбросu дурuну u работай с обычнымu AVR)
Но ты uх просто не поймешь, без твердого знанuя сu.
Цитата Сообщение от likehood Посмотреть сообщение
Дело в том, что язык C# тесно связан с платформой .Net, и обычно используется со средой разработки Visual Studio. А там уже есть готовая библиотека (и даже не одна) для создания оконного интерфейса. Причём, не нужно ничего дополнительно устанавливать и настраивать - просто бери и пользуйся. Для новичков это очень важно.
Немного не корректно: там целый набор uнструментов, от вuзуального конструктора до панелu свойств объекта.
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,983
Записей в блоге: 237
28.02.2020, 03:26
mixa88, можете подключить библиотеку SDL2 к своей среде. Эта библиотека написана на Си и может быть использована из Си программы. Если ни разу не подключали никаких библиотек, то как подключить SDL2 - несложно найти в интернете. За одно научитесь, как подключать библиотеки - полезный опыт. Что такое SDL2 и что она умеет можно почитать на Википедии: https://ru.wikipedia.org/wiki/... edia_Layer Здесь можно скачать SDL2 для вашей ОС: https://www.libsdl.org/download-2.0.php

Например, в этом туториале написано, как выводить текст: http://gigi.nullneuron.net/gig... h-sdl_ttf/

Можете запустить мой пример в Visual Studio 2019: DrawText_Sdl2C.zip Пример должен сразу запустить без подключений, потому что библиотека уже подключена по относительному пути. За одно можете по настройкам запомнить, как подключать библиотеку. Запоминается, если много раз подключать, делая небольшие практические задачи.

main.c

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
#include <stdbool.h>
#include <SDL.h>
#include <SDL_ttf.h>
 
// Tutorial: http://gigi.nullneuron.net/gigilabs/displaying-text-in-sdl2-with-sdl_ttf/
// Example: https://stackoverflow.com/questions/3604889/sdl-sdl-ttf-how-do-you-render-text-in-sdlsdl-ttf-c
// Color Calculator: http://doc.instantreality.org/tools/color_calculator/
 
int main()
{
    bool quit = false;
    SDL_Event event;
 
    SDL_Init(SDL_INIT_VIDEO);
    TTF_Init();
 
    SDL_Window* window = SDL_CreateWindow("SDL_ttf in SDL2",
                                          SDL_WINDOWPOS_UNDEFINED,
                                          SDL_WINDOWPOS_UNDEFINED,
                                          250, 250, 0);
    SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, 0);
    TTF_Font* font = TTF_OpenFont("Fonts/arial.ttf", 25);
    SDL_Color color = { 207, 109, 38 };
    SDL_Surface* surface = TTF_RenderText_Solid(font, "mixa88, Welcome!", color);
    SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, surface);
 
    int texW = 0;
    int texH = 0;
    SDL_QueryTexture(texture, NULL, NULL, &texW, &texH);
    SDL_Rect dstrect = { 20, 100, texW, texH };
 
    while (!quit)
    {
        SDL_WaitEvent(&event);
 
        switch (event.type)
        {
            case SDL_QUIT:
                quit = true;
                break;
        }
 
        SDL_RenderCopy(renderer, texture, NULL, &dstrect);
        SDL_RenderPresent(renderer);
    }
 
    TTF_CloseFont(font);
    SDL_DestroyTexture(texture);
    SDL_FreeSurface(surface);
    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    TTF_Quit();
    SDL_Quit();
 
    return 0;
}


Название: DrawText_Sdl2C.png
Просмотров: 44

Размер: 2.8 Кб
0
216 / 1 / 2
Регистрация: 26.02.2020
Сообщений: 258
28.02.2020, 08:00  [ТС]
Так может тогда оставить C для встроенных систем , а С# выучить для окон? Я честно говоря думал об этом, просто не будет ли каши в голове С+С#, хотя насколько я понимаю, что все кто интересуются программированием, на одном языке не останавливаются
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
28.02.2020, 08:46
Цитата Сообщение от assemberist Посмотреть сообщение
Немного не корректно: там целый набор uнструментов, от вuзуального конструктора до панелu свойств объекта.
Разве я говорил, что там этого нет? В чём некорректность?

Добавлено через 16 минут
Цитата Сообщение от mixa88 Посмотреть сообщение
Так может тогда оставить C для встроенных систем , а С# выучить для окон?
C# это кстати далеко не только окна. Вообще, использование для прикладного кода с одной стороны, и для системного (или встраиваемого) кода с другой стороны различных инструментов (языков, библиотек, и т.д.) - весьма разумная идея. Для каждой задачи - свой инструмент.
Цитата Сообщение от mixa88 Посмотреть сообщение
Я честно говоря думал об этом, просто не будет ли каши в голове С+С#,
На первых этапах возможно, но в целом проблем быть не должно.
0
216 / 1 / 2
Регистрация: 26.02.2020
Сообщений: 258
28.02.2020, 15:53  [ТС]
Скачал книгу head first C#, понравилось, что там много практики т.е. создаются приложения, кто-то знает что -то про эту книгу? Или мне отправиться в раздел где про С# и там спросить?
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
28.02.2020, 16:19
Цитата Сообщение от mixa88 Посмотреть сообщение
Или мне отправиться в раздел где про С# и там спросить?
Там даже тема специальная есть: Литература по C# для начинающих и не только
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,983
Записей в блоге: 237
28.02.2020, 18:16
Цитата Сообщение от mixa88 Посмотреть сообщение
head first C#
Это хорошо, что ваш уровень английского позволяет читать в оригинале. На сайте Microsoft по этой ссылке https://docs.microsoft.com/en-us/dotnet/csharp/ есть интерактивные вводные курсы и тутоиалы для начинающих, а так же ссылки на документацию. Книги - это замечательно, но так же дополнительно можно черпать знания и вдохновение для практики из разных источников.
0
216 / 1 / 2
Регистрация: 26.02.2020
Сообщений: 258
29.02.2020, 08:42  [ТС]
Мне не приходится читать на английском (хотя я его знаю) , я купил эл. версию на русском у чувака за 50грн (я сам с Одессы) , если кому надо могу скинуть
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru