Disciplina: AAM Profa. Ana Watanabe 03/13 vol.2

Slides:



Advertisements
Apresentações semelhantes
Funções em C Prof. Fabiano Utiyama.
Advertisements

Laboratório de Programação
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
QUESTÕES PRELIMINARES
Versão – Prof.: Mauro César Lopes
Algoritmo e Programação
Capítulo 1 – Conceitos Básicos 1 Segunda-feira, 22 de Outubro de 2007 UNIBRATEC – Ensino Superior e Técnico em Informática Aula 15 – Tipos de Dados Avançados.
Programação para Engenharia I
Algoritmos e Programação Linguagens de Programação Teoria Aula (09/06)
LINGUAGEM C.
Programação para Engenharia I
AULA – Linguagem C – Vetores, Ponteiros Estruturas
Linguagem C Estruturas de Controle de Fluxos
Disciplina: AAM Profa. Ana Watanabe 27/02/13
Universidade Federal do Espírito Santo
Universidade Federal do Espírito Santo
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
Versão – Prof.: Mauro César Lopes
Linguagem C.
Linguagem C Estruturas de Seleção.
Versão – Prof.: Mauro César Lopes
Linguagem C Estruturas de Sequências
Variável Variável: “objecto” que pode assumir diversos valores;
Ling. C - Variáveis Uma variável não é mais do que o nome que nós damos a uma determinada posição de memória para conter um valor de um determinado tipo.
Linguagem C Conteúdos já desenvolvidos
Revisão da Linguagem C.
O Portal do Estudante de Computação
O Portal do Estudante de Computação
O Portal do Estudante de Computação
INTRODUÇÃ A COMPUTAÇÃO ENG. CIVIL
Introdução a Computação e Cálculo Numérico
< declaração de variáveis > ( estrutura de dados )
Aula prática 6 Vetores e Matrizes
Ameliara Freire Os programas manipulam dados, armazenando- os e, muitas vezes, modificando seus valores. Basicamente, a linguagem.
1 Funções de intervalo. Primeiro contacto com o C e o C++ Uma função de intervalo é uma aplicação f: [a,b] [a,b] definida de forma recursiva x n+1 =f(x.
Funções de intervalo. Primeiro contacto com o C e o C++
Aula 03.
PROGRAMAÇÃO ESTRUTURADA II
CADEIA DE CARACTERES (Strings)
PROGRAMAÇÃO ou LINGUAGEM C?
PROGRAMAÇÃO I UNIDADE 2.
PROGRAMAÇÃO PROCEDIMENTAL
PCI- Introdução a linguagem C
Programação em C++ Compiladores
Linguagem de Programação JAVA
Algoritmo e Programação
Técnicas de Desenvolvimento de Programas
Técnicas de Programação I Prof:. Msc. Arimatéia Junior Fortaleza-2011.
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
By Ducheno Kelly Centro de Formação São Domingos.
3. Introdução à Linguagem C
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
Tipos de Dados Operadores
MSc. Marcelo Torres – professortorres.com.br. Linguagem de Programação 01 - Introdução à Linguagem C MSc. Marcelo Torres – professortorres.com.br.
Programação I Aula 3 (Entrada de Dados) Prof. Gilberto Irajá Müller Última atualização 11/3/2009.
Aula Prática 4 Monitoria IP/CC (~if669).
Aula Prática 3 Funções Monitoria Introdução à Programação.
Aula prática 3 Aprofundando em Funções Parâmetros de uma função Uso do return Execução Variáveis Global, local e estática Monitoria de Introdução à.
Tipos de dados inteiro caracter real logico
JAVA Sintaxe.
Aula Prática 3 Funções Monitoria Introdução à Programação.
Linguagem C.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 2 Variáveis e Atribuições.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Profa. Maria Augusta Constante Puget
Profa. Maria Augusta Constante Puget
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
D E V ISUAL G P ARA C++ Utilização do Dev C++. Todo programa C inicia sua execução chamando a função main(), sendo obrigatória a sua declaração no programa.
Programação e Sistemas da Informação 48 tempos IPTrans, Novembro 2009 Prof. Marisa Gomes.
FUNÇÕES Dilvan Moreira (baseado em material de Z. Liang)
Transcrição da apresentação:

Disciplina: AAM Profa. Ana Watanabe 03/13 vol.2 Linguagem C Disciplina: AAM Profa. Ana Watanabe 03/13 vol.2

Linguagem C “O orgulho só gera discussões, mas a sabedoria está com os que tomam conselho .” Provérbios 13:10

Linguagem C Objetivo da aula: Representação numérica; Tipos de dados: =>Variáveis =>constantes

Linguagem C - Representação numérica CHAR=> é um tipo para caracter com 8 bits, portanto NÃO É NÚMERO, assim NÃO TEM VALOR NEGATIVO (ou seja, não usa Complemento de dois); Então, pode-se dizer que o intervalo é de 0 a 255

Linguagem C - Representação numérica signed CHAR=> se usado como número, então pode haver número negativo e é necessário considerar como Complemento de dois); Então, pode-se dizer que o intervalo é de:

Linguagem C - Representação numérica signed CHAR=> intervalo de -2⁸ a 2⁸ - 1 = -128 a 127 Vamos analisar como ficaria a representação em C2 dos números binários de 4 dígitos:

Linguagem C - Representação numérica Em C2 não há duas representações para o valor 0 como em sinal e magnitude e , portanto há uma representação a mais para o valor negativo:

Linguagem C - Representação numérica FAIXA DE REPRESENTAÇÃO A faixa de representação de uma representação na base 2 em complemento a base com n bits pode ser calculada como 2n valores (entre - 2n-1 e + 2n-1-1), sendo 2 a base. O maior valor inteiro positivo será então + ( 2n-1-1) e o menor valor inteiro negativo será - ( 2n-1).

Linguagem C - Representação numérica FAIXA DE REPRESENTAÇÃO Portanto, quando se usa representação para sinal e magnitude a representação na base 2 pode ser calculada como 2n valores (entre - 2n-1  -1 e + 2n-1-1), sendo 2 a base. O maior valor inteiro positivo será então + ( 2n-1-1) e o menor valor inteiro negativo será - ( 2n-1 -1) também! Sinal e magnitude para 8 bits = - 28  -1 e + 28-1 = -127 a 127

Linguagem C JM60

Linguagem C JM128

Quantos bits tem um int em C? Linguagem C Quantos bits tem um int em C?

Linguagem C Quantos bits tem um int em C? Depende DO COMPILADOR. O compilador vai decidir isso. No nosso caso, o compilador do CodeWarrior fornece duas opções: 4-byte integer ou 2-byte integer.

Linguagem C Considerando para o JM128(ColdFire) 4 bytes): unsigned int – temos 32 bits para representar um número não-sinalizado. Ou seja, seja qual for o padrão de bits na variável, o compilador o interpretará como um número sem sinal. Podemos representar valores de 0 até 4.294.967.295. signed int – temos 32 bits para representar um número COM sinal. Podemos representar valores de -2.147.483.648 até 2.147.483.647 (lembrando que utilizamos a representação em complemento de 2). unsigned short – idêntico ao unsigned int, porém com metade do número de bits. short/signed short – indêntico ao int (signed int), porém com metade do número de bits. unsigned char – temos 8 bits, em representação não-sinalizada. char/signed char – 8 bits, representação sinalizada. DICA! Ao representar endereços no HCS08 e ColdFire devemos utilizar o tipo unsigned int, já que os endereços são de 16 ou 32 bits e não faz sentido falar em endereço absoluto negativo.

Linguagem C Variáveis: VARIÁVEIS, CONSTANTES, OPERADORES E EXPRESSÕES o nome deve começar com uma letra ou sublinhado (_) os caracteres subsequentes devem ser letras, números ou sublinhado (_). o nome de uma variável não pode ser igual a uma palavra reservada, nem igual ao nome de uma função declarada pelo programador, ou pelas bibliotecas do C. Variáveis de até 32 caracteres são aceitas. é "case sensitive“, portanto deve-se prestar atenção às maiúsculas e minúsculas.

Linguagem C (variáveis) Dica de nomes de Variáveis: É uma prática tradicional do C, usar letras minúsculas para nomes de variáveis e maiúsculas para nomes de constantes. Isto facilita na hora da leitura do código;

Linguagem C (variáveis) Declaração e Inicialização de Variáveis As variáveis no C devem ser declaradas antes de serem usadas. A forma geral da declaração de variáveis é: tipo_da_variável lista_de_variáveis;

Linguagem C (variáveis) Declaração e Inicialização de Variáveis As variáveis de mesmo tipo e deverão ser separadas por vírgula. Como o tipo default do C é o int, quando vamos declarar variáveis int com algum dos modificadores de tipo, basta colocar o nome do modificador de tipo.

Linguagem C (variáveis) Declaração e Inicialização de Variáveis Assim um long basta para declarar um long int. Exemplo: char ch, letra;  // duas variáveis do tipo char long count;   // uma variavel long int     float pi; // uma variável float

Linguagem C (variáveis) Declaração e Inicialização de Variáveis Podemos inicializar variáveis no momento de sua declaração. Para fazer isto podemos usar a forma geral: tipo_da_variável nome_da_variável = constante; Isto é importante pois quando o C cria uma variável ele não a inicializa. Isto significa que até que um primeiro valor seja atribuído à nova variável ela tem um valor indefinido e que não pode ser utilizado para nada.

Linguagem C (variáveis) Declaração e Inicialização de Variáveis Exemplos de inicialização são dados abaixo : char ch='D'; int count=0; float pi=3.141; Nunca presuma que uma variável declarada vale zero ou qualquer outro valor.

Linguagem C (variáveis) Declaração e Inicialização de Variáveis Verifique se o programa apresenta um erro: int main() { int i; int j; j = 10; int k = 20; return(0); }

Linguagem C (variáveis) Declaração e Inicialização de Variáveis Verifique se o programa apresenta um erro: int main() { int i; int j; j = 10; int k = 20; /* Esta declaracao de variável não é válida, pois não está sendo feita no início do bloco */ return(0); }

Linguagem C (variáveis) Declaração e Inicialização de Variáveis Lugares para declarar as variáveis: 1) O primeiro é fora de todas as funções do programa. Estas variáveis são chamadas variáveis globais e podem ser usadas a partir de qualquer lugar no programa. Todas as funções as enxergam!!.

Linguagem C (variáveis) Declaração e Inicialização de Variáveis 2) Início de uma função ou bloco de código. São chamadas de variáveis locais e só têm validade dentro do bloco ou função no qual são declaradas, isto é, só o bloco ou função à qual ela pertence sabe da existência desta variável.

Linguagem C (variáveis) Declaração e Inicialização de Variáveis 3) As chamadas variáveis formais de uma função são declaradas na lista de parâmetros de uma função. Apesar destas variáveis receberem valores externos, estas variáveis são conhecidas apenas pela função onde são declaradas.

Linguagem C (variáveis) Exemplo: Verificar se tem algum erro de código!!! #include <stdio.h> int contador;    // variável GLOBAL int func1(int j); //Protótipo de uma função int main()         {      char condicao;        // variáveis lOCAIS da função int i;                for (i=0; i<100; i=i+1)                    {              /* Bloco do for */                     float f2;       // variável LOCAL do bloco  de código            /* etc ... */                    func1(i);                  }                    /* etc ...  */ return(0);       f2++;        } int func1(int j) {     // variável FORMAL           /* aqui viria o código da funcao ... */                 }   

Linguagem C (variáveis) Exemplo: Verificar se tem algum erro de código!!! #include <stdio.h> int contador;    // variável GLOBAL int func1(int j) {     // variável FORMAL           /* aqui viria o código da funcao ... */                 }    int main()         {      char condicao;        // variáveis lOCAIS da função int i;                for (i=0; i<100; i=i+1)                    {              /* Bloco do for */                     float f2;       // variável LOCAL do bloco  de código            /* etc ... */                    func1(i);                  }                    /* etc ...  */ return(0);       f2++;       //ERRO de COMPILAÇÃO, pois está fora do bloco!!  }

Linguagem C (variáveis) Declaração e Inicialização de Variáveis Quando utilizar variável global e variável local??? Qual escolher?

Linguagem C (variáveis) Declaração e Inicialização de Variáveis Via de regra, utilize variáveis locais. Se alguma outra função precisar do conteúdo dessa variável passe como parâmetro. Mas, por quê?

Linguagem C (variáveis) Declaração e Inicialização de Variáveis Dados Pilha Variáveis globais Variáveis locais

Linguagem C (variáveis) Declaração e Inicialização de Variáveis Quando as funções do seu programa são chamadas, o conteúdo das variáveis vai sendo empilhado na memória, ou seja, na parte da pilha. Uma vez terminada a função, todos os dados referentes a ela na pilha são apagados. Dados globais ficam no campo ‘Data’ até o término do programa. Com isso, podemos entender o porquê da recomendação geral de utilização de variáveis locais. É tudo uma questão de economia de memória. Se todas as variáveis de nosso programa fossem globais, não haveria a possibilidade da liberação de memória. Há um outro motivo. Como qualquer função do programa pode utilizar uma variável global, é fácil que o programador se perca na sua utilização e que haja erros na programação.

Linguagem C (variáveis) Declaração e Inicialização de Variáveis Quando usar variáveis globais????

Linguagem C (variáveis) Declaração e Inicialização de Variáveis Em geral, quando o conteúdo de uma variável DEVE ser enxergado pelas várias funções do programa, sendo que cada função precisa verificar o estado de tal variável para decidir o que fazer. Também recomenda-se o uso de variáveis globais em casos de variáveis que se alteram muito pouco. Isso acontece MUITO em programação de sistemas embarcados. A variável global pode representar o conteúdo de um registrador de estado, por exemplo. As funções do programa devem verificar o estado para decidir o que fazer.

Linguagem C (variáveis) Declaração e Inicialização de Variáveis . Veja um exemplo simples de dois programas que fazem a mesma coisa, porém, um deles utilizando variável global e o outro local. Nesse pequeno exemplo podemos ver que já eliminamos a necessidade de passagem por parâmetros da variável em questão. Num programa maior, no qual muitas funções chamam muitas outras funções, isso representa um ganho substancial em organização.

Linguagem C (variáveis) Exemplo usando Variável Local int main () { int registradorEstado; a(&registradorEstado); b(&registradorEstado); } void a (int * estado) { if (estado == 0) { /* faz algo */ estado = 1; void b(int * estado) { if (estado == 1) { /*faz algo*/ estado = 0;

Linguagem C (variáveis) Exemplo usando Variável Global int registradorEstado; int main () { a(); b(); } void a () { if (registradorEstado == 0) { /* faz algo */ registradorEstado = 1; void b() { if (registradorEstado == 1) { /*faz algo*/ registradorEstado = 0;

Linguagem C Tipos de dados Avançados: Constantes Modificador de Acesso: mudam a maneira com a qual a variável é acessada e modificada. Const: Esta variável não pode ser modificada no programa. Como o nome já sugere é útil para se declarar constantes.

Linguagem C (constantes) Modificador de Acesso Ex.: const float PI = 3.141; //pode ser //inicializada. Mas PI não pode ser alterado em qualquer outra parte do programa. Se o programador tentar modificar PI o compilador gerará um erro de compilação.

Linguagem C (constantes) Seu uso mais comum é evitar que um parâmetro de uma função seja alterado pela função. É muito útil no caso de um ponteiro, pois o conteúdo de um ponteiro pode ser alterado por uma função.

Linguagem C (constantes) Para tanto, basta declarar o parâmetro como const. Veja o exemplo: #include <stdio.h> int pot(const int *num); // protótipo main (void){ int a=10; int b; b=pot (&a); } int pot(const int *num) { return ((*num)*(*num));}

Linguagem C (constantes) Qual o problema deste código? #include <stdio.h> int pot(const int *num); main (void){ int a=10; int b; b= pot (&a); } int pot(const int *num) { num=10; return ((*num)*(*num));

Linguagem C (constantes) Qual o problema deste código? #include <stdio.h> int pot(const int *num); main (void){ int a=10; int b; b=pot (&a); } int pot(const int *num) { num=10; // não pode mudar o valor do endereço de num! return ((*num)*(*num));