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/10/23 15:15] aalmeidapt:programming:c:crashcourse [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 70: Line 70:
 No PC //int// = //long// \\ No PC //int// = //long// \\
  
-A linguagem C não contém um tipo de dados que represente uma string (conjunto de carateres). Em vez disso são utilizados vetores de carateres (assunto que será abordado adiante), e são utilizados caracteres ASCII onde a cada caracter alfabético é representado um valor numérico.+A linguagem C não tem um tipo de dados que represente uma string (conjunto de carateres). Em vez disso são utilizados vetores de carateres (assunto que será abordado adiante), e são utilizados carateres ASCII onde a cada caracter alfabético é representado um valor numérico.
  
-==== Variables ====+==== Variáveis ====
  
-Program can use defined type of memory slots variables. Variable names can include latin aplhabet charactersnumbers and underdashes. Beginning with number is not allowedWhen declarations to variables are being madedata type is written in front of itValue is given to variable by using equal sign (=). Example about using variables:+Um programa pode utilizar um tipo de espações de memória pré-definidos, a isto chamamos variáveisOs nomes das variáveis podem incluir qualquer caratere do alfabeto latinonúmeros ou //underscores//, desde que o primeiro caractere não seja um caractere numéricoQuando se declara uma variável num programa, é necessário preceder o nome da variável com o tipo de dados desejado. Por forma a atribuir-se um valor a uma variável é utilizado o sinal de igualdade (=). A seguir apresenta-se um exemplo que ilustra a utilização de variáveis:
  
 <code c> <code c>
Line 91: Line 91:
 </code> </code>
  
-==== Constants ====+==== Constantes ====
  
-Constants are declarated in the same way as variablesexept //const// keyword is added in front of data typeConstants are not changeable during program workExample about using them:+As constantes são declaradas da mesma maneira que as variáveisapenas precedendo a palavra //const// com o tipo de dados respetivoUma constante nunca altera o seu valor durante a execução de um programa. 
 +Um exemplo de utilização de constantes:
  
 <code c> <code c>
Line 100: Line 101:
 </code> </code>
  
-==== Structures ====+==== Estruturas ====
  
-Basic data types can be arranged into structures by using //struct// keywordStructure is combined data type. Type is declarated with //typedef// keywordExample about structures by creating and using data type:+Os tipos básicos de dados podem ser re-agrupados em estruturas por forma a criarem-se tipos de dados mais complexos, recorrendo à palavra //struct//Uma estrutura representa um tipo de dados combinado, este tipo é declarado com palavra //typedef//. 
 +Um exemplo sobre estruturas, sua criação e utilização de tipos de dados complexos:
  
 <code c> <code c>
Line 122: Line 124:
 </code> </code>
  
-==== Arrays ====+==== Vetores ====
  
-Data types can be arranged into arraysArray can have more than one dimensions (tablecube etc). Example about using one- and two-dimensional arrays:+Os tipos básicos de dados podem ser organizados em vetoresOs vetores podem ter várias dimensões (tabelas, cubos, etc.). Seguem-se exemplos da utilização de vetores de uma e duas dimensões respetivamente:
  
 <code c> <code c>
Line 140: Line 142:
 </code> </code>
  
-~~PB~~+<pagebreak>
  
-===== Operations =====+===== Operadores =====
  
-Variablesconstants and value returning functions can be used for composing operationsThe result of and operation can be assigned to variableit can be used as a function parameter and in different control structures.+As variáveisconstantes e valores retornados de funções podem ser utilizados na composição de operaçõesO resultado de uma operação pode ser atribuído uma variávelpode ser utilizado como parâmetro para outras funções ou como valor em diversas estruturas de controlo.
  
-==== Arithmetic operators ====+==== Operadores aritméticos ====
  
-C-language supported artithmetic operations are addition (+), subtraction (-), multiplication (*), division (/) and modulo (%). Some examples about using operators:+A linguagem suporta a generalidade dos operadores aritméticos, como a soma (+), subtração (-), multiplicação (*), divisão (/) e o módulo (%). Seguem-se alguns exemplos ilustrativos da utilização destes operadores:
  
 <code c> <code c>
Line 166: Line 168:
 </code> </code>
  
-==== Logical operators ====+==== Operadores lógicos ====
  
-Logical operators are negation NOT (!), logic multiplication AND (&&and logic addition OR (||). Example about using them:+Os operadores lógicos na linguagem C são compostos pela negação NOT (!), multiplicação lógica AND (&&e a adição lógica (||). Seguem-se exemplos da utilização destes operadores:
  
 <code c> <code c>
Line 190: Line 192:
 </code> </code>
  
-**NB!** //bool// data type in C-language is actually missing and instead integers are used where marks false and every other value marks trueFor examplein HomeLab library //bool// is defined as //unsigned char//Constant //true// marks a value of and //false// a value of 0.+**NOTA!** O tipo de dados //bool// na linguagem C, na realidade não existe, pelo que em alternativa geralmente são utilizados valores inteiros para a representação destes valores, em que o valor representa //Falso//, e qualquer outro valor diferente de 0 representa //Verdadeiro//Por exemplona biblioteca do HomeLab, o tipo de dados //bool// é representado pelo tipo de dados //unsigned char//A constante //Verdadeiro// é então representada pelo valor //Falso// representado pelo valor 0.
  
  
-==== Relational and equality operators ====+==== Operadores relacionais e de igualdade ====
  
-Logical values are a result of comparison of variable valuesEquality operators are equal to (==), not equal to (!=), greater than (>), greater than or equal to (>=), less than (<and less than or equal to (<=). Exaple about using them:+Os valores lógicos são geralmente resultado de uma comparação entre variáveisOs operadores de igualdade são: (==) //igual a//, (!=) //diferente//, (>//maior que//, (>=) //maior ou igual que//, (<//menor que//, (<=) //menor ou igual que//Segue-se um exemplo de utilização destes operadores:
  
 <code c> <code c>
Line 208: 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>
  
-==== Bit operations ====+==== Operações de bit ====
  
-Bit operations are for data manipulation in binary numeral systemThese can be applied only to integer type dataBit operations are quite similar to logic operations but differ from them because operation is carried out with every single bit not the whole numberBit operations in C-language are inversion (~), conjunction (&), disjunction (|), antivalency (^), left shift (<<and right shift (>>).+As operações de //bit// são utilizadas para manipulação de dados em formato binárioEstas apenas podem ser aplicadas a tipos de dados inteirosAs 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úmeroAs operações de //bit// que existem na Linguagem são a inversão (~), conjunção (&), disjunção (|), anti-valência (^), rotação à esquerda (<<e a rotação à direita (>>).
  
 <code c> <code c>
Line 231: Line 233:
 </code> </code>
  
-Bit operations are essential when using the registers of microcontrollerThese are described in AVR register chapter.+As operações de //bit// são essenciais na manipulação de registos de um microcontroladorEstes registos serão descritos adiante no capítulo de registos do AVR.
  
-~~PB~~+<pagebreak>
  
-===== Functions =====+===== Funções =====
  
-Functions are part of a program that can be called by its nameFunction can include parameters as input and can return one outputIf the function is not returning parameterit has type //void//If the function has no parameters as its inputin older C-language compilers //void// must also be written besides parameter declarationExample about addition function and a function without return:+As funções definem partes de um programa que pode ser denominadas e invocadas pelo nomeAs funções podem incluir parâmetros de entrada e permitem retornar um valor de saídaSe função não retorna nenhum valoresta função é definida com o tipo //void//Se a função não possui parâmetros de entradaem 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.
  
 <code c> <code c>
Line 254: Line 257:
 </code> </code>
  
-To use a functionit must be calledIt is required that function is declared before callExample about calling addition function:+Para utilizar-se uma funçãoesta deve ser invocadaPara isso, é necessário que função seja declarada antes de ser invocadaUm exemplo com a invocação de uma função:
  
 <code c> <code c>
Line 270: 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 294: 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 317: 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 352: 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 369: 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 390: 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 416: 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 444: 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 467: 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 483: 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 491: 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.1414077316.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