• Nenhum resultado encontrado

Algoritmos e Lógica de Programação

N/A
N/A
Protected

Academic year: 2022

Share "Algoritmos e Lógica de Programação"

Copied!
26
0
0

Texto

(1)

Algoritmos e Lógica de Programação

Introdução

P é d

Linguagem C Linguagem C

Reinaldo Gomes reinaldo@cefet-al.br

Pré-processador Variáveis Operadores

„

Introdução: Histórico

ƒ Linguagem criada por Dennis Ritchie em 1972

Linguagem de Programação C

Linguagem criada por Dennis Ritchie em 1972

ƒ Em 1973 foi utilizada para reescrever o UNIX

ƒ Surgem diversas versões da Linguagem C, porém os códigos gerados eram incompatíveis

ƒ ANSI (American National Standard Institute), em 1983 padronizou a Linguagem C

padronizou a Linguagem C

ƒ O objetivo do curso é utilizar C ANSI

ƒ Utilizando 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 linguagens

ƒ Devemos 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 C

„

Introdução: C comparada a outras linguagens

Nível Baixo Nível Médio Nível Alto

Velocidade

Clareza / Simplicidade

A bl C Basic Pascal Ada

Assembler C

COBOL

Basic Pascal Ada Modula -2

(3)

Linguagem de Programação C

„

Introdução: Características da Linguagem

ƒ PortabilidadePortabilidade

ƒ Modularidade

ƒ Linguagem compilada com geração de código compacto e rápido

ƒ Recursos de baixo nível

Si li id d F ilid d d (Alt í l)

ƒ Simplicidade e Facilidade de uso (Alto nível)

Linguagem de Programação C

„

Introdução: Características da Linguagem

ƒ Alia, portanto, características de linguagens de alto e p g g baixo nível (liberdade ao programador).

ƒ Pode ser usada para os mais variados propósitos

ƒ Indicada 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ável

ƒ Sugestão: Dev C++ for windows – www.bloodshed.net

(4)

Linguagem de Programação C

„

Introduçã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 letras minúsculas

Linguagem de Programação C

„

Introduçã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.

(5)

Linguagem de Programação C

„

Introduçã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 comandos

ƒ As 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 C

„

Introduçã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 C

„

Introduçã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 include

„

O pré-processador examina o programa fonte em C e executa certas modificações baseados em diretivas

„

A diretiva include

ƒ #include <stdio.h>

ƒ #include <stdlib.h>

ƒ #include “meuArquivo.h”

I l i i f

ƒ Inclui outro arquivo em um programa fonte

ƒ As alterações são inseridas antes da compilação

ƒ Pode 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 C

„

Executa modificações no código fonte antes da compilação

„

Faz parte do compilador e executam diretivas

„

As diretivas podem ser colocadas em qualquer lugar do programa

„

As 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 p uma substituição textual.

ƒ Não há substituição dentro de cadeia de caracteres (strings)

ƒ Ex: #define PI 3.14

ƒ Ex2: #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 textual

ƒ O 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 C

„

Macros

#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 g

ƒ O 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 #endif

ƒ Cada diretiva #if deve terminar com a diretiva #endif

ƒ Cada diretiva #if deve terminar com a diretiva #endif

ƒ Entre #if e #endif pode ser colocado qualquer número de

#elif mas só se permite uma diretiva #else

ƒ A #else é opcional, mas se estiver presente deve ser a última anterior a #endif

O pré-processador C

„

Ex.

#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 C

„

Tipos 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 C

„

Tipos 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 C

„

Variá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 chave

ƒ C é case sensitive:

ƒ C é case-sensitive:

• peso ≠ Peso ≠ pEso

Linguagem de Programação C

„

Variá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 C

„

Exemplo: 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 C

„

Variáveis globais

ƒ Declaração: fora do corpo de qualquer função

ƒ Possuem como escopo todas as rotinas da aplicação

ƒ São alocadas em tempo de compilação e ocupam memória durante toda a execução do programa

ƒ Observações

• Caso se tente declarar uma variável global de mesmo nome g mais 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

(14)

Linguagem de Programação C

„

Variáveis globais – exemplo de uso

Linguagem de Programação C

„

Variá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 C

„

Modificador 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ção

ƒ Exemplo

Linguagem de Programação C

„

Modificador 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 C

„

Modificador de declaração static - Exemplo

Linguagem de Programação C

„

Exemplo: Função que requer o uso de um modificador static local

modificador static local

ƒ Gerador de números sequenciais que produz um novo valor baseado no anterior

int series(void){

t ti i t S i 100 static int numSerie = 100;

numSerie = numSerie + 10;

return(numSerie);

}

(17)

Linguagem de Programação C

„

Variá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 C

„

Exemplo - Continuação

(18)

Linguagem de Programação C

„

Variáveis tipo register

ƒ Na prática caracteres inteiros são colocados nos Na prática, caracteres inteiros são colocados nos registradores da CPU

ƒ O 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 C

„

Operador 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 positivo

ƒ 1 Æse o número for negativo

ƒ Unsigned ignora o bit de sinal

(21)

„

Operadores cast e sizeof

ƒ Operador 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 Tipos

ƒ Quando forem misturadas variáveis de diferentes tipos,

Linguagem de Programação C

o compilador C converterá os operandos para o tipo de p , 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 = FA01

Varia conforme memória da máquina

Toda variável ocupa uma área de memória e seu endereço é o primeiro byte por ela ocupado

ƒ Quando 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

Se

x = 10;

y = ++x;

Se

x = 10;

y = x++;

Observa se que ++x é diferente de x++!

/* x=x+1; y=x; */

então x = 11 e y = 11

/* y=x; x=x+1 */

então x = 11 e y = 10

(24)

#include<stdio h>

Linguagem de Programação C

„

Operadores – 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

Se

int 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 q

OU três é menor ou igual a quatro

„

Exercícios

ƒ Implementar 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 C

„

Constantes (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ção

P é d

Linguagem C Linguagem C

Pré-processador

Variáveis

Operadores

Referências

Documentos relacionados

Feito este breve sobrevôo sobre situações e contextos históricos em que emergiu uma nova relação de poder – a colonialidade – retorno à questão que deu início à minha

• As relações entre os novos contrastes (identificados pelo asterisco) e os efeitos do planejamento completo são as mesmas da segunda coluna da Tabela 4.5 com os sinais

até n-1 fatores, é aconselhável um número menor, para que as colunas não utilizadas façam o papel de variáveis inertes e possam ser empregadas para estimar o erro associado aos

§  Stack: Contém endereço de retorno das chamadas de função, argumentos para funções e variáveis locais. §  Heap: Contém dados dinâmicos e não

Ø Utilize sempre o aspirador com os filtros instalados para evitar reduçao do poder de aspiraçao do aparelho.. Ø Desligue o aparelho da corrente antes de mudar o saco ou

• O mecanismo de informar os valores a serem processados pela função chama-se passagem de parâmetros... • Mas, como os parâmetros de uma função são variáveis locais,

As questões apontadas nas narrativas suscitam algumas reflexões que compartilhamos, a partir das reflexões acerca da monocultura do saber (SANTOS, 2011) produzida

Universidade Estadual de Campinas – UNICAMP, Campinas – SP. Realizamos uma pesquisa com o propósito de responder à seguinte questão: há trechos do enredo