algo 08 introducao linguagem C [Modo de Compatibilidade]rcmg/cefet-al/algo/aulas/... · 3 Linguagem...
Transcript of algo 08 introducao linguagem C [Modo de Compatibilidade]rcmg/cefet-al/algo/aulas/... · 3 Linguagem...
1
Algoritmos e Lógica de Programação
IntroduçãoP é d
Linguagem CLinguagem C
Reinaldo [email protected]
Pré-processadorVariáveis
Operadores
Introdução: HistóricoLinguagem criada por Dennis Ritchie em 1972
Linguagem de Programação C
Linguagem criada por Dennis Ritchie em 1972Em 1973 foi utilizada para reescrever o UNIXSurgem diversas versões da Linguagem C, porém os códigos gerados eram incompatíveisANSI (American National Standard Institute), em 1983 padronizou a Linguagem Cpadronizou a Linguagem CO objetivo do curso é utilizar C ANSIUtilizando características especiais de uma versão especifica de C, não há garantia que o programa seja compilado em outra versão de C
2
Introdução: C comparada a outras linguagensDevemos entender Nível Alto como sendo a
Linguagem de Programação C
Devemos entender Nível Alto como sendo a capacidade da linguagem em compreender instruções escritas em “dialetos” próximos da linguagem falada (Pascal, por exemplo) e Nível Baixo para aquelas linguagens que se aproximam do Assembler, que é a linguagem própria da máquina, compostas por instruções binárias e outras incompreensíveis para o ser humano não treinado para este propósito.
Linguagem de Programação CIntrodução: C comparada a outras linguagens
Nível Baixo Nível Médio Nível Alto
Velocidade
Clareza / Simplicidade
A bl C Basic Pascal AdaAssembler C
COBOL
Basic Pascal Ada
Modula -2
3
Linguagem de Programação CIntrodução: Características da Linguagem
PortabilidadePortabilidadeModularidadeLinguagem compilada com geração de código compacto e rápidoRecursos de baixo nívelSi li id d F ilid d d (Alt í l)Simplicidade e Facilidade de uso (Alto nível)
Linguagem de Programação CIntrodução: Características da Linguagem
Alia, portanto, características de linguagens de alto e p g gbaixo nível (liberdade ao programador).Pode ser usada para os mais variados propósitosIndicada para escrever software básico (SO, BD, Editores de texto, planilhas, etc.).
Para criar um programa Para criar um programa ...Utilize um editor para criar o código fonte;Utilize um compilador e um linkeditor para gerar o programa executávelSugestão: Dev C++ for windows – www.bloodshed.net
4
Linguagem de Programação CIntrodução: Palavras Reservadas
São palavras que têm um significado especial para a São palavras que têm um significado especial para a linguagem
• break, case, if, for, while, return, const, do, else, continue, switch, int, double, unsigned, long, char, float...
C entende tais palavras apenas em letrasC entende tais palavras apenas em letrasminúsculas
Linguagem de Programação CIntrodução: Bibliotecas
Conjunto de funções para realizar tarefas específicasConjunto de funções para realizar tarefas específicas.Biblioteca padrão C - ANSI - funções básicas.As primeiras linhas do programa indicam as bibliotecas utilizadas
• #include <minha_biblioteca.h>Exemplos:Exemplos:
• stdio.h – Funções de entrada e saída • math.h – Funções matemáticas comuns • string.h – Funções para manipular strings.• stdlib.h – Funções para alocação de memória
5
Linguagem de Programação CIntrodução: Estrutura de um programa C
Os programas começam com a função main( )Os programas começam com a função main( )A função main( ) é obrigatória { e } identificam o início e o fim de um bloco de comandosAs variáveis são declaradas imediatamente depois da abertura do bloco da função (depois da { )abertura do bloco da função (depois da { )Declarações iniciadas por # identificam comandos para o pré-processador (diretivas)
• #include <stdio.h>• #define TAMANHO 10
/* Primeiro Programa em C */
Linguagem de Programação CIntrodução: Estrutura de um programa C
/ Primeiro Programa em C /
#include <stdio.h>
main(){
printf(“Meu primeiro programa em C\n”);
}
6
/* P i i P C */ tá i
Linguagem de Programação CIntrodução: Estrutura de um programa C
/* Primeiro Programa em C */ comentários#include <stdio.h> /*biblioteca de E/S */
main() /*função principal – inicio do programa*/
{ /*marca início da função*/
printf(“Meu primeiro programa em C\n”); /*função para escrever na tela*/ç p
system (“PAUSE”); /* Espera qq tecla pra sair } /*marca fim da função*/
Instruções terminam com ponto-e-vírgula
A função system()A função system() executa um comando interno do sistema operacional do sistema operacional
/* Primeiro Programa em C */
#include <stdio.h>
main(){
printf(“Meu primeiro programa em C\n”);
system(“dir”);
system (“pause”);
}
7
O pré-processador e a diretiva includeO pré-processador examina o programa fonte em C e executa certas modificações baseados em diretivasA diretiva include
#include <stdio.h>#include <stdlib.h>#include “meuArquivo.h”I l i i fInclui outro arquivo em um programa fonteAs alterações são inseridas antes da compilaçãoPode ser usado com <> (procura arquivo apenas na pasta include) e com “” (procura primeiro no diretório corrente e depois na pasta include)
O pré-processador CExecuta modificações no código fonte antes da compilaçãoFaz parte do compilador e executam diretivasAs diretivas podem ser colocadas em qualquer lugar do programaAs mais usadas são:
#define #ifndef#define #ifndef#undef #else#include #elif#if #endif#ifdev #error
8
O pré-processador C#define
Define constantes com nomes apropriados. Executa p puma substituição textual.Não há substituição dentro de cadeia de caracteres (strings)Ex: #define PI 3.14Ex2: #define ERRO printf(“\a\aERRO”)
. . .if (Zebra)ERRO;. . .
O pré-processador C#define e const
A diretiva #define realiza uma substituição textualA diretiva #define realiza uma substituição textualO qualificador const é tipado, ou seja, pode ser utilizado pelo compilador para detecção de erros e devem ser inicializadas sempre.
int main()t a (){ int i,j;
const double Pi = 3.1416;system("PAUSE"); return 0;
}
9
O pré-processador CMacros
#include <stdio.h>#include <stdlib h>#include <stdlib.h>#define PRN(n) printf("%.2lf\n", (double)n)int main(){ int n1,n2;
n1=1416;n2=n1/2;PRN(n1); /* Chamada a macro */PRN( 2) /* Ch d */PRN(n2); /* Chamada a macro */system("PAUSE");return 0;
}
O pré-processador C#undef
Remove a mais recente definição criada com #defineRemove a mais recente definição criada com #define• #define GRANDE 3
• #define GRANDE 8
• #undef GRANDE
10
O pré-processador C#include
Incluem um outro arquivo no programa fonteq p gO outro arquivo é um texto ASCII que incorporam definição de constantes, protótipos de funções, definições de tipos de dados complexos e declarações de variáveis externas;
#if, #elif, #else e #endifCada diretiva #if deve terminar com a diretiva #endifCada diretiva #if deve terminar com a diretiva #endifEntre #if e #endif pode ser colocado qualquer número de #elif mas só se permite uma diretiva #elseA #else é opcional, mas se estiver presente deve ser a última anterior a #endif
O pré-processador CEx.#if CORES > 5#if CORES > 5
#define SOMBRA 1#if COR_FUNDO == 1
#include “cor_fundo.h”#else
#include “sem_fundo.h”#endif
#endif
11
Linguagem de Programação CTipos de Dados
Tipos InteirosTipos Inteiros• char: 1 byte e escala de -128 a 127
• unsigned char: 1 byte e escala de 0 a 255
• int: 2 bytes e escala de -32768 a 32767
• unsigned int: 2 bytes e escala de 0 a 65535
• long: 4 bytes
Linguagem de Programação CTipos de Dados
Tipos FlutuantesTipos Flutuantes• float: 4 bytes e escala de 3.4e-38 a 3.4e+38
• double: 8 bytes e escala de 1.7e-308 a 1.7e+308
12
Linguagem de Programação CVariáveis
Variável: elemento que pode assumir diversos valores;Variável: elemento que pode assumir diversos valores;Espaço de memória de um certo tipo de dado associado a um nome para referenciar seu conteúdo.Não podemos definir um identificador com o mesmo nome que uma palavra chaveC é case sensitive:C é case-sensitive:
• peso ≠ Peso ≠ pEso
Linguagem de Programação CVariáveis
As variáveis são declaradas depois da abertura do As variáveis são declaradas depois da abertura do bloco da função (depois da { )Sintaxe:
• tipo nome-da-variável; ou• tipo nome1, nome2, ..., nomeN; ou• tipo nome-da-variável = valor default;tipo nome da variável valor_default;
– Ex.: char nome;– int idade, num;– int soma = 0;
13
#include <stdio.h>
Linguagem de Programação CExemplo: tipos de dados e variáveis
main( ){
int soma = 10;float money = 2.21;char letra= ‘A’;
printf(“valor de soma = %d\n”, soma);printf( valor de soma %d\n , soma);printf(“Valor de Money = %f\n”, money);printf(“Valor de Letra = %c\n”, letra);
}
Linguagem de Programação CVariáveis globais
Declaração: fora do corpo de qualquer funçãoPossuem como escopo todas as rotinas da aplicaçãoSão alocadas em tempo de compilação e ocupam memória durante toda a execução do programaObservações
• Caso se tente declarar uma variável global de mesmo nome gmais de uma vez, o compilador indicará um erro de identificador duplicado
• Caso se esteja trabalhando em uma aplicação com mais de um módulo (arquivos fontes) é preciso fazer uma indicação ao compilador que as variáveis globais já estão declaradas em outro módulo
14
Linguagem de Programação CVariáveis globais – exemplo de uso
Linguagem de Programação CVariáveis globais
Não é obrigatório mas é melhor declarar variáveis Não é obrigatório, mas é melhor declarar variáveis globais no início do programa
Deve-se evitar o uso de variáveis globais desnecessárias
A declaração de muitas variáveis globais pode levar a erros por causas desconhecidas
15
Linguagem de Programação CModificador de declaração extern
Indica ao compilador que os nomes e tipos que se Indica ao compilador que os nomes e tipos que se seguem já foram declarados em um outro módulo da aplicaçãoExemplo
Linguagem de Programação CModificador de declaração static
Principais usos:Principais usos:• Declaração de variáveis estáticas locais• Declaração de variáveis estáticas globais
Variáveis estáticas locais• São variáveis que são visíveis apenas na função onde foram
declaradas, como as variáveis locais,• Diferença: mantêm seus valores entre chamadas de função,
como as variáveis globais.• Exemplo do seu uso: um gerador de série de números que
produz um novo valor baseado no anterior
16
Linguagem de Programação CModificador de declaração static - Exemplo
Linguagem de Programação CExemplo: Função que requer o uso de um modificador static localmodificador static local
Gerador de números sequenciais que produz um novo valor baseado no anterior
int series(void){t ti i t S i 100static int numSerie = 100;
numSerie = numSerie + 10;return(numSerie);
}
17
Linguagem de Programação CVariáveis estáticas globais
São variáveis globais que são enxergadas apenas no São variáveis globais que são enxergadas apenas no módulo (arquivo fonte) onde foram declaradas.
Exemplo
Linguagem de Programação CExemplo - Continuação
18
Linguagem de Programação CVariáveis tipo register
Na prática caracteres inteiros são colocados nos Na prática, caracteres inteiros são colocados nos registradores da CPUO especificador register só pode ser aplicado a variáveis locais e parâmetros formais;Ideais pra o controle de laços
• Muitas referências a uma mesma variável• Muitas referências a uma mesma variável.Exemplo
Linguagem de Programação COperador de Atribuição
Em C o operador de atribuição é o sinal de igual “ =”Em C o operador de atribuição é o sinal de igual
É comum programadores iniciantes na Linguagem C confundirem o “=“ com o operador lógico de igualdade “==“
Assim são corretas as expressões int x = 0; e if (x == 4) Assim, são corretas as expressões int x = 0; e if (x == 4)
Está errada a expressão (caso a intenção seja um teste)if (x = 0)
19
Operador Ação
Operadores Aritméticos
+ Adição
* Multiplicação
/ Divisão
% Resto da divisão inteira
‐ Subtração
‐‐ Decremento
++ Incremento
Operador Ação
Operadores Lógicos e Relacionais
> Maior que
>= Maior ou igual que
< Menor que
<= Menor ou igual que
== Igual a
! Dif d!= Diferente de
&& Condição “E”
|| Condição “OU”
! Não
20
Operador Ação
Incremento e Decremento
i +=2; i = i + 2;
d ‐= 3; d = d – 3;
x *= y + 1; x = x * (y + 1);
y = x = 0; y = 0; x = 0;
x‐‐; x = x – 1;
++x; x = x + 1;++x; x = x + 1;
y = x‐‐; y = x; x = x – 1;
y = ++x; x = x + 1; y = x;
y = ++x + 2; x = x + 1; y = x + 2;
y = 1 + x‐‐; y = 1 + x; x = x – 1;
int main()
O modificador unsigned (sem sinal)
Linguagem de Programação C
int main() {
unsigned j = 429496700UL;int i = j;printf (“\n Variavel unsigned = %u", j);printf (“\n Variavel int = %d", i);system ("pause");return 0;
}
O bit mais significativo de uma variável é:0 se o número for positivo1 se o número for negativoUnsigned ignora o bit de sinal
21
Operadores cast e sizeofOperador cast - conversão de tipos:
Linguagem de Programação C
Operador cast conversão de tipos: • float f = 3.5;
int i = (int) f; /* i será igual a 3 */
Operador sizeof() - retorna o tamanho da variável em bytes: bytes:
• Ex.: sizeof(i) resultaria em 2.• Ex.: sizeof(char) resultaria em 1.
Conversões de TiposQuando forem misturadas variáveis de diferentes tipos,
Linguagem de Programação C
p ,o compilador C converterá os operandos para o tipo de operando maior, de acordo com as regras descritas a seguir:
• Todo char e short é convertido para int.• Todo int é convertido para float.• Todo float é convertido para doubleTodo float é convertido para double.
Sempre de acordo com o tamanho e a escala de cada tipo!
22
Operador de endereço &Toda variável ocupa uma área de memória e seu
Linguagem de Programação C
Ex:Main ( )
Saída: valor = 2, endereço = FA01Varia conforme memória da máquina
Toda variável ocupa uma área de memória e seu endereço é o primeiro byte por ela ocupadoQuando usamos & precedendo uma variável estamos falando do endereço desta variável na memória
{int num;num = 2;printf(“valor = %d, num);printf(“ endereço = %x”, &num);
}
Varia conforme memória da máquina
Operadores - OBSERVAÇÕES:Em C o resultado de uma expressão resultará ZERO
Linguagem de Programação C
Em C, o resultado de uma expressão resultará ZERO se for avaliada como FALSA, e resultará UM no caso de ser avaliada como VERDADEIRA.
Em C, considera-se o valor ZERO como sendo FALSO e qualquer número DIFERENTE DE ZERO como sendo e qualquer número DIFERENTE DE ZERO como sendo VERDADEIRO.
23
Operadores – EXEMPLO 1:
Linguagem de Programação C
#include <stdio.h>
main ( ){int verdadeiro, falso;
verdadeiro = (15 < 20);
Saída: Verd.= 1 Falso = 0
verdadeiro = (15 < 20);falso = (15 == 20);printf(“Verdadeiro = %d”, verdadeiro);printf(“Falso = %d\n”, falso);
}
Operadores – EXEMPLO 2:Observa-se que ++x é diferente de x++!
Linguagem de Programação C
Sex = 10;y = ++x;
Sex = 10;y = x++;
Observa se que ++x é diferente de x++!
/* x=x+1; y=x; */
então x = 11 ey = 11
/* y=x; x=x+1 */
então x = 11 e y = 10
24
#include<stdio h>
Linguagem de Programação COperadores – EXEMPLO 3:#include<stdio.h>main(){int n1 = 0, n2;n2 = ++n1;printf(“n1 = %d, n2 = %d\n”, n1, n2);
n2 = n1++;printf(“n1 = %d, n2 = %d\n”, n1, n2);}
Quais são as saídas deste programa ?
S
Operadores – EXEMPLO 4:
Linguagem de Programação C
Seint x = 1;int y = 2;printf(“%d = = %d é %d\n”, x, y, x = = y );
Qual a saída deste comando?resultaria em (1 == 2)=> 0 (zero)
(pois a expressão é falsa)
25
if (10 > 4 && !(10 < 9) || 3 < 4)
Operadores – EXEMPLO 5:
Linguagem de Programação C
if (10 > 4 && !(10 < 9) || 3 <= 4)
Como seria avaliada esta instrução?resultaria em Verdadeiro, pois dez é maior que quatro E dez não é menor que nove q q qOU três é menor ou igual a quatro
ExercíciosImplementar um programa que imprima a quantidade
Linguagem de Programação C
Implementar um programa que imprima a quantidade de bytes dos tipos:
• int• float• double• char
26
Linguagem de Programação CConstantes (Exercícios)
1. Calcular e imprimir o comprimento de um círculo.
2. Calcular e imprimir a área de um círculo.
Algoritmos e Lógica de Programação
IntroduçãoP é d
Linguagem CLinguagem C
Reinaldo [email protected]
Pré-processadorVariáveis
Operadores