algo 08 introducao linguagem C [Modo de Compatibilidade]rcmg/cefet-al/algo/aulas/... · 3 Linguagem...

Post on 04-Jul-2020

9 views 0 download

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 Gomesreinaldo@cefet-al.br

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 Gomesreinaldo@cefet-al.br

Pré-processadorVariáveis

Operadores