Programação de Soluções Computacionais: Algoritmos

Fazer download em pptx, pdf ou txt
Fazer download em pptx, pdf ou txt
Você está na página 1de 43

Programação de

Soluções
Computacionais

Algoritmos

Professor : Carlos Helano


UNIFACS
Objetivo

• Desenvolver a capacidade lógica para construção de


algoritmos na resolução de problemas.
• Apresentar uma visão geral do processo de
programação.
• Apresentar os recursos da linguagem de programação
(Linguagem C vs Linguagem Java).

–2–
Conteúdo
• Conceitos básicos da programação.
• Introdução a Linguagem (Conceitos básicos)
– Tipos de Dados;
– Operações;
– Comandos de Entrada e Saída de Dados;
• Estruturas de Controle
– Estruturas sequenciais;
– Estruturas condicionais;
– Estruturas de repetição;
• Estrutura de Dados Compostas
– Vetores, Matrizes

–3–
Ferramentas para Prática
• Utilizaremos as ferramentas abaixo para o
desenvolvimento das práticas
– Falcon C++ . Disponível :
https://sourceforge.net/projects/falconcpp/

– Repl.it. Disponível : https://repl.it/

– NetBeans. Disponível :
https://netbeans.apache.org/front/main/index.html

–4–
Conceitos Básicos
• Algoritmos
– A ideia de algoritmos surge pela necessidade do homem em
resolver problemas.
– A tarefa de Processamento de Dados da máquina consiste em
tomar certa informação, processá-la e obter o resultado
desejado.

Entrada Processamento Saída

–5–
Conceitos Básicos
• Como utilizar o algoritmo para solução de problemas

–6–
Conceitos Básicos
Situação Problema :
– Calcular a média de 3 Provas. P1, P2, P3

• 1 – Identificar as Entradas
P1, P2, P3
• 2 – Processamento
(P1+P2+P3)/3
• 3 – Saída
Média Final

–7–
Algoritmos estruturados
Estruturas de um Algoritmo (Estruturas de Controle)
– 1 – Sequencial
• (Os Comandos serão executados um após o outro)
– 2 – Condicional
• (Os Comandos só serão executados se uma determinada
condição for satisfeita)
– 3 – Repetitiva
• (Os Comandos serão executados enquanto uma
determinada condição for satisfeita)

–8–
Conceitos Básicos
• Definição : Algoritmos Estruturados

Conjunto de comandos que, obedecidas as


estruturas de controle, resultam numa sucessão
finita de ações. (Visam um objetivo bem definido)

–9–
Algoritmos estruturados

Regras para um bom Algoritmo

– 1 – Ações simples e bem definidas


– 2 – Seqüência ordenada de ações
– 3 – Seqüência finita de ações

– 10 –
Algoritmos estruturados

Fluxograma

– Permite a representação gráfica de um algoritmo


– Permite que pessoas diversas participem do
desenvolvimento. Ou melhor, pessoas de
diversas áreas do conhecimento podem
contribuir na construção do algoritmo.

– 11 –
Estruturas de Controle
• 1 – Seqüencial
• (Os Comandos executados um após o outro)

– 12 –
Estruturas de Controle
• 2 – Condicional
• (Os Comandos só serão executados se uma determinada
condição for satisfeita)

– 13 –
Estruturas de Controle
• 2 – Condicional
• (Os Comandos só serão executados se uma determinada
condição for satisfeita)

– 14 –
Estruturas de Controle
• 1 – Repetição
• (Os Comandos só serão executados se uma determinada
condição for satisfeita)

– 15 –
Exercício
Problema

01 - Faça um programa que receba o salário-


base de um funcionário, calcule e mostre o
salário a receber. Sabendo-se que esse
funcionário tem gratificação de 5% sobre o
salário-base e paga imposto de 7% também
sobre o salário-base.

– 16 –
Visão Geral - Características

Entendendo a origem da Linguagem Java


E
Identificando elementos em comum nas linguagens C e JAVA

– 17 –
Linguagem de Programação C - Histórico
• Criada entre 1969 e 1973 por Dennis Ritchie.

– A linguagem C foi uma evolução da Linguagem


B Criada por Ken Thompson.
– A linguagem foi desenvolvida para o Sistema
Operacional UNIX.
Ken Thompson e Dennis Ritchie
• Em 1978 foi publicada a primeira edição do livro “The C Programming
Language”, por Brian Kernighan e Dennis Ritchie.
• Com a popularização dos microcomputadores muitas implementações
foram feitas em C, sem um padrão definido.
• Em 1983, o ANSI (American National Standards Institute) estabeleceu um
comitê para padronização da Linguagem C.
– 18 –
Linguagem de Programação C - Histórico

• Durante a década de 1980, Bjarne Stroustrup começou a trabalhar em um


projeto onde se adicionavam construções de linguagens de programação
orientada por objetos à linguagem C. Surgia a chamada Linguagem C++.

• Linguagens Influenciadas pela linguagem C :

– 19 –
Visão Geral – Linguagem C
• A Linguagem C é considerada uma linguagem de Nível Médio.
– As Linguagens de Baixo Nível compreendem características da Arquitetura do
Computador. (Linguagens de Primeira e segunda Geração).
– As Linguagens de Alto Nível são linguagens com um nível de abstração
relativamente alto. Elas estão mais próximas da linguagem humana.
• Pascal, COBOL, FORTRAN
Nível Alto • Basic, Ada
• C, C++
Nível Médio • FORTH

Nível Baixo • Assembly

• Permite acesso de baixo-nível, através de inclusões de código Assembly no


meio do programa C.
• Permite manipulação de bits, bytes e endereços.

– 20 –
Visão Geral – Classificação das Linguagens

Surge o paradigma do desenvolvimento de programas


POO orientado a objetos, e a forma de programar busca
diminuir a distância das máquinas aos seres humanos

Conforme o aumento da complexidade os programas


Programação passam a ficar cada vez maiores e necessitam ser
Modular agrupados em módulos de funcionalidade

Uso de algoritmos que utilizam estruturas de controle que


Programação permitem o desenvolvimento de uma lógica mais
Estruturada elaborada

O programador tem uma certa independência do


Programação Linear hardware, mas ainda é muito limitado.

Programação Baixo A forma de programar está muito associada as


características do hardware
Nível

– 21 –
Visão Geral - Características
• Características da Linguagem C
– Estruturas em blocos - Funções -
Alta Portabilidade
– Poucas restrições - Reaproveitamento de código.

• C é uma Linguagem Compilada. Ou seja, um compilador lê o


programa inteiro e converte-o em um código-objeto (Código
binário ou Código de Máquina). (Em Java temos outro processo
de compilação)

• C é “Case Sensitive” - Distinção na utilização de maiúsculas e


minúsculas. (Característica comum na Linguagem Java)
– As variáveis SOMA, Soma e soma são diferentes.

– 22 –
Visão Geral - Características
• Processo de compilação na Linguagem Java

JVM (Java Virtual Machine) -


funciona como uma camada de
abstração entre o código Java e
o sistema operacional subjacente

– 23 –
Visão Geral - Características
• Todo programa em C é formado por uma ou mais funções. A função
main() é a única que precisa necessariamente estar presente no código.
#include <stdio.h>

int a, b, c;

main()
{
scanf("%d",&a);
scanf("%d",&b);
c = a + b;
printf(" \n a + b = %d", c);
}
– 24 –
Visão Geral - Características
• Todo programa em C é formado por uma ou mais funções. A função
main() é a única que precisa necessariamente estar presente no código.
#include <stdio.h>

int a, b, c;
* Os programas em C são
formados basicamente por
funções. main()
– Facilitam a modularização
{
e passagem de parâmetros
entre os módulos. scanf("%d",&a);
scanf("%d",&b);
c = a + b;
printf(" \n a + b = %d", c);
}
– 25 –
Visão Geral - Características
• Todo programa em C é formado por uma ou mais funções. A função
main() é a única que precisa necessariamente estar presente no código.
#include <stdio.h>

int a, b, c;

* As chaves ({}) são utilizadas main()


para agrupar os blocos de
comando.
{
scanf("%d",&a);
scanf("%d",&b);
c = a + b;
printf(" \n a + b = %d", c);
}
– 26 –
Visão Geral - Características
• Todo programa em C é formado por uma ou mais funções. A função
main() é a única que precisa necessariamente estar presente no código.
#include <stdio.h>

* O Ponto e Vírgula ( ; ) utilizado int a, b, c;


para finalizar um comando.
main()
{
scanf("%d",&a);
scanf("%d",&b);
c = a + b;
printf(" \n a + b = %d", c);
}
– 27 –
Visão Geral - Características
• Todo programa em C é formado por uma ou mais funções. A função
main() é a única que precisa necessariamente estar presente no código.
#include <stdio.h>
* Biblioteca Básica (E/S)
#include <stdio.h> int a, b, c;
(std = Standard; io = input/output)

main()
{
scanf("%d",&a);
scanf("%d",&b);
c = a + b;
printf(" \n a + b = %d", c);
}
– 28 –
Visão Geral – Linguagem C
• Comparando diferentes Níveis de Linguagens

Program Sequencial; #include <stdio.h>

Uses crt; int a, b, c;

Var a, b, c : integer; main()


{
begin scanf("%d",&a);
readln(a); scanf("%d",&b);
readln(b); c = a + b;
c := a + b; printf(" \n a + b = %d", c);
writeln(' a + b = ', c); }
end.

– 29 –
Visão Geral – Linguagem C
• Estrutura básica de um programa em C #include <stdio.h>
#include <stdlib.h>
Diretivas de compilação para inclusão das bibliotecas
/* Meu primeiro código em C */
Comentário int a, b, c;

Declaração de variáveis globais int f1();


void f2();
Declaração das funções int main()
{
Declaração de variáveis locais int d;
printf(“ Hello ! \n”);
Pausa a execução em tela. Utilizado com a system("pause");
return(0);
biblioteca stdlib.h
}
int f1()
A função f1 retorna um valor inteiro {
bloco de comandos;
}
A função f1 retorna um vazio void f2()
{
bloco de comandos;
}
– 30 –
Visão Geral – Linguagem Java
• Comparando diferentes linguagens

import java.util.Scanner;

public class Principal {

public static void main(String[] args) {

int a, b, c;

Scanner entrada = new Scanner(System.in);

a = entrada.nextInt();
b = entrada.nextInt();
c = a + b;
System.out.println(" a + b = " + c);
}

– 31 –
Estrutura de Dados – Tipo de Dados
• Podemos dizer que um tipo de dado refere-se a um conjunto de valores e a um
determinado conjunto de operações sobre estes valores.
• Tipos de Dados Básicos
C
char Em C, “Verdadeiro” é qualquer valor diferente de zero.
int 1 = Verdadeiro ; 0 = Falso
float / double
int O tipo void declara explicitamente uma função que não
void retorna valor algum.

• Modificadores de Tipos Básicos


– Long ( long int ; long double ) - Short ( short int )

– Signed - Permite o uso de sinal - Unsigned – Não permite o uso de


sinal
( signed int ) ( unsigned int )
– 32 –
Declarações -Variáveis e Constantes
• Declaração de Variáveis - <tipo> <nome>;
int i, j, k; int i = 100;
unsigned int positivos; char letra = '2';
double valor; char nome[80] = "jose";
char letra; float total = 102.30;
• Declaração de Constantes – const <tipo> <nome>;
const int i = 100;
const char letra = '2';
• Comando de atribuição – variável = expressão;
i = 100; Atribuição Múltipla i = k = 100;
letra = '2';
• Comandos de Entrada e Saída
scanf("%d",&a); O operador “&” significa “endereço de”
scanf("%d",&b); “%d” – formato para leitura e escrita de um inteiro
c = a + b; \n – quebra de linha
printf(" \n a + b = %d", c);

– 33 –
Comandos de Entrada e Saída
• Alguns
especificadores de
formato da função
“printf()”

– 34 –
Comandos de Entrada e Saída
• Alguns especificadores de formato da função “scanf()”

– 35 –
Operadores
• Comparação entre os Operadores Básicos.
Operadores comuns nas
C Operação
+ Adição Linguagem C e Java
- Subtração
* Multiplicação Operadores Aritméticos
/ Divisão
% Resto

< Menor que


<= Menor que ou Igual
> Maior que
>= Maior que ou Igual Operadores Relacionais
== Igual
!= Diferente

! Negação
&& Conjunção
|| Disjunção Operadores Lógicos

– 36 –
Estruturas de Controle
• Sequencial – (C semelhante a Java)
instrução1;
instrução2;
#include <stdio.h>
instrução3;
...; int a, b, c;
...;
main()
{
scanf("%d",&a);
scanf("%d",&b);
c = a + b;
printf(" \n a + b = %d", c);
}

– 37 –
Estruturas de Controle
• Condicional - (C semelhante a Java)
if - else if (condição)
if (condição)
#include <stdio.h> {
instrução1; int a, b, c; instrução1;
instrução2;
main()
}
{
if (condição) scanf("%d",&a);
scanf("%d",&b); if (condição)
instrução1;
if (a < b) {
else { instrução1;
printf(" \n a é menor ”); instrução2;
instrução2; }
printf(" \n b é maior ”);
else
}
{
else instrução3;
{ instrução4;
printf(" \n b é menor ”); }
printf(" \n a é maior ”);
}
}
– 38 –
Estruturas de Controle
• Repetição - (C semelhante a Java) while
#include <stdio.h>
int k;
while (condição)
{
main()
instrução1; {
instrução2; k = 0;
} while (k <= 100)
{
printf(" \n %d ”, k);
k = k + 2;
}
for }
#include <stdio.h>
main()
for (inicialização; condição; incremento) {
{ for (int k = 0; k <= 100; k=k+2)
instrução1;
instrução2;
{
} printf(" \n k = %d", k);
}
}
– 39 –
Exercício
Problemas

02 - Elabore um algoritmo que verifique se um


dado número inteiro positivo é par ou ímpar.

03 – Faça um algoritmo que leia 2 valores


numéricos e um símbolo. Caso o símbolo seja
um dos relacionados abaixo efetue a operação
correspondente com os valores.
“+” “-” “*” “/”

– 40 –
Problemas – Estruturas Condicionais
04 – Faça um algoritmo que calcule a média ponderada de um aluno, a partir de
suas 3 notas obtidas no curso. Sabendo-se que a primeira avaliação tem peso 2, a
segunda tem peso 4, a terceira tem peso 4.
Mostre ao final a mensagem:
“A MEDIA FINAL DE .........FOI .......”. Informar também se o aluno foi
aprovado, Mostrando a mensagem “APROVADO”, caso a nota final seja maior ou
igual a 7,0.

05 – Modifique a questão anterior para informar :


APROVADO Caso a nota final seja entre 7 e 10
RECUPERAÇÃO Caso a nota final seja entre 5 e 7
REPROVADO Caso a nota final seja entre 0 e 5.

06 – Fazer um algoritmo que leia 3 valores inteiros e escreva o menor deles.

– 41 –
Problemas – Estruturas de Repetição
07 – Faça um programa para mostrar os números de 1 a 100

08 – Faça um programa para ler 10 números e apresentar o


resultado da soma destes números

09 – Faça um programa que imprima os números inteiros entre


um dado intervalo A e B.

– 42 –
Problemas – Estruturas de Repetição
10 – A partir da leitura de um número indeterminado de
valores não nulos, determinar e exibir quantos desses
valores são positivos e quantos são negativos. Determinar
também a soma dos positivos e a soma dos negativos. O
último valor a ser lido é zero (0 é o flag).

11 – A partir da leitura de um número indeterminado de notas,


calcular e exibir a média aritmética dessas notas. O flag
para indicar o fim das notas é –1.

12 – O mesmo exercício anterior fornecendo adicionalmente a


maior e a menor nota lida.

– 43 –

Você também pode gostar