Есть желание научиться создавать устройства на МК.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 86
Зарегистрирован: Пт янв 21, 2011 07:48:23

Сообщение Sam85 »

ARV писал(а):
Sam85 писал(а):что значит символ & ?
двоичное И :)))
см. краткий ликбез
еще один глупый вопрос :) что оно делает ? можно поподробнее
Реклама
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

if(PIND & BUTTON_PIN){ как будет звучать это выражение на человеческом языке ?
Кажется, я понял, почему я, в отличие от говорящих на "человеческом языке", никогда не могу найти общего языка с девушками... :)))
что оно делает ?
Проверяет, что конкретный бит, указанный в маске, установлен. Это следует из определения этой операции.

Все ненужные биты будут обнулены нулями в маске. Далее, если целевой бит - ноль, на выходе получим ноль. Если нет - какое-то ненулевое значение.

Предупреждая следующий вопрос, скажу, что в конструкциях if/while и других условных операторах в Си арифметический ноль (0) приравнивается к false, а что угодно кроме него (30, 100500, -20, etc) - к true.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

YS писал(а):Кажется, я понял, почему я, в отличие от говорящих на "человеческом языке", никогда не могу найти общего языка с девушками...
говориш унылым языком логически мыслящих биороботов и бабы засыпают?
тематические ответы только в форуме, в приват не пишите
Встал на лапы
Аватара пользователя
Сообщения: 86
Зарегистрирован: Пт янв 21, 2011 07:48:23

Сообщение Sam85 »

добрый день :) грызу С++, пишу простенькие программки.

Код: Выделить всё

    #include <stdio.h>
main()
{
float x, y, z, s;
printf("vvedite 3 chisa,\n");
scanf(" %f %f f% ", &x, &y, &z);
s=2*(x+y+z);
printf("\n");
printf("otvet=%f", s);
printf("\n ");
getch();
    }
Error: 8.c(13,7):Call to undefined function 'getch'

что в 13 строке не нравиться ему "getch", до этого писал и все было нормально, есть еще и "getchar", писал по учебнику первые програмульки использовал его, потом он перестал работать (DOS окно после выполнения кода автозакрывалось). Объясните несведущему на пальцах что это за операторы что они делают почему в одном случае "getch" в другом "getchar"

P.S. запустил снова Borland C++ 5.1 пошла прога, ошибка исчезла :), но усиленно не хочет умножать выражение в скобках на 2 :( подскажете в чем дело ?
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

C++Builder 6 все в порядке:
СпойлерИзображение
getchar – чтение символа из стандартного потока ввода http://all-ht.ru/inf/prog/c/func/getchar.html
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 86
Зарегистрирован: Пт янв 21, 2011 07:48:23

Сообщение Sam85 »

oleg110592 писал(а):C++Builder 6 все в порядке:
СпойлерИзображение
getchar – чтение символа из стандартного потока ввода http://all-ht.ru/inf/prog/c/func/getchar.html
у меня тоже подозрение что глючит прога, скачаю 6
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 378
Зарегистрирован: Сб сен 19, 2009 07:02:19

Сообщение shindax »

В Borland для getch под DOS всегда было:

Код: Выделить всё

#include <conio.h>
getchar - выводит символ, getch - net. google в отпуске, что-ли?
Встал на лапы
Аватара пользователя
Сообщения: 86
Зарегистрирован: Пт янв 21, 2011 07:48:23

Сообщение Sam85 »

oleg110592 писал(а):C++Builder 6 все в порядке:
СпойлерИзображение
getchar – чтение символа из стандартного потока ввода http://all-ht.ru/inf/prog/c/func/getchar.html
установил, голову сломать можно :( .h файлы отличаются, но это пол беды, после расчета окно так же мгновенно исчезает :(
shindax писал(а):В Borland для getch под DOS всегда было:

Код: Выделить всё

#include <conio.h>
getchar - выводит символ, getch - net. google в отпуске, что-ли?
благодарю за подсказку :)
при подключение

Код: Выделить всё

#include <conio.h>
все заработало как надо :) а в учебнике этот момент опустили :)
Последний раз редактировалось Sam85 Пт авг 22, 2014 11:29:00, всего редактировалось 1 раз.
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

после расчета окно так же мгновенно исчезает
чтоб не исчезало применяют system ("pause");
СпойлерИзображение
Встал на лапы
Аватара пользователя
Сообщения: 86
Зарегистрирован: Пт янв 21, 2011 07:48:23

Сообщение Sam85 »

Код: Выделить всё

Строка 01    #include<stdio.h>
Строка 02    main()
Строка 03    {
Строка 04    float x, y, z, s; //Значения величин
Строка 05    printf("Введите три вещественных числа x, y, z\n");
Строка 06    scanf("%f %f %f", &x, &y, &z);
Строка 07    printf("\n");
Строка 08    printf("Вы ввели три вещественных числа=%f %f %f", x, y, z);
Строка 09    printf("\n");
Строка 10   getchar();
Строка 11    s=2*(x+y+z); //Вычисление значения
Строка 12    printf("s= %f",s);
Строка 13    printf("\n");
Строка 14    printf("Для выхода нажмите клавишу ");
Строка 15    getchar();
Строка 16    }
для чего в строке 10 функция "getchar" ? и в строке 15 ее можно просто заменить на

Код: Выделить всё

 system"pause"
 
? Суть от этого не измениться ведь
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Суть от этого не измениться ведь
Программа может выполняться на разных платформах. getchar везде примерно одинаковый, а вот команды pause в оболочке может и не быть...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 86
Зарегистрирован: Пт янв 21, 2011 07:48:23

Сообщение Sam85 »

Добрый день :) Ругается на оператор else? не подскажете в чем дело ?

Код: Выделить всё

//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <windows.h>
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>

//---------------------------------------------------------------------------

#pragma argsused
void main()
{
float x, y, c;
 char str[50];
textbackground(4);
    clrscr();
  textcolor(15);
   CharToOem("\nÂû÷èñëåíèå ÷àñòíîãî\n", str);
   printf(str);
   CharToOem("Ââåäèòå â îäíîé ñòðîêå äåëèìîå è äåëèòåëü,\n", str);
   printf(str);
   CharToOem("Çàòåì íàæìèòå êëàâèøó Enter\n", str);
   printf(str);
   scanf("%f%f", &x, &y);
   CharToOem("Âû ââåëè %5.2f È %5.2f\n", str);
   printf(str, x, y);
   if(y!=0);
   {
   c=x/y;
   CharToOem("×àñòíîå îò äåëåíèÿ =%5.2f", str);
   printf(str, c);
   }
   else
   {
   CharToOem("Äåëåíèå íà íîëü íåâîçìîæíî\n", str);
   }
   system("pause");
   }
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

if(y!=0); - может ; убрать
Встал на лапы
Аватара пользователя
Сообщения: 86
Зарегистрирован: Пт янв 21, 2011 07:48:23

Сообщение Sam85 »

oleg110592 писал(а):if(y!=0); - может ; убрать
Благодарю помогло :) только пришлось впаять

Код: Выделить всё

 
getch();} 
что бы после вычисления окно не вылетало :)

и еще вопрос :)

Код: Выделить всё

textbackground(4);
    clrscr();
  textcolor(15);
команды изменения цвета фона, шрифта и очистки экрана имеют практическое применение ?
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

для билдера можно опять воспользоваться функцией system() типа:

Код: Выделить всё

 
    printf("Hello\n");
    system("pause");
    system("cls");
    system("color 24"); // зеленый цвет фона и красный цвет текста
    printf("green red Hello\n");
    system("pause");
еще есть функция SetConsoleTextAttribute()
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

oleg110592, почему вы советуете обращаться к сервисам системы напрямую? Это непортируемо.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Функция system() передает командному процессору операционной системы команду в строке, на которую указывает параметр str, и возвращает статус выхода команды. Для выполнения ко­манды должен иметься командный процессор.
разговор начался с Borland C++ 5.1, я так понял автор тренируется в создании консольных программ для Windows. Портировать куда? Проверил на Visual C++ 2008 Express - system() так же работает. Проверил Microsoft Visual Studio Express 2013 для Windows Desktop, Версия 12.0.21005.1 - создал консольное приложение тоже работает.
Изображение
если что - Windows 8.1 x64
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Портировать куда?
Пока что некуда. Но использовать без нужды обращения к системе - так себе практика. Мы все же в разделе, посвященном контроллерам, а там системы чаще всего вообще нету. Так что я бы не прививал любовь к системным вызовам.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Если перейти потом к микроконтроллерам с графическим экраном, придется все равно написать свою или использовать чужую библиотеку GUI. Там функции работы с экраном очень далеки от работы с консолью. Например, если в поисковике набрать "Windows console clear screen" - у меня первая ссылка: http://support.microsoft.com/kb/99261 . Там два способа: 1- system("cls");, 2-думаю не стоит пока начинающему и смотреть. Есть ли еще способы работы с консолью, приближенные к микроконтроллерам, я не знаю.
Встал на лапы
Аватара пользователя
Сообщения: 86
Зарегистрирован: Пт янв 21, 2011 07:48:23

Сообщение Sam85 »

что значит следующие строки ?

Код: Выделить всё

main()
{
char ch;
char str0[50];
char str1[50];
char str2[50];
char str3[50];
char str4[50];
char str5[50];
char str6[50];
char str7[50];
// Очистить экран
Ответить

Вернуться в «Разные вопросы по МК»