Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
pt:programming:c:crashcourse [2014/12/03 17:40] aalmeidapt:programming:c:crashcourse [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 142: Line 142:
 </code> </code>
  
-~~PB~~+<pagebreak>
  
 ===== Operadores ===== ===== Operadores =====
Line 210: Line 210:
 b = (4 != 4); b = (4 != 4);
  
-// Arithmetic, equality and logic operations alltogether+// Arithmetic, equality and logic operations altogether
 // b is false because the first operator of logic multiplication is false // b is false because the first operator of logic multiplication is false
 b = (x + 4 > 15) && (y < 4); b = (x + 4 > 15) && (y < 4);
 </code> </code>
  
-==== Operações de //bit// ====+==== Operações de bit ====
  
 As operações de //bit// são utilizadas para manipulação de dados em formato binário. Estas apenas podem ser aplicadas a tipos de dados inteiros. As operações de //bit// são bastante semelhantes às operações lógicas, com a única diferença que porque estas são aplicadas diretamente a cada um dos bits que compõem o valor, e não apenas ao conjunto que compõem o número. As operações de //bit// que existem na Linguagem C são a inversão (~), conjunção (&), disjunção (|), anti-valência (^), rotação à esquerda (<<) e a rotação à direita (>>). As operações de //bit// são utilizadas para manipulação de dados em formato binário. Estas apenas podem ser aplicadas a tipos de dados inteiros. As operações de //bit// são bastante semelhantes às operações lógicas, com a única diferença que porque estas são aplicadas diretamente a cada um dos bits que compõem o valor, e não apenas ao conjunto que compõem o número. As operações de //bit// que existem na Linguagem C são a inversão (~), conjunção (&), disjunção (|), anti-valência (^), rotação à esquerda (<<) e a rotação à direita (>>).
Line 235: Line 235:
 As operações de //bit// são essenciais na manipulação de registos de um microcontrolador. Estes registos serão descritos adiante no capítulo de registos do AVR. As operações de //bit// são essenciais na manipulação de registos de um microcontrolador. Estes registos serão descritos adiante no capítulo de registos do AVR.
  
-~~PB~~+<pagebreak>
  
 ===== Funções ===== ===== Funções =====
  
-As funções definem parted de um programa que podem ser denominadas e invocadas pelo nome. As funções podem incluir parâmetros de entrada e permitem retornar um valor de saída. Se a função não retorna nenhum valor, esta função é definida com o tipo //void//. Se a função não possui parâmetros de entrada, em versões mais antigas da Linguagem C, o tipo //void// também deve ser incluído dentro dos parêntesis da sua declaração.+As funções definem partes de um programa que pode ser denominadas e invocadas pelo nome. As funções podem incluir parâmetros de entrada e permitem retornar um valor de saída. Se a função não retorna nenhum valor, esta função é definida com o tipo //void//. Se a função não possui parâmetros de entrada, em versões mais antigas da Linguagem C, o tipo //void// também deve ser incluído dentro dos parêntesis da sua declaração.
 Segue-se um exemplo de uma função que adiciona dois números inteiros e outro de uma função que não retorna nenhum valor. Segue-se um exemplo de uma função que adiciona dois números inteiros e outro de uma função que não retorna nenhum valor.
  
Line 273: Line 273:
 </code> </code>
  
-The execution of a C-language program is started from //main// function which makes it compulsory function.+A execução de um programa em Linguagem é sempre iniciada na função //main//.
  
-~~PB~~+<pagebreak>
  
-===== Statements =====+===== Declarações =====
  
-==== If/Else statement ====+==== Declarações If/Else ====
  
-Conditional statements enable to execute or skip program code based on based on logic and relational operationsConditional statement uses keyword //if//Example about using it:+As declarações condicionais, permitem a execução condicional do código de um programa com base em operações lógicas e/ou relacionaisUma declaração condicional utiliza palavra //if//Exemplo:
  
 <code c> <code c>
Line 297: Line 297:
 </code> </code>
  
-//If// statement can be longer and include code which will be executed in case the statement is false. For this, after //if// statement, //else// statement can be usedExample:+Um //if// permite também adicionar uma cláusula //else// que só é executada em caso do valor FalsoExemplo:
  
 <code c> <code c>
Line 320: Line 320:
 </code> </code>
  
-~~PB~~+<pagebreak>
  
-==== Switch statement ====+==== Declaração Switch ====
  
-When required to compare operations and variables with many different valuesit is reasonable to use comparison statement with //switch// keywordExample about using this:+Quando é necessário comparar operações e variáveis com várias combinações de diferentes valoresé geralmente recomendável que se use em alternativa uma comparação com base na declaração //switch//Exemplo da sua utilização:
  
 <code c> <code c>
Line 355: Line 355:
 ===== Loops ===== ===== Loops =====
  
-Loops can be used for executing code several times.+Os //loops// permitem-nos executar código várias vezes.
  
 ==== while loop ==== ==== while loop ====
  
-Code marked with //while// keyword is executed until condition in brackets is trueExample:+O código encapsulado por um //while// é executado até que a condição entre parêntesis obtenha o valor FalsoExemplo:
  
 <code c> <code c>
Line 372: Line 372:
 </code> </code>
  
-~~PB~~+<pagebreak>
  
 ==== for loop ==== ==== for loop ====
  
-//for// keyword loop is similar to //while// loop exept there are described operation executed before the loop and operation executed in the end of every loop cycleExample:+O loop //for// assemelha-se ao loop //while//, excepto que as operações que este engloba são executadas antes da condição de e a verificação da condição é sempre efetuada no fim de cada cicloExemplo:
  
 <code c> <code c>
Line 393: Line 393:
 </code> </code>
  
-==== Halting loops ====+==== Saída de loops ====
  
-As and exception exit from //while// and //for// loops can be made with keyword //break//To start the next loop cycle without executing the remaining code in loop, //continue// keyword can be usedFor example:+A iteração de ciclos //while// ou //for// pode ser terminada com a instrução //break//Para retomar a próxima iteração de um ciclo evitanto a execução do código que se segue pode ser feita com um //continue//Por exemplo:
  
 <code c> <code c>
Line 419: Line 419:
 </code> </code>
  
-==== Text operations ====+==== Operações de texto ====
  
-Text operations are needed for microcontrollers foremost for displaying characters and text on LCD.+As operações de texto são geralmente utilizadas em microcontroladores para mostrar caracteres e texto num ecrã LCD, por exemplo.
  
 ==== sprintf ==== ==== sprintf ====
  
-//sprintf// function is similar to ordinary //printf// function commonly used in C-languageThe difference is that the result of this function is loaded into variable not standard output.+A função //sprintf// é bastante simular à função //printf// mais comumente utilizada na Linguagem C. A diferença entre estas é que o resultado desta função é carregado numa variável em vez do //standard output//.
  
 return = sprintf(variable, parameter_text, parameters); return = sprintf(variable, parameter_text, parameters);
  
-Example:+Exemplo: 
 <code c> <code c>
 int r = sprintf(buffer, "%d pluss %d on %d", a, b, a+b); int r = sprintf(buffer, "%d pluss %d on %d", a, b, a+b);
 </code> </code>
  
-It will load formated text into variable which is given from the function second to n parameter. //sprintf// will simplify composing more sophisticated statements. Easier is to use variables in text that will be replaced by values. Function returns the length of text loaded into variable. In case of error occurrence, negative value is returned. 
  
-Example:+Esta função carrega a variável passada como primeiro argumento com texto formatado, texto este que é passado como segundo argumento da função, ao qual podem ser atribuídos valores com os seus restantes argumentos. O uso da função //sprintf// permitirá compôr texto mais complexo de maneira mais simples. Como retorno, esta função devolve o tamanho do texto que foi carregado na variável e no caso de erro, um valor negativo é retornado. 
 + 
 +Exemplo:
 <code c> <code c>
   sprintf(x, "%d. is first", 1);   sprintf(x, "%d. is first", 1);
Line 447: Line 449:
 </code> </code>
  
-%s and %d are in this case parameters that will be repalaced accordingly by variable values which are the last parameters to functionThe number of parameters must be the same as variables+%s %d neste exemplosão parâmetros que irão ser substituídos pelos valores dos dois últimos parâmetros da função, respetivamenteO número de parâmetros deve igualar ao número de variáveis utilizadas na expressão
-In the first examplethe parameter was %d which was replaced by variable value 1. In the second example parameters were %s and %d which were replaced by variable values "Juku" and 10. It was strictly in this order because %s was waiting value in form of a text and %d value of a numberThere are special variable descriptions for different data types:+No primeiro exemploo parâmetro %d toma o valor 1. No segundo exemplo, os parâmetros %s %d são substituídos pelos valores das variáveis, "Juku" 10 respetivamenteEsta ordem de substituição dos parâmetros é respetiva à ordem em que se apresentam os valoresExistem vários descrições para os diferentes tipos de dados:
  
 ^ Parameter       ^ Description     ^ Example    ^ ^ Parameter       ^ Description     ^ Example    ^
Line 470: Line 472:
 </code> </code>
  
-==== General utilities ====+==== Funções genéricas ====
  
-Standard functions library (stdlib.h) includes functions to simplify different common operations and conversions.+A biblioteca standard da Linguagem C (stdlib.h) inclui funções que permitem a simplificação de várias operações e conversões mais comuns
  
-==== Random function ====+==== Função aleatória ====
  
-Generating a random number is not so simple for AVR microcontroller.+Não é fácil gerar um número aleatório num microcontrolador.
  
-At first the random number generator must be inputed with number to be the basis of random number array generationThe array based on one number is always the same. To make the result more randomthe function can be inputed with values taken from free floating ADC.+Primeiro, é necessário dar como parâmetro de entrada um //gerador// que servirá como base para geração do conjunto de números aleatóriosEste conjuntose for sempre baseado no mesmo número //gerador//, será sempre igual. Por forma tornar o resultado desta função mais aleatório, geralmente utiliza-se como valor //gerador//, um dos valores recolhidos de um dos pinos do ADC do microcontrolador.
  
-Example:+Exemplo:
 <code c> <code c>
 srand(100); srand(100);
Line 486: Line 488:
 </code> </code>
  
-Example about generating a random number in range of 16:+Exemplo de geração de um número aleatório na gama de 1-16:
 <code c> <code c>
 #include <stdlib.h> #include <stdlib.h>
Line 494: Line 496:
 </code> </code>
  
- +Para uma descrição mais detalhada de todas as funções incluídas na Linguagem C:
-The more in-depth english description about C-language functions is in:+
  
 [[http://www.cplusplus.com/reference/clibrary/|http://www.cplusplus.com/reference/clibrary/]] [[http://www.cplusplus.com/reference/clibrary/|http://www.cplusplus.com/reference/clibrary/]]
  
pt/programming/c/crashcourse.1417628435.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0