Algoritmos e Programação de
Computadores II
Representação de algoritmos
Representação de algoritmos
 Linguagem natural: algoritmos expressos
diretamente em linguagem natural, como nas
receitas
 Fluxogramas: representação gráfica
 Pseudo-linguagem: emprega linguagem
intermediária entre linguagem natural e
linguagem de programação
Linguagem natural
 Repetir 10 vezes cada um dos quatro
exercícios abaixo:
 Levantar e abaixar o braço direito
 Levantar e abaixar o braço esquerdo
 Levantar e abaixar a perna direita
 Levantar e abaixar a perna esquerda
Fluxogramas
 Representação por meio de símbolos
geométricos
 Cada tipo de operação é representado por
um símbolo diferente
 Tem a vantagem de permitir o
acompanhamento visual do fluxo do
algoritmo
Fluxogramas – alguns símbolos
Início e fim de algoritmo
Processo: atribuições e cálculos de valores
Decisão
Fluxogramas – alguns símbolos
Impressão de resultado
Conector de página
Ligação de símbolos
Conector fora da página
Um dia de sol
Pseudo-linguagem
 Esse método procura misturar as facilidades
da linguagem natural com a precisão das
linguagens de programação
 A representação da solução em pseudo
código possibilita ao programador a
abstração dos detalhes da sintaxe da
linguagem escolhida
Pseudo-linguagem
 Não existe um padrão para esta forma de descrição
 Exemplo: cálculo da área de um objeto
Início
Declara
comprimento, largura, área: inteiro
Leia comprimento;
Leia largura;
área  comprimento * largura
Imprima (“Área igual a”, área)
Fim
Exercícios
 Faça um algoritmo, utilizando fluxograma:
 que leia um número e exiba seu sucessor
 que solicite as duas notas do aluno, calcule a
média aritmética simples desse números e
informe se o aluno está aprovado ou reprovado.
Obs: o aluno está aprovado se sua média é maior
ou igual a 6.
A Linguagem C
Introdução
 É uma linguagem de médio nível
 Permite a manipulação de bits, bytes e endereços
 O código C é portável
 Pode ser transportado para outro computador com
algumas adaptações
 Permite diversas conversões de tipo
 Caracteres e inteiros podem ser misturados livremente
Introdução
 C é uma linguagem estruturada
 Faz a divisão do código, através do uso de sub-
rotinas
 Variáveis locais: os elementos declarados dentro delas,
não causam nenhum efeito inesperado nas outras
partes do programa
 Variáveis globais: são reconhecidas em todo o
programa. É preciso utilizá-las cuidadosamente
 A linguagem também pode ser dividida pelo uso de
blocos de comandos, delimitados por “{” e “}”
Introdução
 Compiladores x Interpretadores
 O termo refere-se a como os programas são
executados
 Interpretador
 Lê o código-fonte, uma linha por vez
 Executa a instrução dessa linha lida
 Compilador
 Lê o programa inteiro
 Gera o código-objeto (código de máquina)
Introdução
 Palavras-chave
 32 (27 da versão original + 5 acrescentadas pelo
comitê ANSI)
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
Introdução
 Todas as palavras-chave são escritas em
letra minúscula.
 Os programa em C são compostos por uma
ou mais funções
 main() é a única obrigatória
Introdução
 Formato de um programa C
Declarações globais
Tipo_devolvido main(lista de parâmetros)
{
instruções;
}
Tipo_devolvido nome(lista de parâmetros)
{
instruções;
}
....
Introdução
 Bibliotecas
 Contém funções de uso específico
 A definição original da linguagem não oferece
nenhuma função para executar, por exemplo,
operações de e/s.
 Os compiladores C, normalmente, possuem uma
biblioteca padrão
 A biblioteca padrão, mais utilizada é <stdio.h>
Introdução
 Linkeditor
 Combina o código-fonte com o código-objeto já
existente na biblioteca padrão
Introdução
 Um programa C utiliza quatro regiões na
memória:
 Código do programa
 Variáveis globais
 Heap
 Região de memória livre que é usada em, por exemplo,
listas encadeadas, árvores, etc.
 Pilha
 Possui o endereço de retorno das chamadas de função,
argumentos para as funções e variáveis locais
 Guarda o estado atual da CPU
Tipos de Dados
Introdução
 Os computadores produzem resultados
manipulando dados
 Um fator importante é a sua similaridade com
o mundo real
 É importante que uma linguagem suporte uma
variedade de tipos de dados
Constantes e variáveis
 Constantes
 Possuem seus valores inalterados ao longo da
execução do programa
 Variáveis
 Seus valores são alterados durante a execução
do programa.
 “É um espaço de memória que pode conter, a
cada tempo, valores diferentes”
Constantes e variáveis
 Os nomes das constantes e variáveis
possuem algumas regras básicas:
 Não podem começar por números ou símbolos
especiais
 Devem ser compostos por letras, números,
sublinhado e traço
 Não aceitam acentuação
Declaração
 Reserva o espaço de memória necessário
para armazenar um tipo de dado específico
 Em C todas as variáveis devem ser
declaradas
Tipos básicos de dados
 São tipos de dados não definidos em termos
de outros do mesmo nome, isto é são
primitivos.
Tipos básicos de dados
 O tipo de dado informa a quantidade de
memória, em bytes, que a variável irá ocupar
e a forma como seu conteúdo será
armazenado
 Principais tipos
 Caractere
 Lógico
 Numérico
Tipo Caractere
 Cada símbolo da nossa linguagem tem um
grupo correspondente de bits que o identifica
= codificação
 Exemplos:
 BCD - Binary Code Decimal
 grupo de 6 bits/caractere --> 26
=64 símbolos
Tipo Caractere
 Exemplos (cont.)
 EBCDIC - Extended Binary Coded Decimal
Interchange Code
 exclusivo da IBM
 grupo de 8 bits/caractere --> 28
=256 símbolos
Tipo Caractere
 Exemplos (cont.)
 ASCII - American Standard Code for
Information Interchange
 usado pelos demais fabricantes
 incialmente, 7 bits/caractere + 1 de paridade
 depois, 8 bits/caractere
 grupo de 8 bits/caractere --> 28
=256 símbolos
Tipo Lógico
 Dois valores possíveis: V e F ou 0 e 1
 Várias formas de relacionamento entre as
partes: os operadores
 AND
 OR
 NOT
Tipo Numérico
 Muitas das primeiras linguagens de
programação só tinham tipos primitivos
numéricos:
 Inteiros
 fracionários
Tipos no C
Tipo Bit Bytes Escala
char 8 1 -128 a 127
int 16 2 -32768 a 32767
float 32 4 3.4E-38 a 3.4E+38
double 64 8 1.7E-308 a
1.7E+308
void 0 0 sem valor
Tipos no C
 Observações:
 int
 Tem sempre o tamanho da palavra da máquina
 Ex: em computadores de 16 bits, o int ocupa 16 bits
Tipos no C
 Modificadores de tipo:
 Long ou long int (4 bytes)
 Unsigned char (0 a 255)
 Unsigned int (0 a 65535)
 Unsigned long
 Short (2 bytes no IBM-PC) ou ½ do int
Tipos no C
 Modificadores de tipo:
 Unsigned
 Interpretação diferente para o tipo associado
 Desconsidera o bit de sinal e adota todo o código para a
representação do número
Meu primeiro programa
1. /*Primeiro Programa */
2. #include <stdio.h>
3. void main() /*Um Primeiro
Programa*/
4. {
5. printf ("Ola Mundo! n");
6. system (“pause”);
7. }
Meu segundo programa
1. /* Converte dias em anos */
2. #include <stdio.h>
3. void main ()
4. {
5. int Dias; /*Declaracao de Variaveis */
6. float Anos;
7. /* Entrada de Dados */
8. printf ("Entre com o número de dias ");
9. scanf("%d",&Dias);
10. /*Conversao Dias-> Anos*/
11. Anos=Dias/365.25;
12. printf ("nn%d dias equivalem a %f anos.n“,
Dias, Anos);
13. }
Exercício
1. /* Descreva o que este programa faz */
2. #include <stdio.h>
3. void main()
4. {
5. int x;
6. scanf("%d",&x);
7. printf("%d",x);
8. }
1. /* Aprendendo a utilizar tipos de dados */
2. #include <stdio.h>
3. void main()
4. {
5. /*Declaracao de variaveis */
6. int a;
7. float b;
8. double d;
9. long int e;
10. /*entrada de dados */
11. printf("Insira um numero inteiro: ");
12. scanf("%d", &a); /* le um número inteiro */
13. printf("Insira um numero inteiro longo: ");
14. scanf("%ld", &e); /* le um inteiro longo */
15. printf("Insira um numero fracionario: ");
16. scanf("%f", &b); /* le um número decimal */
17. printf("Insira um numero fracionario grande:");
18. scanf("%lf", &d); /*le um número fracionário grande */
19. /*imprime resultados */
20. printf("nnNumeros digitados: nInteiro:%d",
a);
21. printf("nInteiro longo: %ld", e)
22. printf("nFracionario: %f", b);
23. printf("nFracionario longo: %lf", d);
24. }
Exercício
 Faça um programa que solicite a idade de 3
pessoas e calcule a média aritmética dessas
idades

introdução a algoritmos - logica e programação representação

  • 1.
    Algoritmos e Programaçãode Computadores II Representação de algoritmos
  • 2.
    Representação de algoritmos Linguagem natural: algoritmos expressos diretamente em linguagem natural, como nas receitas  Fluxogramas: representação gráfica  Pseudo-linguagem: emprega linguagem intermediária entre linguagem natural e linguagem de programação
  • 3.
    Linguagem natural  Repetir10 vezes cada um dos quatro exercícios abaixo:  Levantar e abaixar o braço direito  Levantar e abaixar o braço esquerdo  Levantar e abaixar a perna direita  Levantar e abaixar a perna esquerda
  • 4.
    Fluxogramas  Representação pormeio de símbolos geométricos  Cada tipo de operação é representado por um símbolo diferente  Tem a vantagem de permitir o acompanhamento visual do fluxo do algoritmo
  • 5.
    Fluxogramas – algunssímbolos Início e fim de algoritmo Processo: atribuições e cálculos de valores Decisão
  • 6.
    Fluxogramas – algunssímbolos Impressão de resultado Conector de página Ligação de símbolos Conector fora da página
  • 7.
  • 8.
    Pseudo-linguagem  Esse métodoprocura misturar as facilidades da linguagem natural com a precisão das linguagens de programação  A representação da solução em pseudo código possibilita ao programador a abstração dos detalhes da sintaxe da linguagem escolhida
  • 9.
    Pseudo-linguagem  Não existeum padrão para esta forma de descrição  Exemplo: cálculo da área de um objeto Início Declara comprimento, largura, área: inteiro Leia comprimento; Leia largura; área  comprimento * largura Imprima (“Área igual a”, área) Fim
  • 10.
    Exercícios  Faça umalgoritmo, utilizando fluxograma:  que leia um número e exiba seu sucessor  que solicite as duas notas do aluno, calcule a média aritmética simples desse números e informe se o aluno está aprovado ou reprovado. Obs: o aluno está aprovado se sua média é maior ou igual a 6.
  • 11.
  • 12.
    Introdução  É umalinguagem de médio nível  Permite a manipulação de bits, bytes e endereços  O código C é portável  Pode ser transportado para outro computador com algumas adaptações  Permite diversas conversões de tipo  Caracteres e inteiros podem ser misturados livremente
  • 13.
    Introdução  C éuma linguagem estruturada  Faz a divisão do código, através do uso de sub- rotinas  Variáveis locais: os elementos declarados dentro delas, não causam nenhum efeito inesperado nas outras partes do programa  Variáveis globais: são reconhecidas em todo o programa. É preciso utilizá-las cuidadosamente  A linguagem também pode ser dividida pelo uso de blocos de comandos, delimitados por “{” e “}”
  • 14.
    Introdução  Compiladores xInterpretadores  O termo refere-se a como os programas são executados  Interpretador  Lê o código-fonte, uma linha por vez  Executa a instrução dessa linha lida  Compilador  Lê o programa inteiro  Gera o código-objeto (código de máquina)
  • 15.
    Introdução  Palavras-chave  32(27 da versão original + 5 acrescentadas pelo comitê ANSI) auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while
  • 16.
    Introdução  Todas aspalavras-chave são escritas em letra minúscula.  Os programa em C são compostos por uma ou mais funções  main() é a única obrigatória
  • 17.
    Introdução  Formato deum programa C Declarações globais Tipo_devolvido main(lista de parâmetros) { instruções; } Tipo_devolvido nome(lista de parâmetros) { instruções; } ....
  • 18.
    Introdução  Bibliotecas  Contémfunções de uso específico  A definição original da linguagem não oferece nenhuma função para executar, por exemplo, operações de e/s.  Os compiladores C, normalmente, possuem uma biblioteca padrão  A biblioteca padrão, mais utilizada é <stdio.h>
  • 19.
    Introdução  Linkeditor  Combinao código-fonte com o código-objeto já existente na biblioteca padrão
  • 20.
    Introdução  Um programaC utiliza quatro regiões na memória:  Código do programa  Variáveis globais  Heap  Região de memória livre que é usada em, por exemplo, listas encadeadas, árvores, etc.  Pilha  Possui o endereço de retorno das chamadas de função, argumentos para as funções e variáveis locais  Guarda o estado atual da CPU
  • 21.
  • 22.
    Introdução  Os computadoresproduzem resultados manipulando dados  Um fator importante é a sua similaridade com o mundo real  É importante que uma linguagem suporte uma variedade de tipos de dados
  • 23.
    Constantes e variáveis Constantes  Possuem seus valores inalterados ao longo da execução do programa  Variáveis  Seus valores são alterados durante a execução do programa.  “É um espaço de memória que pode conter, a cada tempo, valores diferentes”
  • 24.
    Constantes e variáveis Os nomes das constantes e variáveis possuem algumas regras básicas:  Não podem começar por números ou símbolos especiais  Devem ser compostos por letras, números, sublinhado e traço  Não aceitam acentuação
  • 25.
    Declaração  Reserva oespaço de memória necessário para armazenar um tipo de dado específico  Em C todas as variáveis devem ser declaradas
  • 26.
    Tipos básicos dedados  São tipos de dados não definidos em termos de outros do mesmo nome, isto é são primitivos.
  • 27.
    Tipos básicos dedados  O tipo de dado informa a quantidade de memória, em bytes, que a variável irá ocupar e a forma como seu conteúdo será armazenado  Principais tipos  Caractere  Lógico  Numérico
  • 28.
    Tipo Caractere  Cadasímbolo da nossa linguagem tem um grupo correspondente de bits que o identifica = codificação  Exemplos:  BCD - Binary Code Decimal  grupo de 6 bits/caractere --> 26 =64 símbolos
  • 29.
    Tipo Caractere  Exemplos(cont.)  EBCDIC - Extended Binary Coded Decimal Interchange Code  exclusivo da IBM  grupo de 8 bits/caractere --> 28 =256 símbolos
  • 30.
    Tipo Caractere  Exemplos(cont.)  ASCII - American Standard Code for Information Interchange  usado pelos demais fabricantes  incialmente, 7 bits/caractere + 1 de paridade  depois, 8 bits/caractere  grupo de 8 bits/caractere --> 28 =256 símbolos
  • 31.
    Tipo Lógico  Doisvalores possíveis: V e F ou 0 e 1  Várias formas de relacionamento entre as partes: os operadores  AND  OR  NOT
  • 32.
    Tipo Numérico  Muitasdas primeiras linguagens de programação só tinham tipos primitivos numéricos:  Inteiros  fracionários
  • 33.
    Tipos no C TipoBit Bytes Escala char 8 1 -128 a 127 int 16 2 -32768 a 32767 float 32 4 3.4E-38 a 3.4E+38 double 64 8 1.7E-308 a 1.7E+308 void 0 0 sem valor
  • 34.
    Tipos no C Observações:  int  Tem sempre o tamanho da palavra da máquina  Ex: em computadores de 16 bits, o int ocupa 16 bits
  • 35.
    Tipos no C Modificadores de tipo:  Long ou long int (4 bytes)  Unsigned char (0 a 255)  Unsigned int (0 a 65535)  Unsigned long  Short (2 bytes no IBM-PC) ou ½ do int
  • 36.
    Tipos no C Modificadores de tipo:  Unsigned  Interpretação diferente para o tipo associado  Desconsidera o bit de sinal e adota todo o código para a representação do número
  • 37.
    Meu primeiro programa 1./*Primeiro Programa */ 2. #include <stdio.h> 3. void main() /*Um Primeiro Programa*/ 4. { 5. printf ("Ola Mundo! n"); 6. system (“pause”); 7. }
  • 38.
    Meu segundo programa 1./* Converte dias em anos */ 2. #include <stdio.h> 3. void main () 4. { 5. int Dias; /*Declaracao de Variaveis */ 6. float Anos; 7. /* Entrada de Dados */ 8. printf ("Entre com o número de dias "); 9. scanf("%d",&Dias); 10. /*Conversao Dias-> Anos*/ 11. Anos=Dias/365.25; 12. printf ("nn%d dias equivalem a %f anos.n“, Dias, Anos); 13. }
  • 39.
    Exercício 1. /* Descrevao que este programa faz */ 2. #include <stdio.h> 3. void main() 4. { 5. int x; 6. scanf("%d",&x); 7. printf("%d",x); 8. }
  • 40.
    1. /* Aprendendoa utilizar tipos de dados */ 2. #include <stdio.h> 3. void main() 4. { 5. /*Declaracao de variaveis */ 6. int a; 7. float b; 8. double d; 9. long int e; 10. /*entrada de dados */ 11. printf("Insira um numero inteiro: "); 12. scanf("%d", &a); /* le um número inteiro */ 13. printf("Insira um numero inteiro longo: "); 14. scanf("%ld", &e); /* le um inteiro longo */
  • 41.
    15. printf("Insira umnumero fracionario: "); 16. scanf("%f", &b); /* le um número decimal */ 17. printf("Insira um numero fracionario grande:"); 18. scanf("%lf", &d); /*le um número fracionário grande */ 19. /*imprime resultados */ 20. printf("nnNumeros digitados: nInteiro:%d", a); 21. printf("nInteiro longo: %ld", e) 22. printf("nFracionario: %f", b); 23. printf("nFracionario longo: %lf", d); 24. }
  • 42.
    Exercício  Faça umprograma que solicite a idade de 3 pessoas e calcule a média aritmética dessas idades